ansible 中 hostvars, groups, group_names, inventory_hostname 等变量

148 篇文章 2 订阅
10 篇文章 0 订阅

版本:ansible2.7

无论您是否定义了任何变量,您都可以使用Ansible提供的特殊变量(包括“magic”变量、事实和连接变量)访问有关主机的信息。magic变量名是保留的,不要用这些名称设置变量。

最常用的magic变量是hostvars、groups、group_names和inventory_hostname。

1、hostvars:获取某台指定的主机的相关变量。如果有一台web服务器的配置文件中需要指定db服务器的ip地址,我们假定这台db服务器的hostname为 db.example.com ip地址绑定在eth0网卡上,我们可以通过如下方法在web服务器上调用db服务器的ip地址:

{{ hostvars['db.example.com'].ansible_eth0.ipv4.address }}

需要注意的是db.example.com不能使用ip地址来取代,只能使用主机名或别名。

2、groups : 资产文件中的组和主机
3、group_names :用于标识当前正在执行task的目标主机位于的=组
4、inventory_hostname:是指inventory资产文件中的主机的名称,常用来修改主机名与资产文件中一致

- name: configuire system hostname
  hostname:
    name: "{{ inventory_hostname }}
  become: yes 

5、inventory_hostname与ansible_host的区别
ansible_hostname是ansible收集的变量,为主机的hostname

ansible hostname -m setup

6、变量优先级:
1、extra vars(命令中-e)最优先
2、inventory 主机清单中连接变量(ansible_ssh_user 等)
3、play 中 vars、vars_files 等
4、剩余的在 inventory 中定义的变量
5、系统的 facts 变量
6、角色定义的默认变量(roles/rolesname/defaults/main.yml)
注:子组会覆盖父组,主机总是覆盖组定义的变量

参考文章:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
https://gist.github.com/andreicristianpetcu/b892338de279af9dac067891579cad7d

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值