ansible命令是Ansible的核心命令之一,使用ansible命令可以执行Ad-hoc(临时的)任务,相当于定义并运行一个单独的playbook任务。
ansible命令的语法
ansible [options]
ansible命令的描述
ansible命令相当于定义并运行一个单独的playbook任务。
ansible命令的常用参数
连接被管理节点的用户
- -u , –user :使用连接被管理节点。
- -k, –ask-pass:连接被管理节点时询问连接密码。
连接被管理节点之后执行操作的用户
- -b, –become:连接被管理节点之后使用其他用户执行操作。
- –become-method :使用其他用户执行操作时提升权限的方法,默认是sudo。可选[sudo|su|pbrun|pfexec|doas|dzdo|ksu|runas|pmrun|enable|machinectl]。
- –become-user :使用其他用户执行操作的这个用户,默认root。
- -K, –ask-become-pass:使用其他用户执行操作时询问用户的密码。
时间相关参数
- -B , –background :异步运行,如果秒没有运行结束则失败,默认无。
- -T , –timeout :连接被管理节点的超时时间,默认10秒。
其他常用参数
- –list-hosts:输出匹配的管理节点,不执行其他操作。
- –private-key, –key-file
- –syntax-check:对playbook进行语法检查,不执行其他操作。
- –version:显示软件版本。
- -i, –inventory, –inventory-file:指定清单文件。
- -m , –module-name :指定模块名,默认command模块。
- -a , –args :模块的参数。
- -f , –forks :并行运行的进程数,默认为5。
- -h, –help:查看帮助信息。
- -v, –verbose:输出调试信息,-vvv输出更多信息,-vvvv输出连接调试信息。
ansible命令使用示例
1)、使用“–list-hosts”查看被管理节点列表
[admin@ityoudao ~]$ echo -e "[kafka-servers]\n192.168.99.201\n192.168.100.201\n192.168.101.201">/etc/ansible/hosts
[admin@ityoudao ~]$ ansible kafka-servers --list-hosts
hosts (3):
192.168.99.201
192.168.100.201
192.168.101.201
2)、使用“-u”指定的用户连接被管理节点,使用“–ask-pass”提示输入用户密码。如果配置admin用户到远程节点wedot用户的SSH信任关系,则无需使用“–ask-pass”提示输入用户密码,否则报”Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n”错误。
[admin@ityoudao ~]$ ansible kafka-servers -m shell -a "hostname && whoami" -u wedot --ask-pass
SSH password:
192.168.99.201 | CHANGED | rc=0 >>
elk-kafka01
wedot
192.168.101.201 | CHANGED | rc=0 >>
elk-kafka03
wedot
192.168.100.201 | CHANGED | rc=0 >>
elk-kafka02
wedot
3)、错误的become用法。没有使用“–become”参数打开become开关,Ansible不会使用其他用户执行,甚至连become-user的密码都不会校验。
[admin@ityoudao ~]$ ansible kafka-servers -m shell -a "hostname && whoami" -u wedot --become-user root --ask-become-pass
BECOME password:
192.168.101.201 | CHANGED | rc=0 >>
elk-kafka03
wedot
192.168.99.201 | CHANGED | rc=0 >>
elk-kafka01
wedot
192.168.100.201 | CHANGED | rc=0 >>
elk-kafka02
wedot
4)、正确的become用法。使用“–become”参数打开become开关,还可以使用“–become-user”参数指定become的用户(默认root),使用“–ask-become-pass”提示输入的密码,默认是sudo,这里需要输入登录被管理节点的用户wedot的密码。
[admin@ityoudao ~]$ ansible kafka-servers -m shell -a "hostname && whoami" -u wedot --become-user root --ask-become-pass --become
BECOME password:
192.168.100.201 | CHANGED | rc=0 >>
elk-kafka02
root
192.168.99.201 | CHANGED | rc=0 >>
elk-kafka01
root
192.168.101.201 | CHANGED | rc=0 >>
elk-kafka03
root