Product SiteDocumentation Site

Глава 24. Установка FreeIPA сервера с помощью Ansible

24.1. Установка FreeIPA с интегрированным DNS, с интегрированным CA в качестве корневого CA
24.2. Установка FreeIPA с внешним DNS, с интегрированным CA в качестве корневого CA
24.3. Удаление сервера FreeIPA
Развертывание управляется ролью ipaclient. По умолчанию роль использует режим автообнаружения для идентификации серверов FreeIPA, домена и других параметров. Роль можно изменить, чтобы playbook Ansible использовал параметры указанные, например, в inventory-файле.

24.1. Установка FreeIPA с интегрированным DNS, с интегрированным CA в качестве корневого CA

В данном разделе приведены параметры для inventory-файла для установки сервера FreeIPA с интегрированным DNS, с интегрированным CA в качестве корневого CA.
В inventory-файле, например, inventory/hosts, необходимо указать:
  1. Полное имя узла (FQDN), который станет сервером FreeIPA. Имя узла должно быть написано строчными буквами. Разрешены только буквенно-цифровые символы и дефисы (-).
  2. Домен FreeIPA и пространство Kerberos (realm).
  3. Параметр ipaserver_setup_dns=yes, чтобы указать, что нужно использовать интегрированный DNS.
  4. Настройки DNS. Можно выбрать один из следующих вариантов:
    • параметр ipaserver_auto_forwarders=yes, чтобы установщик использовал DNS-серверы из настроек сети (из файла /etc/resolv.conf). Не следует использовать этот параметр, если сервер имен, указанный в файле /etc/resolv.conf, содержит адрес localhost 127.0.0.1;
    • параметр ipaserver_forwarders, чтобы вручную указать дополнительные серверы;
    • параметр ipaserver_no_forwarders=yes, чтобы настроить корневые DNS-серверы.
  5. Параметры обратных зон DNS. Можно выбрать один из следующих вариантов:
    • параметр ipaserver_allow_zone_overlap=yes, чтобы разрешить создание (обратной) зоны DNS, даже если зона уже существует;
    • параметр ipaserver_reverse_zones, чтобы вручную указать обратные зоны;
    • параметр ipaserver_no_reverse=yes, чтобы установщик не настраивал обратные зоны.

    Примечание

    Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.
  6. Пароли для администратора FreeIPA и для Directory Manager:
    • рекомендуется использовать Ansible Vault для хранения пароля и напрямую ссылаться на файл Vault из файла playbook, например:
      - name: Playbook to configure IPA server
        hosts: ipaservers
        become: true
        vars_files:
        - playbook_sensitive_data.yml
      
        roles:
        - role: ipaserver
          state: present
      
    • можно указать пароли непосредственно в inventory-файле (менее безопасно, чем предыдущий способ):
      [...]
      [ipaservers:vars]
      ipaadmin_password=12345678
      ipadm_password=12345678
      
      Пример Playbook, который использует principal и пароль из inventory-файла:
      - name: Playbook to configure IPA server
        hosts: ipaservers
        become: true
      
        roles:
        - role: ipaserver
          state: present
      
  7. Параметр ipaserver_no_dnssec_validation=yes, если необходимо выключить DNSSEC (например, если в дальнейшем планируется настраивать доверительные отношения с Active Directory и настраивать сервер пересылки DNS).
  8. Параметр ipaserver_setup_firewalld=no, если не нужно устанавливать межсетевой экран.

Примечание

Установка пакетов по умолчанию включена. Если установка пакетов не требуется, необходимо установить переменную ipaserver_install_packages в значение no.
Пример inventory-файла с необходимой информацией о сервере (включая пароли):
[ipaservers]
ipa.example.test

[ipaservers:vars]
ipaserver_domain=example.test
ipaserver_realm=EXAMPLE.TEST
ipaserver_setup_dns=yes
ipaserver_auto_forwarders=yes
ipaserver_allow_zone_overlap=yes
ipaserver_no_dnssec_validation=yes
ipaadmin_password=12345678
ipadm_password=12345678
ipaserver_setup_firewalld=no

Примечание

Дополнительные параметры, принимаемые ролью ipaserver см. в /usr/share/ansible/roles/ipaserver/README.md.
Пример файла playbook install-server.yml, содержащего инструкции по развертыванию сервера FreeIPA:
---
- name: Playbook to configure IPA server
  hosts: ipaservers
  become: true

  roles:
  - role: ipaserver
    state: present
Здесь:
  • Метод проверки пользователя:
    • строка hosts: ipaservers указывает раздел файла inventory/hosts, где скрипт ansible ищет полные доменные имена узлов, на которых должен быть запущен скрипт ipa-server-install;
    • строка become: true указывает, что скрипт ipa-client-install будет вызываться с правами суперпользователя (root);
    • строка role: ipaserver указывает роль, которая будет установлена на узле (в данном случае это роль сервера FreeIPA);
    • строка state: present указывает, что сервер должен быть установлен, а не удален (absent).
  • Возможность автоматической установки:
    • --unattended, -U — не запрашивать у пользователя информацию.
Установка сервера (уровень детализации указывается с помощью опций -v, -vv или -vvv):
$ ansible-playbook -v -i inventory/hosts install-server.yml
Using /etc/ansible/ansible.cfg as config file

PLAY [Playbook to configure IPA server] **********************************************************

TASK [Gathering Facts] ***************************************************************************
ok: [ipa.example.test]
...
PLAY RECAP ***************************************************************************************
ipa.example.test          : ok=36   changed=20   unreachable=0    failed=0    skipped=37   rescued=0    ignored=0
Если узел, определенный как сервер FreeIPA в inventory-файле, уже настроен, Ansible обнаружит это и проверит, соответствуют ли домен и область ожиданиям inventory-файла. Если домен и область совпадают, модуль успешно завершит работу и сообщит, что он не выполнял никаких изменений (changed=False). Если домен или область не соответствуют параметрам, настройка завершится с ошибкой.