Ofe*_*dan 2 ansible ansible-facts
我有一个示例角色,我根据操作系统和包管理器安装一些包:
# THIS IS IN tasks/main.yml
- name: Ensure archlinux-keyring is updated
community.general.pacman:
name: archlinux-keyring
state: latest
update_cache: yes
when: ansible_pkg_mgr == "pacman"
Run Code Online (Sandbox Code Playgroud)
如果这个角色作为剧本的一部分运行,Ansible 将收集事实,一切都很好。但是,如果我将其作为独立角色运行:
ansible localhost -m include_role -a name=examplerole
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
localhost | FAILED! => {
"msg": "The conditional check 'ansible_pkg_mgr == \"pacman\"' failed. The error was: error while evaluating conditional (ansible_pkg_mgr == \"pacman\"): 'ansible_pkg_mgr' is undefined
Run Code Online (Sandbox Code Playgroud)
我知道我可以强制 Ansible 在角色中收集这些事实,但是一遍又一遍地收集事实会非常慢(因为这是我在多个角色中反复出现的问题,而且我不能总是将它们包含在剧本中,而且,如果它们在剧本中,则不需要)。
有什么方法可以检查事实是否已经收集,并仅在需要时将它们收集到角色内部?
关于
\n\n\n...有什么方法可以检查事实是否已经收集...仅在需要时才将它们收集到角色内部?
\n
如果您想根据条件收集事实,您可以查看以下示例
\n- hosts: localhost\n become: false\n\n gather_facts: false\n\n tasks:\n\n - name: Show Gathered Facts\n debug:\n msg: "{{ hostvars[\'localhost\'].ansible_facts }}"\n\n - name: Gather date and time only\n setup:\n gather_subset:\n - "date_time"\n - "!min"\n when: ansible_date_time is not defined\n\n - name: Show Gathered Facts\n debug:\n msg: "{{ ansible_facts }}"\nRun Code Online (Sandbox Code Playgroud)\n仅收集日期和时间(如果之前未定义)。
\n这意味着,关于
\n\n\n一遍又一遍地收集事实会非常慢
\n
建议熟悉所收集事实和可能的子集的数据结构,以便仅收集所需的信息。以及缓存事实。
\n进一步的文档
\n\n| 归档时间: |
|
| 查看次数: |
7488 次 |
| 最近记录: |