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_sudo或ansible_su,允许强制特权提升 |
ansible_become_method | 无 | 允许设置特权提升方法 |
ansible_become_user | 无 | 等价于ansible_sudo_user或ansible_su_user,特权提升为指定的用户 |
ansible_become_pass | 无 |