ansible中常用的模块
实验前的操作
ansible主机lee用户中做好加密(ssh-keygen),将`钥匙给受控主机的remote_user
#!/bin/bash
for host in {1..3}
do
ssh-copy-id -i /home/lee/.ssh/id_rsa.pub lee@192.168.3.$host
done
注意:如果脚本执行不成功,很有可能是因为受控主机里面````的.ssh文件的影响,可以提前删掉受控主机的.ssh文件(因为ssh命````令远程连接时yes后建立认证文件,后自动生成~/.ssh````/kown_hosts记录文件,而每一次的.ssh文件内容是不同的)
.sudo node{1..3} westos ALL=(ALL) NOPASSWD: ALL
在受控主机(ansible清单里的所有主机)中提前做好sudo,以超级用户的身份在主机中进行操作
#! /bin/bash
for host in {1..2}
do
ssh root@192.168.3.$host 'sed -e “100a lee `hostname`=(ALL) NOPASSWD: ALL" /etc/sudoers'
done
1.ansible实现管理的方式
Ad-Hoc ##利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook ##ansible脚本,主要用于大型项目场景,需要前期的规划
2.Ad-Hoc执行方式中如何获得帮助
ansible-doc ##显示模块帮助的指令
#格式
ansible-doc [参数] [模块...]
#常用参数
-l ##列出可用模块
-s ##显示指定模块的playbook片段
3.ansible命令运行方式及常用参数
#格式:
ansible 清单 -m 模块 -a 模块参数
#常用参数
#--version ##显示版本
#-m module ##指定模块,默认为command模块
#-v ##详细过程 -vv -vvv更详细过程
#--list ##显示主机列表,也可以用--list-hosts
#-k ##提示输入ssh连接密码,默认key认证
#-C ##预执行检测
#-T ##执行命令的超时时间,默认10s
#-u ##指定远程执行的用户
#-b ##执行sudo切换身份操作
#-become-user=USERNAME ##指定sudo的用户
#-K ##提示输入sudo密码
4.ansible的基本颜色代表值
绿色 ##执行成功但为对远程主机做任何改变
黄色 ##执行成功并对远程主机做改变
红色 ##执行失败
5.ansible中的常用模块
1.command
查看相关模块信息 ansible-doc -s command
#功能: 在远程主机执行命令,此模块为默认模块
#常用参数
chdir ##执行命令前先进入到指定目录
cmd ##运行命令指定
creates ##如果文件存在将不运行
removes ##如果文件存在将运行
free_form ##在远程主机中执行的命令,此参数不需要加
#实例
ansible all -m command -a "useradd lee" -u root -k
ansible all -m command -a "userdel -r lee" -u root -k
ansible all -m command -a "chdir=/etc cat passwd " -u root -k
ansible all -m command -a "chdir=/etc creates=/etc/passwd cat passwd " -u root -k
ansible all -m command -a "chdir=/etc removes=/etc/passwd cat passwd " -u root -k
##注意##
#Linux中的很多通配符在command模块中不支持
2.shell
#功能:
#和command功能类似
#常用参数
chdir ##执行命令前先进入到指定目录
cmd ##运行命令指定
creates ##如果文件存在将不运行
removes ##如果文件存在在将运行
free_form ##在远程主机中执行的命令,此参数不需要加
executable ##指定执行环境,默认为sh
#实例
ansible all -m shell -a "executable=sh ps ax | grep $$ " -k