当前位置:  开发笔记 > 前端 > 正文

Ansible - 在Playbook内部使用过滤器收集事实

如何解决《Ansible-在Playbook内部使用过滤器收集事实》经验,为你挑选了3个好方法。

我正在研究一个只需要收集一个事实的角色.

性能这是一个问题,我知道收集事实是耗时的.

我正在寻找一些方法来过滤gather_facts剧本,这将允许我只收集所需的事实.

这可以使用安装核心模块:

ansible -m setup -a 'filter=ansible_hostname' my_host

10.200.0.127 | success >> {
    "ansible_facts": {
        "ansible_hostname": "my_host"
    },
    "changed": false
}

在剧本中可以使用这个功能吗?像这样的东西?

- hosts: all
  sudo: yes
  gather_facts: True
    filter: "filter=ansible_*"

PS:上面的代码抛出语法异常.

编辑1:如果有人需要获取主机名,那么还有另一个有用的变量inventory_hostname.



1> udondan..:

是的,这是可能的,但不是收集事实的默认行为.设置gather_factstrue简单地调用设置模块作为游戏的第一个任务.这样您就无法参数化setup模块调用.

但您可以使用filter参数禁用默认行为并自行调用设置.

- hosts: all
  sudo: yes
  gather_facts: False
  tasks:
   - setup:
       filter: ansible_*

由于您正在处理某个角色,并且可能不希望在您的角色中进行此设置调用,因此您可以使用pre_tasks.

- hosts: all
  sudo: yes
  gather_facts: False
  pre_tasks:
   - setup:
       filter: ansible_*
  roles:
   - your_role_here



2> imjoseangel..:

剧本顶部的Ansible方式(其他方式):

----
- hosts: web
  gather_facts: True
  gather_subset:
    - network
    - virtual

使用以下命令调试变量:

  - name: Print some debug information 
    vars: 
      msg: |
          Module Variables ("vars"):
          --------------------------------
          {{ vars | to_nice_json }} 

          Environment Variables ("environment"):
          --------------------------------
          {{ environment | to_nice_json }} 

          GROUP NAMES Variables ("group_names"):
          --------------------------------
          {{ group_names | to_nice_json }}

          GROUPS Variables ("groups"):
          --------------------------------
          {{ groups | to_nice_json }}

          HOST Variables ("hostvars"):
          --------------------------------
          {{ hostvars | to_nice_json }} 

    debug: 
      msg: "{{ msg.split('\n') }}"       
    tags: debug_info



3> ZachP..:

在询问并回答了这个问题后,Ansible 2.1将gather_subset选项添加到设置模块,因此现在可以使用!facter,!ohai,network文档中描述的语法而不是正则表达式过滤器:

- hosts: all
  sudo: yes
  gather_facts: False
  pre_tasks:
   - setup:
       gather_subset: !facter,!ohai,network
  roles:
   - your_role_here

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有