Ansible 变量
1. 变量来源
- inventoryfile中定义
- playbook中定义
- include文件和角色中定义变量
- 系统facts ansible hostname -m setup
- local facts
2. 变量的使用
{{ ansible_eth0["ipv4"]["address"] }} 或者 {{ ansible_eth0.ipv4.address }}. 复杂变量可以像字典或者熟悉一样访问. 效果一样
3. 本地变量
ansible hostname -m setup 可以获取固定的系统facts, 在playbook中设置gather_fact:yes, playbook会自动获取远程机器的facts. 但是ansible也支持用户自定义facts
如果目标机器上有/etc/ansible/facts.d/目录, 在该目录下有.fact结尾的json ini 或者可执行并返回json过的脚本, 都可以作为本地便变量
例如
/etc/ansible/facts.d/preferences.fact: [general]
asdf=1
bar=2
使用变量 {{ ansible_local.preferences.general.asdf }}
4. 魔法变量
- hostvars 可以让你调用其他host的变量和facts, 即使你没有在这个机器上执行过playbook, 你仍然可以访问变量, 但是不能访问facts. 例如: {{ hostvars['test.example.com']['ansible_distribution'] }}
- group_names 当前host所在的group的组名列表. 包括其父组
- groups 所有组包括组中的hosts
- inventory_hostname 配置在inventory文件中当前机器的hostname
play_hosts执行当前playbook的所有机器的列表- inventory_dir inventory文件的路径
- inventory_file inventory文件的路径和文件名
- role_path 当前role的路径
5. 变量作用域
- 全局作用域: 设置在config, 环境变量, 和命令行中的变量
- play: 作用于play和包含的structure, 变量, role中的default和vars
- host: inventory, facts和register产生的变量, 只作用于某个host
Note 1: 子组的变量会覆盖父组的变量, host的变量会覆盖其组的变量
Note 2: 变量优先级
roles/x/defaults/main.yml -> inventory file -> roles/x/vars/main.yml -> 调用role时的参数 -> role play 中的变量 -> 执行命令-e 传入的变量.
6. fact缓存
如果想在一个host上访问另一个host的fact 必须设置gathering setting to smart, 否则,如果你想访问另一个机器的fact, 那你必须在另外一台机器上执行过gather_fact.
inventory 里面声明的变量是否和上面有同样的要求, 待验证-???
Ansible 变量的更多相关文章
- ansible变量
ansible变量 (部分内容摘自互联网,非官方,描述不一定正确) 变量种类: 内置变量facts: 自定义变量: 命令行传递的变量 roles传递的变量 主机变量 组变量 内置变量facts: 由远 ...
- Ansible--03 ansible 变量
目录 Ansible 变量 变量概述 定义变量的方式 如何定义变量 Ansible变量优先级测试 变量注册 ansibl e层级定义变量 facts缓存 Ansible 变量 变量概述 变量提供了便捷 ...
- 第二十七章 ansible变量介绍
一.ansible变量介绍 1.概念 变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使用,那么如果讲 ...
- 007.Ansible变量Fact,魔法变量和lookup生成变量
一 fact变量 1.1 fact简介 ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用.而setup模块获取这些信息的方法就是 ...
- ansible 变量详解
定义变量的方法 1. 主机变量,在hosts文件中设置变量, [atlanta] host1 http_port= maxRequestsPerChild= host2 http_port= maxR ...
- ansible变量定义
一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...
- Ansible变量嵌套解析
有时候需要用到ansible的变量的嵌套解析,就是“变量中嵌套变量”.例子如下: 假设有一个外部传递的变量,system_code = CRM,而我们同时有一系列类似的变量,如: ABS_port=1 ...
- ansible变量引用
1. 在/etc/ansible/hosts默认文件中定义变量 [test] 192.168.163.130 #[test:vars] #key=ansible 或者 192.168.163.130 ...
- ansible 变量定义和引用
cat /etc/ansible/hosts [nodes]10.2.1.232 key=23210.2.1.43 key=43 cat debug.yaml ---- name: test how ...
随机推荐
- Google开源的Deep-Learning项目word2vec
用中文把玩Google开源的Deep-Learning项目word2vec google最近新开放出word2vec项目,该项目使用deep-learning技术将term表示为向量,由此计算te ...
- web.xml加载过程
web.xml加载过程:1 启动WEB项目的时候,容器(如:Tomcat)会读他的配置文件web.xml读两个节点 <listener></listener>和<con ...
- Python Redis 数据复制.
1 > 下载Python操作Redis的客户端 https://pypi.python.org/pypi/redis/2.7.6 下载完成后,参考该网站相关命令,执行安装. 2 > 下载 ...
- Mathematics for Computer Graphics
Mathematics for Computer Graphics 最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=105 ...
- JavaEE:XML解析
XML解析技术概述1.XML 技术主要企业应用1)存储和传输数据 2)作为框架的配置文件2.使用xml 存储和传输数据涉及到以下两点1)通过程序生成xml2)读取xml 中数据 ---- xml 解析 ...
- 《C++游戏开发》笔记十二 战争迷雾:初步实现
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:/ ...
- Mysql re-set password, mysql set encode utf8 mysql重置密码,mysql设置存储编码格式
There is a link about how to re-set password. http://database.51cto.com/art/201010/229528.htm words ...
- Hackers’ Crackdown-----UVA11825-----DP+状态压缩
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Windows平台下的node.js安装
Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应 ...
- 【Zookeeper】源码之序列化
一.前言 在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信.数据存储中都用到了序列化,下面开始分析. 二.序列化 序列化主要在zook ...