zoukankan      html  css  js  c++  java
  • Ansible hostvars

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

    hostvars:
    { 
               "iaas_name": "test",
                "inventory_hostname": "hostname....",
                "inventory_hostname_short": "hostname....",
                "hostname....": {
                    "passvar": {
                        "changed": true,
                        "cmd": [
                            "echo",
                            "123"
                        ],
                        "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": "123",
                        "stdout_lines": [
                            "123"
                        ],
                        "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['变量名'] 来引用. 不能直接使用二级变量中的变量.

    
    
  • 相关阅读:
    2.NET Core设定数据库种子
    1.ASP.NET Core 中向 Razor Pages 应用添加模型
    获取文件夹目录下的文件信息
    dataGridView读写文本
    C# winform 启动外部程序
    netcore访问本地磁盘
    c#利用定时器自动备份数据库(mysql)
    c#mysql数据库备份还原
    Linux之旅(二)
    Linux之旅
  • 原文地址:https://www.cnblogs.com/v394435982/p/5480758.html
Copyright © 2011-2022 走看看