如何判別 Linux 發行版
Task 要依據 Linux 發行版來處理,該怎麼做呢?
這些資訊在 gather_facts 後,會放到 ansible_facts 裡,在寫 task 時,就可以直接使用。
主要的變數有這幾個:
- ansible_distribution: 發行版名稱,例如 “CentOS”
- ansible_distribution_major_version: 發行版主要版號,例如 “7”
- ansible_distribution_version: 發行版版本,例如 “7.5.1804”
- ansible_os_family: 發行版家族名稱,例如 CentOS 的 ansible_os_family 會是 RedHat
要看 ansible_facts 還有哪些變數可使用,可以參考 Discovering variables: facts and magic variables — Ansible Documentation
舉個例子:
---
- name: Detect distribution example
hosts: all
gather_facts: yes
tasks:
- name: Enable satellite-tools repository
rhsm_repository:
name: rhel-7-server-satellite-tools-6.8-rpms
state: enabled
when: ansible_distribution == "RedHat" and ansible_distribution_major_version == "7"
- name: Enable satellite-tools repository
rhsm_repository:
name: satellite-tools-6.8-for-rhel-8-x86_64-rpms
state: enabled
when: ansible_distribution == "RedHat" and ansible_distribution_major_version == "8"