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 变量的更多相关文章

  1. ansible变量

    ansible变量 (部分内容摘自互联网,非官方,描述不一定正确) 变量种类: 内置变量facts: 自定义变量: 命令行传递的变量 roles传递的变量 主机变量 组变量 内置变量facts: 由远 ...

  2. Ansible--03 ansible 变量

    目录 Ansible 变量 变量概述 定义变量的方式 如何定义变量 Ansible变量优先级测试 变量注册 ansibl e层级定义变量 facts缓存 Ansible 变量 变量概述 变量提供了便捷 ...

  3. 第二十七章 ansible变量介绍

    一.ansible变量介绍 1.概念 变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使用,那么如果讲 ...

  4. 007.Ansible变量Fact,魔法变量和lookup生成变量

    一 fact变量 1.1  fact简介 ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用.而setup模块获取这些信息的方法就是 ...

  5. ansible 变量详解

    定义变量的方法 1. 主机变量,在hosts文件中设置变量, [atlanta] host1 http_port= maxRequestsPerChild= host2 http_port= maxR ...

  6. ansible变量定义

    一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...

  7. Ansible变量嵌套解析

    有时候需要用到ansible的变量的嵌套解析,就是“变量中嵌套变量”.例子如下: 假设有一个外部传递的变量,system_code = CRM,而我们同时有一系列类似的变量,如: ABS_port=1 ...

  8. ansible变量引用

    1. 在/etc/ansible/hosts默认文件中定义变量 [test] 192.168.163.130 #[test:vars] #key=ansible 或者 192.168.163.130 ...

  9. ansible 变量定义和引用

    cat /etc/ansible/hosts [nodes]10.2.1.232 key=23210.2.1.43 key=43 cat debug.yaml ---- name: test how ...

随机推荐

  1. 基于easyui的webform扩展

    基于easyui的webform扩展 回顾 <前端基于easyui的mvc扩展>.<前端基于easyui的mvc扩展(续)>前两篇介绍了mvc内如何基于easyui进行扩展,在 ...

  2. iOS多线程的初步研究3

    iOS多线程的初步研究(三) 弄清楚NSRunLoop确实需要花时间,这个类的概念和模式似乎是Apple的平台独有(iOS+MacOSX),很难彻底搞懂(iOS没开源,呜呜). 官网的解释是说run ...

  3. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

  4. 关闭Windows 2008下面应用程序出错后的提示

    写了一个服务器端程序,没有能处理所有的错误,总有一些错误会抛出到系统中去.于是写了一个进程守护者,一旦发现服务器端退出,可以在第一时间重新启动服务器,也算是一种折中的方案吧.理论上讲应该是可行的,但是 ...

  5. 深入学习Java中的字符串,代码点和代码单元

    在Java字符串处理时,在使用length和charAt方法时,应该格外小心,因为length返回的是UTF-16编码表示下的代码单元数量,而非我们所认为的字符的个数,charAt方法返回的是指定位置 ...

  6. js jquery 实现html页面之间参数传递(单一参数、对象参数传递)

    最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递.------jstarseven .菜鸡的自我修养. 页面A代码如下: <!DOCTYPE html ...

  7. Oracle多关键字查询

    因项目需要,在某查询页面的查询字段支持多关键字查询,支持空格隔开查询条件,故实现如下: 使用的原理是:ORACLE中的支持正则表达式的函数REGEXP_LIKE, '|' 指明两项之间的一个选择.例子 ...

  8. C语言之break和continue

    一 break 和 continue 的介绍 break: 1).跳出当前所在的switch语句(tips:可查看前面 switch 部分)   2).跳出当前所在的循环 continue: 结束本次 ...

  9. java编程思想笔记(一)——面向对象导论

    1.1 抽象过程 1.所有编程语言都提供抽象编程机制. 2.人们所能够解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么)和质量. 3."命令式"语言(basic,c等)都是对 ...

  10. 【转】PYTHON open/文件操作

    [注]虽是转载,但会在原文上有些修改! open/文件操作f=open('/tmp/hello','w')#open(路径+文件名,读写模式)#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a ...