一个专注于IT互联网运维的技术博客

ansible命令使用总结

2018.12.30

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
发表评论