Как создавать и использовать пользовательские факты в Ansible

Как создавать и использовать пользовательские факты в Ansible

 

Пользовательские факты (локальные факты) — это переменные, объявленные на доступном управляемом хосте. Пользовательские факты объявляются в файле ini или json в каталоге /etc/ansible/facts.d на управляемом хосте. Имена файлов пользовательских фактов должны иметь расширение .fact.

В этой статье мы расскажем, как создавать и использовать пользовательские факты для установки файлового сервера samba и запуска его службы на доступном управляемом хосте. Здесь мы используем host1 и host2 как часть группы файловых серверов в инвентаре.

Чтобы продемонстрировать пользовательские факты, ниже представлена ​​моя лабораторная установка.

  • control.example.com — 10.20.0.57
  • host1.example.com — 10.20.0.10 // Ansible Managed Host
  • host3.example.com — 10.20.0.30 // Ansible Managed Hosts

Примечание: пользователь DevOps настроен на доступный контроль и управляемые хосты с правами sudo. Инвентарь и файл ansible.cfg определены в каталоге / home / develop / install . Содержимое моего инвентаря показано ниже:

[root@infoit.com.ua install]$ cat inventory
[fileservers]
host1.example.com
host3.example.com

[dbservers]
host2.example.com
host1.example.com
[root@infoit.com.ua install]$

Логические шаги по объявлению и использованию настраиваемых местных фактов:

  • Создайте файл фактов на узле управления ansible с расширением .fact
  • Создать одну игру в playbook, чтобы создать папку ‘ /etc/ansible/facts.d ‘ и скопируйте файл фактов на управляемых хостах в эту папку.
  • Создайте вторую игру в playbook, которая будет использовать эти пользовательские факты с помощью ansible_local. <fact-filename>. <fact-name>. <variable-name> для установки сервера samba и запуска его службы.

Давайте погрузимся в реальную реализацию обычаев или местных фактов.

Шаг 1) Создайте пользовательский файл фактов на контрольном узле

Создадим файл customfacts.fact со следующим содержимым

[root@infoit.com.ua install]$ cat customfacts.fact
[localfacts]
pkgname = samba
srvc = smb
[root@infoit.com.ua install]$

Здесь localfacts — это имя факта, а имя пакета и srvc — переменные .

Шаг 2) Создайте сборник пьес с двумя разными пьесами

Создайте playbook customfacts-install.yaml со следующим содержимым

[root@infoit.com.ua install]$ vi customfacts-install.yaml
---
- name: Install custom facts
  hosts: fileservers
  vars:
    remote_dir: /etc/ansible/facts.d
    facts_file: customfacts.fact
  tasks:
  - name: Create Facts Dir on Managed Hosts
    file:
      path: "{{ remote_dir }}"
      state: directory
      recurse: yes
  - name: Copy Contents to Facts file
    copy:
      src: "{{ facts_file }}"
      dest: "{{ remote_dir }}"

- name: Install Samba Server with Custom Facts
  hosts: fileservers
  tasks:
  - name: Install SMB
    package:
      name: "{{ ansible_local.customfacts.localfacts.pkgname }}"
      state: present
  - name: Start SMB Service
    service:
      name: "{{ ansible_local.customfacts.localfacts.srvc }}"
      state: started
      enabled: yes

сохраните и выйдите из файла.

Как создавать и использовать пользовательские факты в Ansible

Шаг 3) Запустите playbook на файловых серверах

Мы выполним playbook на файловых серверах, прежде чем запускать его, давайте проверим подключение от управляющего узла к этим узлам.

[root@infoit.com.ua install]$ ansible fileservers -m ping

Как создавать и использовать пользовательские факты в Ansible

Вышеуказанное подтверждает, что пинг-понг работает нормально, поэтому давайте запустим доступный playbook, используя следующую команду:

[root@infoit.com.ua install]$ ansible-playbook customfacts-install.yaml

Как создавать и использовать пользовательские факты в Ansible

Приведенные выше выходные данные показывают, что playbook успешно выполнен. Проверим установку кастомных фактов и сервиса самбы.

Шаг 4) Проверьте пользовательские локальные факты и службу Samba

Запустите команду ansible ad-hoc, чтобы проверить установку пользовательских фактов,

[root@infoit.com.ua install]$ ansible fileservers -m setup -a "filter=ansible_local"

Как создавать и использовать пользовательские факты в Ansible 3

Проверьте статус службы сервера Samba, выполнив следующие действия:

[root@infoit.com.ua install]$ ansible fileservers -m command -a "systemctl status smb"

Как создавать и использовать пользовательские факты в Ansible 4

Отлично, приведенный выше вывод подтверждает, что Samba была успешно установлена, и ее служба запущена и работает.

Вот и все из этой статьи. Надеюсь, вы получили общее представление об установке пользовательских фактов и ее использовании.