我在研究Kubesfe2.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([])) }}。
我发现了required_pkgs在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没有检查我的操作系统的进程。那么Ansible如何在许多YML文件中设置required_pkgs呢?
附注:我的操作系统是RedHat。
发布于 2022-02-09 02:33:53
默认情况下,当Ansible第一次开始执行play时,它将在游戏中涉及的所有远程主机上隐式地运行设置模块。这被称为“事实收集”步骤,由play中的gather_facts选项或ansible.cfg中的gathering选项控制。
在这个步骤中收集到的事实包括操作系统风格、发布、有关接口和磁盘的信息以及其他各种主机元数据。变量都在ansible_*名称空间中(例如,ansible_distribution_major_version)。
库贝斯韦利用这些自动收集的事实来加载适当的vars文件。
有关详细信息,请参阅:
等。
https://stackoverflow.com/questions/71042933
复制相似问题