timorunge.freeipa_server
freeipa_server
このロールは、あなたのニーズに応じてFreeIPAサーバーをインストールおよび設定します。
このプレイブックは、Kerberos管理ユーザー(ユーザー名: admin
、パスワードはfreeipa_server_admin_password
で設定するもの)の初期化を行います。
freeipa
と組み合わせることで、最新のFreeIPAをUbuntu 18.04以上で使用することが可能(テスト済み)です。詳細は例のセクションを参照してください。
Ubuntu 20.04をサポートしていません
Ubuntu 20.04にはfreeipa-serverパッケージがありません。
要件
このロールにはAnsible 2.5.0以上が必要です。
以下のコマンドを使用して、安定したバージョンをインストール(および定義)できます:
pip install ansible==2.7.7
すべてのプラットフォーム要件はメタデータファイルにリストされています。
インストール
ansible-galaxy install timorunge.freeipa_server
ロール変数
このロールを実行するためには、以下の変数を設定する必要があります(カスタマイズなしで)。これらの変数にはデフォルト値はありません:
# 管理者ユーザーのKerberosパスワード - 最低8文字
# タイプ: 文字列
freeipa_server_admin_password: Passw0rd
# IPAの展開の主DNSドメイン
# タイプ: 文字列
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
# IPAの展開のKerberosレルム名
# タイプ: 文字列
freeipa_server_realm: EXAMPLE.COM
このロールに渡すことができる変数とそれに関する簡単な説明は以下の通りです。(すべての変数についてはdefaults/main.ymlを参照してください)
# RedHatのepelリポジトリの管理を有効にする/無効にする
# タイプ: 真偽値
freeipa_server_enable_epel_repo: true
# /etc/hostsにエントリーを自動的に設定する
# タイプ: 真偽値
freeipa_server_manage_host: true
# FreeIPAサーバーのインストールタイプの選択(マスター/レプリカ)
# タイプ: 文字列
freeipa_server_type: master
# マスターFreeIPAサーバーのFQDN
# タイプ: 文字列
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"
例
ドキュメントを簡潔に保つために、インストールオプションは省略されています。インストールオプションは、このドキュメントまたはオンラインマニュアルで見つけることができます。
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_manage_host
を使用する場合は、freeipa_server_ip
を設定してください。
- 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)。
Usage: ipa-server-install [options]
Options:
--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
IPA展開の主DNSドメイン(現在のホスト名に必ずしも関連しているわけではありません)
-r REALM_NAME, --realm=REALM_NAME
IPA展開のKerberosレルム名(通常、主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 allow_all HBACルールをインストールしない
--no-pkinit pkinit設定ステップを無効にする
--no-ui-redirect Web UIに自動的にリダイレクトしない
--dirsrv-config-file=FILE
ディレクトリサーバーインスタンスのインストール中にdse.ldifの設定を変更するために使用されるLDIFファイルへのパス
SSL証明書オプション:
--dirsrv-cert-file=FILE
ディレクトリサーバーSSL証明書と秘密鍵を含むファイル
--http-cert-file=FILE
ApacheサーバーSSL証明書と秘密鍵を含むファイル
--pkinit-cert-file=FILE
Kerberos KDC SSL証明書と秘密鍵を含むファイル
--dirsrv-pin=PIN ディレクトリサーバー秘密鍵のロックを解除するためのパスワード
--http-pin=PIN Apacheサーバー秘密鍵のロックを解除するためのパスワード
--pkinit-pin=PIN Kerberos KDC秘密鍵のロックを解除するためのパスワード
--dirsrv-cert-name=NAME
インストールするディレクトリサーバーSSL証明書の名前
--http-cert-name=NAME
インストールするApacheサーバーSSL証明書の名前
--pkinit-cert-name=NAME
インストールするKerberos KDC SSL証明書の名前
クライアントオプション:
--mkhomedir ユーザーが最初にログインしたときにホームディレクトリを作成する
-N, --no-ntp NTPを設定しない
--ssh-trust-dns OpenSSHクライアントをDNS SSHFPレコードを信頼するように設定する
--no-ssh OpenSSHクライアントを設定しない
--no-sshd OpenSSHサーバーを設定しない
--no-dns-sshfp DNS SSHFPレコードを自動的に作成しない
証明書システムオプション:
--external-ca IPA CA証明書を外部CAによって署名するためのCSRを生成する
--external-ca-type={generic,ms-cs}
外部CAのタイプ
--external-ca-profile=EXTERNAL_CA_PROFILE
外部CAで使用する証明書プロファイル/テンプレートを指定する
--external-cert-file=FILE
IPA CA証明書と外部CA証明書チェインを含むファイル
--subject-base=SUBJECT_BASE
証明書のサブジェクトベース(デフォルト O=<realm-name>)。RDNはLDAP順(最も特定的なRDNが最初)です。
--ca-subject=CA_SUBJECT
CA証明書サブジェクトDN(デフォルト CN=Certificate Authority,O=<realm-name>)。RDNはLDAP順(最も特定的なRDNが最初)です。
--ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
IPA CA証明書の署名アルゴリズム
DNSオプション:
--allow-zone-overlap
ゾーンが既に存在する場合でもDNSゾーンを作成します
--reverse-zone=REVERSE_ZONE
使用する逆DNSゾーン。このオプションは複数回使用できます
--no-reverse 新しい逆DNSゾーンを作成しない
--auto-reverse 必要な逆ゾーンを作成する
--zonemgr=ZONEMGR DNSゾーンマネージャーのメールアドレス。デフォルトはhostmaster@DOMAIN
--forwarder=FORWARDERS
DNSフォワーダーを追加する。このオプションは複数回使用できます
--no-forwarders DNSフォワーダーを追加せず、代わりにルートサーバーを使用します
--auto-forwarders /etc/resolv.confで設定されたDNSフォワーダーを使用します
--forward-policy={first,only}
グローバルフォワーダー用のDNS転送ポリシー
--no-dnssec-validation
DNSSEC検証を無効にする
ADトラストオプション:
--enable-compat 古いクライアントのための信頼ドメインのサポートを有効にする
--netbios-name=NETBIOS_NAME
IPAドメインのNetBIOS名
--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マシンでテスト中:
# これは少し時間がかかります。コーヒーでもどうぞ。もしくは二杯。あるいは42杯でも。
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 Guest Additionsをインストールしていることを確認する必要があります。
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
バックアップ
/root/cacert.p12に保存されているCA証明書を必ずバックアップしてください。これらのファイルはレプリカを作成するために必要です。これらのファイルのパスワードはディレクトリマネージャー(freeipa_server_ds_password
)のパスワードです。
FreeIPAでは、一般的なバックアップと復元ページもあり、最も重要なトピックがカバーされています。
基本的なバックアップを行うAnsibleロールもあります:FreeIPA Server Backup(Githubリポジトリ)。
依存関係
なし
ライセンス
著者情報
- ティモ・ルンゲ