freeipa_server

freeipa_server

Эта роль устанавливает и настраивает сервер FreeIPA в соответствии с вашими потребностями.

Этот плейбук отвечает за инициализацию административного пользователя Kerberos (имя пользователя: admin, пароль — тот, который вы устанавливаете в freeipa_server_admin_password).

В сочетании с freeipa (Github) возможно (и протестировано) использовать freeipa_server с последней версией FreeIPA на Ubuntu >= 18.04 (ознакомьтесь с разделом примеров).

Не поддерживает Ubuntu 20.04

В Ubuntu 20.04 нет пакета freeipa-server.

Требования

Для этой роли требуется Ansible 2.5.0 или выше.

Вы можете установить (и указать) стабильную версию с помощью pip:

pip install ansible==2.7.7

Все платформенные требования указаны в файле метаданных.

Установка

ansible-galaxy install timorunge.freeipa_server

Переменные роли

Необходимо установить следующие переменные, чтобы эта роль заработала (без настроек). Эти переменные не имеют значений по умолчанию:

# Пароль администратора Kerberos — не менее 8 символов
# Тип: строка
freeipa_server_admin_password: Passw0rd
# Основной DNS домен для развертывания IPA
# Тип: строка
freeipa_server_domain: example.com
# Пароль Директора — не менее 8 символов
# Тип: строка
freeipa_server_ds_password: Passw0rd
# Имя хоста этой машины (FQDN)
# Тип: строка
freeipa_server_fqdn: ipa.example.com
# IP-адрес главного сервера
# Тип: строка
freeipa_server_ip: 172.20.0.2
# Имя Kerberos realm для развертывания IPA
# Тип: строка
freeipa_server_realm: EXAMPLE.COM

Другие переменные, которые можно передать этой роли, и их краткое описание:

# Включить/Выключить управление репозиторием RedHat epel
# Тип: логическое
freeipa_server_enable_epel_repo: true

# Автоматически установить запись в /etc/hosts
# Тип: логическое
freeipa_server_manage_host: true

# Выбрать тип установки сервера FreeIPA (master/replica)
# Тип: строка
freeipa_server_type: master

# FQDN главного сервера FreeIPA
# Тип: строка
freeipa_server_master_fqdn: ''

# Основная команда для установки FreeIPA
# Тип: строка
freeipa_server_install_base_command: ipa-{{ 'server' if freeipa_server_type == 'master' else 'replica' }}-install --unattended {{ '--server=' + freeipa_server_master_fqdn if freeipa_server_type == 'replica' }}

# Параметры установки FreeIPA по умолчанию
# Тип: список
freeipa_server_install_options:
  - "--realm={{ freeipa_server_realm }}"
  - "--domain={{ freeipa_server_domain }}"
  - "--setup-dns"
  - "--ds-password={{ freeipa_server_ds_password }}"
  - "--admin-password={{ freeipa_server_admin_password }}"
  - "--mkhomedir"
  - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
  - "--ip-address={{ freeipa_server_ip }}"
  - "--no-host-dns"
  - "--no-ntp"
  - "--idstart=5000"
  - "--ssh-trust-dns"
  - "--forwarder=8.8.8.8"
  - "--auto-forwarders"

Примеры

Чтобы сделать документ более компактным, параметры установки сокращены. Вы можете найти параметры установки либо в этом документе, либо в онлайн-руководстве для ipa-server-install.

1) Установить сервер FreeIPA в качестве мастера с настройками по умолчанию

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-master.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

2) Установить сервер FreeIPA в качестве реплики с настройками по умолчанию

- hosts: freeipa-server
  vars:
    freeipa_server_type: replica
    freeipa_server_master_fqdn: ipa-master.example.com
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-replica.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

3) Установить сервер FreeIPA и автоматически включить его на всех (IPv4) сетевых интерфейсах

Вы все равно должны установить freeipa_server_ip, если хотите использовать freeipa_server_manage_host.

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--ip-address={{ ansible_all_ipv4_addresses | join(' --ip-address=') }}"
  roles:
    - timorunge.freeipa_server

4) Установить сервер FreeIPA с пользовательскими параметрами установки

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--realm={{ freeipa_server_realm }}"
      - "--domain={{ freeipa_server_domain }}"
      - "--setup-dns"
      - "--ds-password {{ freeipa_server_ds_password }}"
      - "--admin-password {{ freeipa_server_admin_password }}"
      - "--mkhomedir"
      - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
      - "--ip-address={{ freeipa_server_ip }}"
      - "--ip-address=10.0.0.2"
      - "--ip-address=192.168.20.2"
      - "--no-host-dns"
      - "--no-ntp"
      - "--idstart=5000"
      - "--ssh-trust-dns"
      - "--forwarder=8.8.8.8"
      - "--auto-forwarders"
      - "--no-ui-redirect"
      - "--no-ssh"
      - "--no-sshd"
  roles:
    - timorunge.freeipa_server

