知识介绍
inventory 文件不要带后缀,否则还要修改配置文件来忽略后缀
inventory 可以定义为目录,下边包含多个 inventory 文件
动态添加主机
可以通过 add_host
模块来添加主机,通过 group_by
临时设置主机组,这种方式添加的主机或组都只在内存中,只在 ansible 允许时生效,退出之后就消失
变量
没有免密的情况下,可以使用 ansible_ssh_user
和 ansible_ssh_pass
等变量,如下所示
10.20.9.[11:12] ansible_ssh_user=root ansible_ssh_pass=test
Inventory 变量名 | 含义 |
---|---|
Ansible_host | |
Ansible_port | |
Ansible_user | |
Ansible_password | |
Ansible_connection | 连接类型,有效值包括 smart、ssh、paramiko、local、docker等,默认为smart |
ansible_ssh_private_key_file | |
Ansible_ssh_common_args | |
Ansible_become | 允许进行权限提升 |
Ansible_become_method | 指定提升权限的方式 |
Ansible_become_user | |
Ansible_become_password | 提升用户权限时的密码 |
connection
local:表示在 ansible 端本地执行任务
使用 ansible -c local
可以指定 connection
的方式
示例
变量示例
[ecs]
example.com
[ecs:vars]
ansible_user='root'
ansible_port='22'
嵌套
[ecs]
houm01.com
[demo]
10.20.99.106 ansible_user=root
[mysrv:children]
ecs
demo
命令
# 查看主机列表信息
ansible-inventory -i inventory --list
ansible-inventory -i inventory --graph
ansible-inventory -i inventory cn2 --graph
ansible-inventory -i inventory cn2 --graph --vars
问题处理
ansible_ssh_pass 问题
使用了 ansible_ssh_host
、ansible_ssh_pass
后,需要安装 ssh_pass
才行,Linux 直接安装 ssh_pass
即可,macOS 则需要使用 brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
安装