Как добавить недостающую часть к Ansible playbook?

Конечная цель – формирование файла на управляющей машине с данными об удаленных машинах, их IP-адресах, хостнеймах, и установленных пакетах с версией. Как можно доработать playbook, чтобы эту задачу успешно выполнить?
  • 27 мая 2024 г. 14:11
Ответы на вопрос 2
Для добавления недостающей части к Ansible playbook, чтобы собрать данные об удаленных машинах, их IP-адресах, хостнеймах, и установленных пакетах с версией, нам потребуется использовать Ansible модули и факты.

Ниже приведен пример Ansible playbook, который собирает указанную информацию:

```yaml
---
- hosts: all
  tasks:
    - name: Получить IP-адрес удаленной машины
      debug:
        msg: "IP-адрес {{ ansible_host }}"

    - name: Получить хостнейм удаленной машины
      debug:
        msg: "Хостнейм {{ ansible_hostname }}"

    - name: Получить установленные пакеты с версией
      debug:
        msg: "Пакеты {{ ansible_facts.packages }}"

```

В этом примере используются встроенные переменные Ansible (ansible_host для IP-адреса, ansible_hostname для хостнейма) и факты (ansible_facts.packages для списка установленных пакетов с версией).

После запуска данного playbook на управляющей машине будет отображена информация об IP-адресе, хостнейме и установленных пакетах для каждой удаленной машины, указанной в инвентаре.

Дополнительно, можно использовать другие модули Ansible, такие как command, shell или setup для выполнения команд на удаленных машинах и получения различной информации о них.
---
- name: Gather system information and save locally
  hosts: vs-kv-web-px01
  gather_facts: yes

  tasks:
    - name: Get installed package version (example package)
      #command: dpkg -s nginx | grep '^Version:'  # Adjust based on your package manager
      command: dpkg -l 
      register: package_version
      changed_when: false

    - name: Save information to local file
      local_action:
        module: copy
        content: |
          Hostname: {{ ansible_hostname }}
          IP Address: {{ ansible_default_ipv4.address }}
          Installed Package Version: {{ package_version.stdout }}
        dest: "/tmp/{{ ansible_hostname }}_info.txt"
      run_once: true
Похожие вопросы