GNU/Linux >> Tutoriels Linux >  >> Linux

comment créer un playbook Ansible pour obtenir les versions du système d'exploitation des hôtes distants ?

Utilisez l'une des expressions Jinja2 suivantes :

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

où :

  • hostvars et ansible_... sont intégrés et collectés automatiquement par Ansible
  • ansible_distribution est l'hôte traité par Ansible

Par exemple, en supposant que vous exécutez le rôle Ansible test_role contre l'hébergeur host.example.com exécutant une distribution 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 }}"

vous donnera :

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

De manière structurée :

- 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

Crée un fichier séparé par des virgules nommé os.csv dans le dossier d'exécution. Vous pouvez utiliser toutes les variables que vous souhaitez modifier line: .


Linux
  1. Comment créer un Playbook Ansible

  2. Comment passer des variables supplémentaires à un playbook Ansible

  3. Comment installer des packages logiciels avec un playbook Ansible

  4. Comment créer un utilisateur Linux avec Ansible

  5. Comment obtenir le chemin du bureau dans gnome

Comment créer des rôles Ansible et les utiliser dans Playbook

Comment créer et utiliser des faits personnalisés dans Ansible

Comment créer des playbooks Ansible pour l'automatisation informatique

Comment créer et exécuter un fichier Playbook Ansible

Comment j'ai utilisé Ansible pour automatiser les mises à jour à la maison

Comment cloner un référentiel Git avec Ansible