Опции установки сервера FreeIPA

Обзор опций установки для ipa-server-install (4.6.4).

Использование: ipa-server-install [опции]

Опции:
  --version             показать номер версии программы и выйти
  -h, --help            показать это справочное сообщение и выйти
  -U, --unattended      незамедлительное (не)установка никогда не запрашивает у пользователя
  --uninstall           удалить существующую установку. Удаление можно
                        выполнить с помощью опции --unattended

  Основные опции:
    -p DM_PASSWORD, --ds-password=DM_PASSWORD
                        Пароль Директора
    -a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
                        пароль администратора Kerberos
    --ip-address=IP_ADDRESS
                        IP-адрес главного сервера. Эта опция может использоваться
                        несколько раз
    -n DOMAIN_NAME, --domain=DOMAIN_NAME
                        основной DNS домен для развертывания IPA (не
                        обязательно связанный с текущим именем хоста)
    -r REALM_NAME, --realm=REALM_NAME
                        имя Kerberos realm для развертывания IPA (обычно это
                        имя в верхнем регистре основного DNS домена)
    --hostname=HOST_NAME
                        полностью квалифицированное имя этого хоста
    --ca-cert-file=FILE
                        Файл, содержащий сертификаты CA для файлов
                        сервисных сертификатов
    --no-host-dns       Не использовать DNS для поиска имени хоста во время установки

  Опции сервера:
    --setup-adtrust     настроить возможность доверия AD
    --setup-kra         настроить dogtag KRA
    --setup-dns         настроить bind с нашей зоной
    --idstart=IDSTART   Начальное значение для диапазона ID (по умолчанию случайное)
    --idmax=IDMAX       Максимальное значение для диапазона ID (по умолчанию:
                        idstart+199999)
    --no-hbac-allow     Не устанавливать правило HBAC allow_all
    --no-pkinit         отключить шаги настройки pkinit
    --no-ui-redirect    Не перенаправлять автоматически на веб-интерфейс
    --dirsrv-config-file=FILE
                        Путь к файлу LDIF, который будет использоваться для изменения
                        конфигурации dse.ldif во время установки инстанса
                        сервера директории

  Опции сертификата SSL:
    --dirsrv-cert-file=FILE
                        Файл, содержащий SSL сертификат сервера директории
                        и закрытый ключ
    --http-cert-file=FILE
                        Файл, содержащий SSL сертификат Apache сервера и
                        закрытый ключ
    --pkinit-cert-file=FILE
                        Файл, содержащий SSL сертификат Kerberos KDC и
                        закрытый ключ
    --dirsrv-pin=PIN    Пароль для разблокировки закрытого
                        ключа сервера директории
    --http-pin=PIN      Пароль для разблокировки закрытого ключа
                        Apache сервера
    --pkinit-pin=PIN    Пароль для разблокировки закрытого ключа
                        Kerberos KDC
    --dirsrv-cert-name=NAME
                        Имя SSL сертификата сервера директории для
                        установки
    --http-cert-name=NAME
                        Имя SSL сертификата Apache сервера для установки
    --pkinit-cert-name=NAME
                        Имя SSL сертификата Kerberos KDC для установки

  Клиентские опции:
    --mkhomedir         создать домашние директории для пользователей при их первом входе
    -N, --no-ntp        не настраивать ntp
    --ssh-trust-dns     настроить клиента OpenSSH на доверие записям DNS SSHFP
    --no-ssh            не настраивать клиента OpenSSH
    --no-sshd           не настраивать сервер OpenSSH
    --no-dns-sshfp      не создавать автоматически записи DNS SSHFP

  Опции сертификатной системы:
    --external-ca       Генерировать CSR для сертификата CA IPA, который будет подписан
                        внешним CA
    --external-ca-type={generic,ms-cs}
                        Тип внешнего CA
    --external-ca-profile=EXTERNAL_CA_PROFILE
                        Указать профиль/шаблон сертификата для использования
                        у внешнего CA
    --external-cert-file=FILE
                        Файл, содержащий сертификат CA IPA и цепочку сертификатов
                        внешнего CA
    --subject-base=SUBJECT_BASE
                        Базовый субъект сертификата (по умолчанию O=<realm-name>).
                        RDN в порядке LDAP (самый специфичный RDN первым).
    --ca-subject=CA_SUBJECT
                        Указание DN субъекта сертификата CA (по умолчанию CN=Certificate
                        Authority,O=<realm-name>). RDN в порядке LDAP
                        (самый специфичный RDN первым).
    --ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
                        Алгоритм подписи сертификата CA IPA

  Опции DNS:
    --allow-zone-overlap
                        Создать DNS зону, даже если она уже существует
    --reverse-zone=REVERSE_ZONE
                        Обратная DNS зона для использования. Эта опция может использоваться
                        несколько раз
    --no-reverse        Не создавать новую обратную DNS зону
    --auto-reverse      Создать необходимые обратные зоны
    --zonemgr=ZONEMGR   E-mail адрес менеджера DNS зоны. По умолчанию
                        hostmaster@DOMAIN
    --forwarder=FORWARDERS
                        Добавить DNS ретранслятор. Эта опция может использоваться несколько
                        раз
    --no-forwarders     Не добавлять никаких DNS ретрансляторов, использовать корневые серверы
                        вместо этого
    --auto-forwarders   Использовать DNS ретрансляторы, настроенные в /etc/resolv.conf
    --forward-policy={first,only}
                        Политика пересылки DNS для глобальных ретрансляторов
    --no-dnssec-validation
                        Отключить валидацию DNSSEC

  Опции доверия AD:
    --enable-compat     Включить поддержку доверенных доменов для старых клиентов
    --netbios-name=NETBIOS_NAME
                        Имя NetBIOS домена IPA
    --rid-base=RID_BASE
                        Начальное значение для сопоставления UID и GID с RID
    --secondary-rid-base=SECONDARY_RID_BASE
                        Начальное значение для вторичного диапазона для сопоставления UID
                        и GID с RID

  Опции удаления:
    --ignore-topology-disconnect
                        не проверять, отключает ли удаление сервера топологию (уровень домена 1+)
    --ignore-last-of-role
                        не проверять, удаляет ли удаление сервера последний
                        CA/DNS сервер или мастер DNSSec (уровень домена 1+)

  Опции ведения журнала и вывода:
    -v, --verbose       выводить отладочную информацию
    -d, --debug         алиас для --verbose (устарело)
    -q, --quiet         выводить только ошибки
    --log-file=FILE     записывать в указанный файл

