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     指定されたファイルにログを記録する

テスト

Build Status

テストはVagrantVagrantのインストール)を使用して行われ、その後、以下の仮想マシンが立ち上がります:

  • 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のテストはDockerdocker_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サーバーのセキュリティを考慮していません。セキュリティは、firewalldiptablesを使用して行うことができます。

設定に応じて、以下のポートを開放する必要があります:

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 BackupGithubリポジトリ)。

依存関係

なし

ライセンス

BSD 3条項 "新" または "改訂" ライセンス

著者情報

  • ティモ・ルンゲ
プロジェクトについて

FreeIPA Identity Management Server provisioning.

インストール
ansible-galaxy install timorunge.freeipa_server
ライセンス
bsd-3-clause
ダウンロード
12.5k
所有者