ansible如何设置变量('required_pkgs')?
How ansible sets variables ('required_pkgs')?
我正在开发 Kubespray 2.16
在 roles/kubernetes/preinstall/tasks/0070-system-packages.yml
,有一个任务“安装包要求”
- name: Install packages requirements
package:
name: "{{ required_pkgs | default([]) | union(common_required_pkgs|default([])) }}"
state: present
register: pkgs_task_result
until: pkgs_task_result is succeeded
retries: "{{ pkg_install_retries }}"
delay: "{{ retry_stagger | random + 3 }}"
when: not (ansible_os_family in ["Flatcar Container Linux by Kinvolk", "ClearLinux"] or is_fedora_coreos)
tags:
- bootstrap-os
根据代码,将安装软件包 {{ required_pkgs | default([]) | union(common_required_pkgs|default([])) }}
。
我在 roles/kubernetes/preinstall/vars/*.yml
中找到了 required_pkgs
在redhat.yml
,
required_pkgs:
- "{{ ( (ansible_distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
- device-mapper-libs
- nss
- conntrack
在centos.yml
,
required_pkgs:
- "{{ ( (ansible_distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
- device-mapper-libs
- nss
- conntrack
我认为 Ansible 没有检查我在“这个任务”中的 OS 的过程。那么Ansible如何在一大堆YML文件中设置required_pkgs
?
p.s。我的 OS 是 RedHat。
默认情况下,当 Ansible 第一次开始执行播放时,它将隐式 运行 播放中涉及的所有远程主机上的 setup 模块。这称为“事实收集”步骤,由剧本中的 gather_facts
选项或 ansible.cfg
.
中的 gathering
选项控制。
在此步骤中收集的事实包括操作系统风格、版本、有关接口和磁盘的信息以及各种其他主机元数据。变量都在ansible_*
命名空间中(如ansible_distribution_major_version
)。
Kubespray 正在利用这些自动收集的事实来加载适当的 vars 文件。
更多信息:
等等
我正在开发 Kubespray 2.16
在 roles/kubernetes/preinstall/tasks/0070-system-packages.yml
,有一个任务“安装包要求”
- name: Install packages requirements
package:
name: "{{ required_pkgs | default([]) | union(common_required_pkgs|default([])) }}"
state: present
register: pkgs_task_result
until: pkgs_task_result is succeeded
retries: "{{ pkg_install_retries }}"
delay: "{{ retry_stagger | random + 3 }}"
when: not (ansible_os_family in ["Flatcar Container Linux by Kinvolk", "ClearLinux"] or is_fedora_coreos)
tags:
- bootstrap-os
根据代码,将安装软件包 {{ required_pkgs | default([]) | union(common_required_pkgs|default([])) }}
。
我在 roles/kubernetes/preinstall/vars/*.yml
在redhat.yml
,
required_pkgs:
- "{{ ( (ansible_distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
- device-mapper-libs
- nss
- conntrack
在centos.yml
,
required_pkgs:
- "{{ ( (ansible_distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
- device-mapper-libs
- nss
- conntrack
我认为 Ansible 没有检查我在“这个任务”中的 OS 的过程。那么Ansible如何在一大堆YML文件中设置required_pkgs
?
p.s。我的 OS 是 RedHat。
默认情况下,当 Ansible 第一次开始执行播放时,它将隐式 运行 播放中涉及的所有远程主机上的 setup 模块。这称为“事实收集”步骤,由剧本中的 gather_facts
选项或 ansible.cfg
.
gathering
选项控制。
在此步骤中收集的事实包括操作系统风格、版本、有关接口和磁盘的信息以及各种其他主机元数据。变量都在ansible_*
命名空间中(如ansible_distribution_major_version
)。
Kubespray 正在利用这些自动收集的事实来加载适当的 vars 文件。
更多信息:
等等