GNU/Linux >> Linux Esercitazione >  >> Linux

come creare un playbook Ansible per ottenere le versioni del sistema operativo degli host remoti?

Usa una delle seguenti espressioni Jinja2:

{{ hostvars[inventory_hostname].ansible_distribution }}
{{ hostvars[inventory_hostname].ansible_distribution_major_version }}
{{ hostvars[inventory_hostname].ansible_distribution_version }}

dove:

  • hostvars e ansible_... sono integrati e raccolti automaticamente da Ansible
  • ansible_distribution è l'host elaborato da Ansible

Ad esempio, supponendo che tu stia eseguendo il ruolo Ansible test_role rispetto all'host host.example.com eseguire una distribuzione CentOS 7:

---
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_major_version }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_version }}"

ti darà:

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "CentOS"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7.5.1804"
}

In modo strutturato:

- hosts: all
  become: no
  vars:
    output_file: os.csv
  tasks:
    - block:
        # For permisison setup.
        - name: get current user
          command: whoami
          register: whoami
          run_once: yes

        - name: clean file
          copy:
            dest: "{{ output_file }}"
            content: 'hostname,distribution,version,release'
            owner: "{{ whoami.stdout }}"
          run_once: yes

        - name: fill os information
          lineinfile:
            path: "{{ output_file }}"
            line: "{{ ansible_hostname }},\
              {{ ansible_distribution }},\
              {{ ansible_distribution_version }},\
              {{ ansible_distribution_release }}"
          # Tries to prevent concurrent writes.
          throttle: 1
      delegate_to: localhost

Crea un file separato da virgole denominato os.csv nella cartella di esecuzione. Puoi usare qualsiasi variabile tu voglia modificando line: .


Linux
  1. Come creare un Playbook Ansible

  2. Come passare variabili extra a un playbook Ansible

  3. Come installare pacchetti software con un playbook Ansible

  4. Come creare un utente Linux usando Ansible

  5. Come ottenere il percorso del desktop in gnome

Come creare ruoli Ansible e usarli in Playbook

Come creare e utilizzare fatti personalizzati in Ansible

Come creare playbook Ansible per l'automazione IT

Come creare ed eseguire file Ansible Playbook

Come ho usato Ansible per automatizzare gli aggiornamenti a casa

Come clonare un repository Git con Ansible