GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo crear el libro de jugadas de Ansible para obtener versiones del sistema operativo de los hosts remotos?

Utilice una de las siguientes expresiones Jinja2:

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

donde:

  • hostvars y ansible_... están integrados y recopilados automáticamente por Ansible
  • ansible_distribution ¿El host está siendo procesado por Ansible?

Por ejemplo, suponiendo que está ejecutando el rol de Ansible test_role contra el host host.example.com ejecutando una distribución de 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 }}"

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

De forma estructurada:

- 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 archivo separado por comas llamado os.csv en la carpeta de ejecución. Puede usar cualquier variable que desee editar line: .


Linux
  1. Cómo crear un libro de jugadas de Ansible

  2. Cómo pasar variables adicionales a un libro de jugadas de Ansible

  3. Cómo instalar paquetes de software con un playbook de Ansible

  4. Cómo crear un usuario de Linux usando Ansible

  5. Cómo obtener la ruta de Desktop en gnome

Cómo crear roles de Ansible y usarlos en Playbook

Cómo crear y usar datos personalizados en Ansible

Cómo crear playbooks de Ansible para la automatización de TI

Cómo crear y ejecutar un archivo de libro de jugadas de Ansible

Cómo utilicé Ansible para automatizar las actualizaciones en casa

Cómo clonar un repositorio Git con Ansible