Ansible主配置文件
/etc/ansible/ansible.cfg
Ansible主配置文件检查次序
- 首先检查ANSIBLE_CONFIG变量所定义的配置文件
- 其次检查当前目录下的 ansible.cfg 文件
- 然后检查用户更目录下的文件:~/ansible.cfg
- 最后检查主配置文件:/etc/ansible/ansible.cfg
推荐方式
在用户目录下创建ansible子目录,并在其中创建配置文件ansible.cfg及inventory。
之后每次都进入用户目录下的ansible子目录,再运行ansible的相关命令,这样ansible就能从当前目录下读取配置。
bash
> ansible tree .
.
├── ansible.cfg
└── inventory
Ansible主配置文件内容
text
[defaults]
inventory = ~/ansible/hosts
remote_user = lcoding # 以何身份登录远程主机
[privilege_escalation] # 配置权限
become = True # 是否需要切换用户
become_method = sudo # 如何切换用户
become_user = root # 切换成什么用户
become_ask_pass = no # sudo切换时是否需要输入密码
# forks =2 # 可选项,SSH并发数
# host_key_checking = False # 可选项,当首次SSH连接某个主机时,是否检查其host key
# ask_pass = False # 是否允许使用密码登录远程主机
配置完毕后,可以通过如下命令来检测登录远程主机的用户名:
bash
ansible all -m shell -a "who"
Ansible清单文件inventory
和主配置文件类似,inventory文件可以在:
- 当前用户的inventory:~/ansible/hosts
- 系统默认的inventory: /etc/ansible/hosts
inventory文件的分组
注意这里的children是Ansible的关键字
text
[dev-web]
xxx.xxx.xxx.xxx
[dev-redis]
xxx.xxx.xxx.xxx
[dev-db]
xxx.xxx.xxx.xxx
[dev:children] # 嵌套组,注意这里的children是Ansible的关键字
dev-web
dev-redis
dev-db
node的表示方式
我们可以使用一个范围:
- node[1:10]: 代表node1,node2,node3,…node10
定义node时的更多选项
在定义IP或主机名之后,可以添加如下参数:
- ansible_ssh_port=2222
- ansible_ssh_user=lcoding
- ansible_ssh_pass=YOUR_PASSWORD
- ansible_ssh_private_key_file=PATH_TO_SSH_KEY_FILE