Inventory:定义受控主机

Ansible的主要任务是在一批指定的主机上执行安装配置等任务,这样一批受控主机的集合叫做Inventory。 有两种方式的inventory:静态的(保存在本地inventory文件中)和动态的(来自云等外部来源)。静态inventory文件是主要的方式。

inventory文件

在Ansible中,将所有受控主机的相关信息列在一个文本文件中,这个文件叫做inventory文件。内容例如:

192.168.1.5
mysql.yyang.io
app.yyang.io:2222
vagrant1

每一行代表一个主机。可以用IP、域名甚至别名表示一台主机。当使用别名标识一台主机时,通过行为参数ansible_host定义所代表的真正的主机。

有一个主机会被自动加入到inventory中,那就是localhost。

当受控主机的ssh端口不是默认值22时,通过[host]:[port]的方式指定受控主机,或者通过行为参数ansible_port指定ssh端口。

inventory文件的位置

Ansible从下面的位置自动搜索inventory:

  • /etc/ansible/hosts
  • 可以在运行ansible或ansible-playbook命令时用-i参数指定inventory文件。

inventory行为参数

在inventory文件中,针对每台主机,可以定义主机名、ssh用户和口令等变量,这些变量统称为inventory “行为参数”(behavioral inventory parameters)。例如:

vagrant1 ansible_host=127.0.0.1 ansible_port=2222 ansible_user=yyang ansible_ssh_pass=abc123
vagrant2 ansible_host=127.0.0.2 ansible_port=2222 ansible_user=yyang ansible_ssh_pass=abc123

主机连接

名称 默认值 描述
ansible_connection smart 连接模式,可选项有:local, smart, ssh和paramiko

SSH连接

名称 默认值 描述
ansible_host 主机的名字 SSH目的主机名称或IP
ansible_port 22 SSH目的主机端口
ansible_user root SSH登录用户名
ansible_ssh_pass SSH登录认证密码。不安全!强烈推荐改用--ask-pass选项或SSH keys
ansible_ssh_private_key_file SSH使用的私钥文件
ansible_ssh_common_args 为sftp, scp或ssh命令添加的其他参数
ansible_sftp_extra_args 为sftp命令添加的其他参数
ansible_scp_extra_args 为scp命令添加的其他参数
ansible_ssh_extra_args 为ssh命令添加的其他参数
ansible_ssh_pipelining 决定是否使用ssh管道。可以覆盖ansible.cfg中的pipelining设置

特权提升

名称 默认值 描述
ansible_become 等价于ansible_sudoansible_su,允许强制特权提升
ansible_become_method 允许设置特权提升方法
ansible_become_user 等价于ansible_sudo_useransible_su_user,特权提升为指定的用户
ansible_become_pass