一、内置主机变量
所谓内置变量其实就是ansible.cfg配置文件中的选项,在其前加上ansible_即成为内置变量。当然内置变量拥有比ansible.cfg中选项更高的优先
级,而且针对不同的主机,可以定义不同的值。 之所以叫内置主机变量,其实就是这些变量一般写在inventory的主机或主机组中。
# 一般连接
ansible_host #用于指定被管理的主机的真实IP
ansible_port #用于指定连接到被管理主机的ssh端口号,默认是22
ansible_user #ssh连接时默认使用的用户名
# 特定ssh连接
ansible_connection #SSH连接的类型:local, ssh, paramiko,在ansible 1.2 之前默认是
paramiko,后来智能选择,优先使用基于ControlPersist的ssh(如果支持的话)
ansible_ssh_pass #ssh连接时的密码
ansible_ssh_private_key_file #秘钥文件路径,如果不想使用ssh‐agent管理秘钥文件时可以使用此选项
ansible_ssh_executable #如果ssh指令不在默认路径当中,可以使用该变量来定义其路径
# 特权升级
ansible_become #相当于ansible_sudo或者ansible_su,允许强制特权升级
ansible_become_user #通过特权升级到的用户,相当于ansible_sudo_user或者ansible_su_user
ansible_become_pass # 提升特权时,如果需要密码的话,可以通过该变量指定,相当于
ansible_sudo_pass或者ansible_su_pass
ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径
# 远程主机环境参数
ansible_shell_executable # 设置目标机上使用的shell,默认为/bin/sh
ansible_python_interpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指
定ruby 、perl 的路径
ansible_*_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以
是ruby或才perl等其他语
二、魔法变量
1、hostvars
获取inventory中定义的所有主机的相关变量。
2、inventory_hostname
inventory_hostname是Ansible所识别的当前正在运行task的主机的主机名。
如果在inventory里定义过别名,那么这里就是那个别名,如果inventory包含如下一行:
server1 ansible_ssh_host=192.168.194.129
则 inventory_hostname 即为 server1 。
ansible all -m shell -a "echo {{ inventory_hostname }}" -i hosts
ansible init_server -m debug -a "msg='{{ inventory_hostname}}'"
与inventory_hostname相近的还有一个inventory_hostname_short,
如果一台主机的 inventory_hostname为server1.exmaple.com,则inventory_hostname_short的值为server1;
如果主机的inventory_hostname为192.168.194.129,则inventory_hostname_short为192
3、group_names
group_names返回的是主机所属主机组,如果该主机在多个组中,则返回多个组,如果它不在组 中,则返回ungrouped这个特殊组
ansible all -m debug -a "msg='{{ group_names }}'"
4、groups
groups是inventory中所有主机组的列表,可用于枚举主机组中的所有主机。
ansible all -m debug -a "msg='{{ groups }}'"
ansible testB -m debug -a "msg={{groups.testA}}"
ansible testB -m debug -a "msg={{groups.ungrouped}}"
5、play_hosts
当前playbook会在哪些hosts上运行。
6、inventory_dir
机清单所在目录。
ansible all -m debug -a "msg='{{ inventory_dir }}'"
7.、inventory_file
主机清单文件。标签:hostname,变量,主机,魔法,ansible,ssh,inventory From: https://blog.51cto.com/u_13236892/6065493
ansible all -m debug -a "msg='{{ inventory_file }}'"