ansible 运行命令
ansible运行命令,需要以下步骤:
- 通信
- 主机管理
- 运行命令
1. ansible通信
ansible只需要安装在一台主控机上,其他远程的主机的通信主要通过SSH,当然,你也可以通过其他的通信方式。
只有与远程主机通信后,才可以与远程host进行交互和其他操作。
使用SSH需要你输入密码,在批量操作时很不方便,所以我们可以使用免密登录
1.1 免密登录:
使用公钥认证来进行免密登录
用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:
$ ssh-keygen
运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
这时再输入下面的命令,将公钥传送到远程主机host上面:
$ ssh-copy-id user@host
好了,从此你再登录,就不需要输入密码了。
参考文档:
SSH用法及命令:https://blog.csdn.net/pipisorry/article/details/52269785
2. 主机管理
ansible需要在Inventory文件中配置管理的主机,否则ansible并不知道需要对哪些主机进行操作。
该文件默认使用/etc/ansible/hosts文件,也可以自己自定义
Inventory文件简单示例:
[rebatch]
192.168.99.100
192.168.99.101
rebatchservice.com.cn
[]中表示组,组下面的都是属于该组的hosts
hosts可以使用ip或域名
Inventory文件使用pattern的格式管理主机
2.1 patterns用法
patterns用于确定哪些主机和组执行task
- 所有主机
all
*
- 系列ip或host名,支持通配符*
example.com
192.168.154.60
192.168.154.*
- 多组之间以冒号分隔表示或的关系,一个主机可以在多个组中。
reonline:rebatch
- 所有执行命令的机器必须隶属reonline组但同时不在 rebatch组
reonline:!rebatch
- 5.执行命令有机器需要同时隶属于 reonline 和 rebatch组.
reonline:&rebatch
- 通配符和组可以混用
example.*.com:reonline
- 可以在组中选择对应编号的主机,或者一部分主机
reonline[0]
reonline[0-9]
- 支持正则表达式,开头加上
~即可
- 支持正则表达式,开头加上
~(web|db).*\.example\.com
- --limit 标记来添加排除条件
ansible-playbook site.yml --limit datacenter2
- 从文件中读取主机名,在文件名前加上@符号
ansible-playbook site.yml --limit @retry_hosts.txt
注意
如果在inventory文件中使用同一ip的不同端口,会有问题,具体参考:
https://github.com/ansible/ansible/issues/25311
参考文档
Inventory文件指南:http://www.ansible.com.cn/docs/intro_inventory.html
运行第一条命令:
有了管理的主机和免密登录,我们可以运行第一条命令:
ansible all -m ping
如果有返回说明已成功







网友评论