Тестирование

Статус сборки

Тестирование проводится с помощью Vagrant (установка Vagrant) который разворачивает следующие виртуальные машины:

  • EL
    • 7
  • Fedora
    • 26
    • 27
  • Ubuntu
    • 16.04 LTS (Xenial Xerus)
    • 17.10 (Artful Aardvark)
    • 18.04 LTS (Bionic Beaver)

На всех виртуальных машинах установлена последняя стабильная версия Ansible, и применяется тестовый плейбук локально.

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

# Тестирование на всех доступных машинах vagrant:
# Это займет некоторое время. Заварите кофе. Или два. Или сорок два.
cd tests
vagrant up --parallel && vagrant halt
for h in $(vagrant global-status --prune | grep freeipa_server | awk '{print $2}') ; do echo ${h} ; vagrant up --provision ${h} ; vagrant ssh ${h} -c "sudo /vagrant/vagrant-entrypoint.sh" && (echo "$(date): ${h}: pass" >> tests/results.log) || (echo "$(date): ${h}: fail" >> tests/results.log) ; vagrant halt ${h} ; done
vagrant destroy -f

Если Vagrant не может смонтировать каталоги, убедитесь, что вы установили Дополнения гостя VirtualBox.

Тесты Travis выполняются с помощью Docker и docker_test_runner. Тесты на Travis выполняют линтинги и проверки синтаксиса.

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

# Локальное тестирование:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml

Безопасность

Этот плейбук не отвечает за обеспечение безопасности сервера FreeIPA, что можно сделать, например, с помощью firewalld или iptables.

В зависимости от вашей конфигурации вам нужно открыть следующие порты:

TCP порты:

  • 80, 443: HTTP/HTTPS
  • 389, 636: LDAP/LDAPS
  • 88, 464: kerberos
  • 53: bind

UDP порты:

  • 88, 464: kerberos
  • 53: bind

Резервное копирование

Убедитесь, что вы сделали резервную копию сертификатов CA, хранящихся в /root/cacert.p12. Эти файлы необходимы для создания реплик. Пароль для этих файлов — это пароль Директора (freeipa_server_ds_password).

На FreeIPA также есть общая страница Резервное копирование и восстановление, которая охватывает наиболее важные темы.

Существует роль Ansible, которая выполняет некоторые основные резервные копии: Резервное копирование сервера FreeIPA (Репозиторий Github).

Зависимости

Отсутствуют.

Лицензия

Лицензия BSD 3-Clause "New" или "Revised"

Информация об авторе

  • Тимо Рунге
О проекте

FreeIPA Identity Management Server provisioning.

Установить
ansible-galaxy install timorunge/ansible-freeipa-server
Лицензия
bsd-3-clause
Загрузки
12457
Владелец