7.4. Ansible を使用した設定の変更
このセクションは、Ansible に精通していることを前提に説明を行います。
Ansible に公開 されているのは、利用可能なホスト設定オプションの一部のみです。OpenShift Container Platform のインストール後、Ansible は インベントリーファイルを置き換えられた値で作成します。このインベントリーファイルを変更し、Ansible インストーラー Playbook を再実行することで、OpenShift Container Platform クラスターをカスタマイズできます。
OpenShift Container Platform は Ansible をクラスターインストールで使用することに対応していますが、Ansible Playbook とインベントリーファイルを使うことで、Puppet、Chef、Salt などの他の管理ツールを使用することもできます。
ユースケース: HTPasswd 認証を使用するようにクラスターを設定する
- このユースケースは、Playbook で参照されているすべてのノードに SSH キー がセットアップされていることを前提としています。
htpasswd
ユーティリティーはhttpd-tools
パッケージにあります。# yum install httpd-tools
Ansible インベントリーを変更し、設定の変更を行うには、以下を実行します。
- ./hosts インベントリーファイルを開きます。
新規の変数をファイルの
[OSEv3:vars]
セクションに追加します。# htpasswd auth openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] # Defining htpasswd users #openshift_master_htpasswd_users={'<name>': '<hashed-password>', '<name>': '<hashed-password>'} # or #openshift_master_htpasswd_file=/etc/origin/master/htpasswd
HTPasswd 認証の場合、
openshift_master_identity_providers
変数はその認証タイプを有効にします。HTPasswd を使用する 3 つの異なる認証オプションを設定できます。-
/etc/origin/master/htpasswd
がすでに設定されており、ホスト上にある場合には、openshift_master_identity_providers
のみを指定します。 -
ローカル htpasswd ファイルをホストにコピーするには、
openshift_master_identity_providers
とopenshift_master_htpasswd_file
の両方を指定します。 -
ホストで新規 htpasswd ファイルを生成するには、
openshift_master_identity_providers
とopenshift_master_htpasswd_users
の両方を指定します。
OpenShift Container Platform は、HTPasswd 認証を設定するためにハッシュ化されたパスワードを必要とします。
以下のセクションに示されるように
htpasswd コマンドを使用してユーザー用のハッシュ化されたパスワードを生成するか、またはユーザーおよび関連付けられたハッシュ化されたパスワードを持つフラットファイルを作成することができます。以下の例では、認証方法をデフォルトの
deny all
設定からhtpasswd
に変更し、指定されたファイルを使ってjsmith
およびbloblaw
ユーザーのユーザー ID とパスワードを生成します。# htpasswd auth openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] # Defining htpasswd users openshift_master_htpasswd_users={'jsmith': '$apr1$wIwXkFLI$bAygtKGmPOqaJftB', 'bloblaw': '7IRJ$2ODmeLoxf4I6sUEKfiA$2aDJqLJe'} # or #openshift_master_htpasswd_file=/etc/origin/master/htpasswd
-
変更を有効にするために、Ansible Playbook を再実行します。
$ ansible-playbook -b -i ./hosts ~/src/openshift-ansible/playbooks/deploy_cluster.yml
Playbook が設定を更新し、OpenShift Container Platform マスターサービスを再起動して変更を適用します。
これで、Ansible を使用したマスターとノードの設定ファイルの変更が完了しました。ここまでは単純なユースケースですが、次は、どの マスター と ノードの設定 オプションが Ansible に公開 されているかを確認し、各自の Ansible インベントリーをカスタマイズします。
7.4.1. htpasswd
コマンドの使用
OpenShift Container Platform クラスターを HTPasswd 認証を使用するように設定するには、ハッシュ化されたパスワードを持つ 1 名以上のユーザーを インベントリーファイル に追加する必要があります。
以下を行うことができます。
- ユーザー名とパスワードを生成 して ./hosts インベントリーファイルに直接追加する。
- フラットファイルを作成 して認証情報を ./hosts インベントリーファイルに渡す。
ユーザーおよびハッシュ化されたパスワードを作成するには、以下を実行します。
以下のコマンドを実行して指定されたユーザーを追加します。
$ htpasswd -n <user_name>
注記-b
オプションを追加すると、パスワードをコマンドラインに指定できます。$ htpasswd -nb <user_name> <password>
ユーザーのクリアテキストのパスワードを入力し、確定します。
以下に例を示します。
$ htpasswd -n myuser New password: Re-type new password: myuser:$apr1$vdW.cI3j$WSKIOzUPs6Q
コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
これで、HTPasswd 認証 を設定する際にハッシュ化パスワードを使用できます。ハッシュ化パスワードは、:
の後に続く文字列です。上記の例では、次を入力します。
openshift_master_htpasswd_users={'myuser': '$apr1$wIwXkFLI$bAygtISk2eKGmqaJftB'}
ユーザー名とハッシュ化パスワードを持つフラットファイルを作成するには、以下を実行します。
以下のコマンドを実行します。
$ htpasswd -c /etc/origin/master/htpasswd <user_name>
注記-b
オプションを追加すると、パスワードをコマンドラインに指定できます。$ htpasswd -c -b <user_name> <password>
ユーザーのクリアテキストのパスワードを入力し、確定します。
以下に例を示します。
htpasswd -c /etc/origin/master/htpasswd user1 New password: Re-type new password: Adding password for user user1
このコマンドは、ユーザー名とユーザーパスワードのハッシュ化されたバージョンを含むファイルを生成します。
これで、HTPasswd 認証 を設定する際にこのパスワードファイルを使用できます。
htpasswd
コマンドについての詳細は、HTPasswd Identity Provider を参照してください。