如何判別 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"