Ansible教程:配置


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

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !