Ber*_*ale 14 ansible ansible-facts
我正在研究一个只需要收集一个事实的角色.
性能这是一个问题,我知道收集事实是耗时的.
我正在寻找一些方法来过滤gather_facts剧本,这将允许我只收集所需的事实.
这可以使用安装核心模块:
ansible -m setup -a 'filter=ansible_hostname' my_host
10.200.0.127 | success >> {
"ansible_facts": {
"ansible_hostname": "my_host"
},
"changed": false
}
Run Code Online (Sandbox Code Playgroud)
在剧本中可以使用这个功能吗?像这样的东西?
- hosts: all
sudo: yes
gather_facts: True
filter: "filter=ansible_*"
Run Code Online (Sandbox Code Playgroud)
PS:上面的代码抛出语法异常.
编辑1:如果有人需要获取主机名,那么还有另一个有用的变量inventory_hostname.
udo*_*dan 25
是的,这是可能的,但不是收集事实的默认行为.设置gather_facts为true简单地调用设置模块作为游戏的第一个任务.这样您就无法参数化setup模块调用.
但您可以使用filter参数禁用默认行为并自行调用设置.
- hosts: all
sudo: yes
gather_facts: False
tasks:
- setup:
filter: ansible_*
Run Code Online (Sandbox Code Playgroud)
由于您正在处理某个角色,并且可能不希望在您的角色中进行此设置调用,因此您可以使用pre_tasks.
- hosts: all
sudo: yes
gather_facts: False
pre_tasks:
- setup:
filter: ansible_*
roles:
- your_role_here
Run Code Online (Sandbox Code Playgroud)
imj*_*gel 10
剧本顶部的Ansible方式(其他方式):
----
- hosts: web
gather_facts: True
gather_subset:
- network
- virtual
Run Code Online (Sandbox Code Playgroud)
使用以下命令调试变量:
- 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
Run Code Online (Sandbox Code Playgroud)
在询问并回答了这个问题后,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47143 次 |
| 最近记录: |