1.  inventory hosts file 中的server 变量会覆盖group变量.

hostvars:
{
"iaas_name": "test",
"inventory_hostname": "hostname....",
"inventory_hostname_short": "hostname....",
"hostname....": {
"passvar": {
"changed": true,
"cmd": [
"echo",
""
],
"delta": "0:00:00.004135",
"end": "2016-05-10 13:02:51.363078",
"invocation": {
"module_args": "echo 123",
"module_complex_args": {},
"module_name": "command"
},
"rc": 0,
"start": "2016-05-10 13:02:51.358943",
"stderr": "",
"stdout": "",
"stdout_lines": [
""
],
"warnings": []
}
},
}
"iaas_name" 这个变量是group中的值, 这个值在hostvars中的第一级变量中. 这个变量并没有merge到"hostname...."中

2. hostvars中包含了说有执行过gather_facts的server的facts. 
---
- name: test
hosts: all
gather_facts: no
vars:
xiama: "------------------------"
tasks:
- command: echo 123
register: passvar - name: test
hosts: masters
gather_facts: no
tasks:
- debug: var=hostvars
- debug: var=groups['masters'][0]

在第二步中的debug中, hostvars包含了所有机器的facts, 可以在下面的steps中引用hostvars[groups.masters[0]].变量名.  这样就可以使用

Note 1   "passvar" 这个变量是register产生的, 类似于机器的facts, 会在playbook的整个生命周期中使用, hostvars[groups.masters[0]].passvar

Note 2   但是vars产生的"xiama" 不会存在于下一个playbook中

Note 3   可以通过set_fact模块来设置机器的fact, 并且永久生效.

关于hostvars的结构, 可以直接在playbook中使用hostvars下面的一级变量,  也可以用hostvars.变量名, 或者字典hostvars['变量名'] 来引用. 不能直接使用二级变量中的变量.


Ansible hostvars的更多相关文章

  1. ansible中的hostvars

    首先来看一个例子:假设我想得到主机IP为172.25.250.9的完全限定域名(FQDN),但是我无法登录该主机,那么就可以用本机里面的hostvars魔法变量(后面会分享我对魔法这个词的理解)这个字 ...

  2. ansible模块debug

    示例: # Example that prints the loopback address and gateway for each host - debug: msg="System { ...

  3. Ansible :一个配置管理和IT自动化工具

    编译文章:LCTT  https://linux.cn/article-4215-1.html 译者: felixonmars 文章地址:https://linux.cn/article-4215-1 ...

  4. Ansible状态管理

     转载自:http://xdays.me/ansible状态管理.html 简介 就像所有服务器批量管理工具(puppet有DSL,salt有state)一样,ansible也有自己的状态管理组件 ...

  5. ansible官方文档翻译之变量

    Ansible变量 在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者 ...

  6. Ansible 变量

    1. 变量来源 inventoryfile中定义 playbook中定义 include文件和角色中定义变量 系统facts  ansible hostname -m setup local fact ...

  7. Ansible系列(六):各种变量定义方式和变量引用

    本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设 ...

  8. 【Ansible】 基于SSH的远程管理工具

    [Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...

  9. ansible基础-Jinja2模版 | 过滤器

    Jinja2模版介绍 注:本文demo使用ansible2.7稳定版 在ansible基础-变量的「8.2 模版使用变量」章节中关于模版与变量也有所提及,有兴趣的同学可以去回顾一下. ansible通 ...

随机推荐

  1. JavaScript 面向对象编程(三)如何写类和子类

    在JavaScript面向对象编程(一)原型与继承和JavaScript面向对象编程(二)构造函数和类中,我们分别讨论了JavaScript中面向对象的原型和类的概念.基于这两点理论,本篇文章用一个简 ...

  2. error:“Unexpected namespace prefix "xmlns" found for tag LinearLayout”

    错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法 androidUnexpected ...

  3. asp.net MVC 路由机制

    1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ...

  4. Windows核心编程学习九:利用内核对象进行线程同步

    注:源码为学习<Windows核心编程>的一些尝试,非原创.若能有助于一二访客,幸甚. 1.程序框架 #include "Queue.h" #include <t ...

  5. android 常用资料

    网上收集保存的一些常用的android资料,写得都比较不错,和大家分享下,共同学习: _ android ListView美化.docx androidshape.docx android_textv ...

  6. ok6410 u-boot-2012.04.01移植二修改源码支持单板

    继ok6410 u-boot-2012.04.01移植一后修改代码,对ok6410单板初始化,主要包括时钟.串口.NAND.DDR等初始化.这些工作在以前的裸板程序都写了,直接拿来用.我觉得先写裸板程 ...

  7. [CSS] 子元素垂直居中的两种方式

    1. 多个子元素水平并排,IE10以下失效 display: flex; align-items: center; justify-content: center; 2.多个子元素竖直排列,这种方式会 ...

  8. 设计模式(二)单例模式Singleton(创建型)

    几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关闭时,它是一种开销.再如大家最经常用的IM, ...

  9. 图像预处理(Evision)

    Convolution //采用线性过滤Linear combination of neighboring pixels using a convolution kernel−Pre-defined ...

  10. 第一百三十二节,JavaScript,封装库--下拉菜单

    JavaScript,封装库--下拉菜单 封装库,增加了3个方法 shu_biao_yi_ru_yi_chu()方法,给元素设置鼠标移入移出事件,接收两个参数,参数是移入和移出时的执行函数(包含代码) ...