Как создавать и использовать пользовательские факты в 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
сохраните и выйдите из файла.
Шаг 3) Запустите playbook на файловых серверах
Мы выполним playbook на файловых серверах, прежде чем запускать его, давайте проверим подключение от управляющего узла к этим узлам.
[root@infoit.com.ua install]$ ansible fileservers -m ping
Вышеуказанное подтверждает, что пинг-понг работает нормально, поэтому давайте запустим доступный playbook, используя следующую команду:
[root@infoit.com.ua install]$ ansible-playbook customfacts-install.yaml
Приведенные выше выходные данные показывают, что playbook успешно выполнен. Проверим установку кастомных фактов и сервиса самбы.
Шаг 4) Проверьте пользовательские локальные факты и службу Samba
Запустите команду ansible ad-hoc, чтобы проверить установку пользовательских фактов,
[root@infoit.com.ua install]$ ansible fileservers -m setup -a "filter=ansible_local"
Проверьте статус службы сервера Samba, выполнив следующие действия:
[root@infoit.com.ua install]$ ansible fileservers -m command -a "systemctl status smb"
Отлично, приведенный выше вывод подтверждает, что Samba была успешно установлена, и ее служба запущена и работает.
Вот и все из этой статьи. Надеюсь, вы получили общее представление об установке пользовательских фактов и ее использовании.