GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erstelle ich ein Ansible-Playbook, um Betriebssystemversionen der Remote-Hosts zu erhalten?

Verwenden Sie einen der folgenden Jinja2-Ausdrücke:

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

wo:

  • hostvars und ansible_... sind integriert und werden automatisch von Ansible erfasst
  • ansible_distribution ist der Host, der von Ansible verarbeitet wird

Angenommen, Sie führen die Ansible-Rolle test_role aus gegen den Host host.example.com Ausführen einer CentOS 7-Distribution:

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

gibt Ihnen:

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"
}

Strukturiert:

- 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

Erstellt eine kommagetrennte Datei mit dem Namen os.csv im Ausführungsordner. Sie können beliebige Variablen zum Bearbeiten von line: verwenden .


Linux
  1. So erstellen Sie ein Ansible-Playbook

  2. So übergeben Sie zusätzliche Variablen an ein Ansible-Playbook

  3. So installieren Sie Softwarepakete mit einem Ansible-Playbook

  4. So erstellen Sie einen Linux-Benutzer mit Ansible

  5. So erhalten Sie den Pfad des Desktops in Gnome

So erstellen Sie Ansible-Rollen und verwenden sie im Playbook

So erstellen und verwenden Sie benutzerdefinierte Fakten in Ansible

So erstellen Sie Ansible Playbooks für die IT-Automatisierung

So erstellen und führen Sie eine Ansible Playbook-Datei aus

Wie ich Ansible verwendet habe, um Updates zu Hause zu automatisieren

So klonen Sie ein Git-Repository mit Ansible