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