Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

7.4. Ansible を使用した設定の変更

このセクションは、Ansible に精通していることを前提に説明を行います。

Ansible に公開 されているのは、利用可能なホスト設定オプションの一部のみです。OpenShift Container Platform のインストール後、Ansible は インベントリーファイルを置き換えられた値で作成します。このインベントリーファイルを変更し、Ansible インストーラー Playbook を再実行することで、OpenShift Container Platform クラスターをカスタマイズできます。

OpenShift Container Platform は Ansible をクラスターインストールで使用することに対応していますが、Ansible Playbook とインベントリーファイルを使うことで、PuppetChefSalt などの他の管理ツールを使用することもできます。

ユースケース: HTPasswd 認証を使用するようにクラスターを設定する

注記
  • このユースケースは、Playbook で参照されているすべてのノードに SSH キー がセットアップされていることを前提としています。
  • htpasswd ユーティリティーは httpd-tools パッケージにあります。

    # yum install httpd-tools

Ansible インベントリーを変更し、設定の変更を行うには、以下を実行します。

  1. ./hosts インベントリーファイルを開きます。
  2. 新規の変数をファイルの [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_providersopenshift_master_htpasswd_file の両方を指定します。
    • ホストで新規 htpasswd ファイルを生成するには、 openshift_master_identity_providersopenshift_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
  3. 変更を有効にするために、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 名以上のユーザーを インベントリーファイル に追加する必要があります。

以下を行うことができます。

ユーザーおよびハッシュ化されたパスワードを作成するには、以下を実行します。

  1. 以下のコマンドを実行して指定されたユーザーを追加します。

    $ htpasswd -n <user_name>
    注記

    -b オプションを追加すると、パスワードをコマンドラインに指定できます。

    $ htpasswd -nb <user_name> <password>
  2. ユーザーのクリアテキストのパスワードを入力し、確定します。

    以下に例を示します。

    $ htpasswd -n myuser
    New password:
    Re-type new password:
    myuser:$apr1$vdW.cI3j$WSKIOzUPs6Q

    コマンドにより、ハッシュされたバージョンのパスワードが生成されます。

これで、HTPasswd 認証 を設定する際にハッシュ化パスワードを使用できます。ハッシュ化パスワードは、: の後に続く文字列です。上記の例では、次を入力します。

openshift_master_htpasswd_users={'myuser': '$apr1$wIwXkFLI$bAygtISk2eKGmqaJftB'}

ユーザー名とハッシュ化パスワードを持つフラットファイルを作成するには、以下を実行します。

  1. 以下のコマンドを実行します。

    $ htpasswd -c /etc/origin/master/htpasswd <user_name>
    注記

    -b オプションを追加すると、パスワードをコマンドラインに指定できます。

    $ htpasswd -c -b <user_name> <password>
  2. ユーザーのクリアテキストのパスワードを入力し、確定します。

    以下に例を示します。

    htpasswd -c /etc/origin/master/htpasswd user1
    New password:
    Re-type new password:
    Adding password for user user1

    このコマンドは、ユーザー名とユーザーパスワードのハッシュ化されたバージョンを含むファイルを生成します。

これで、HTPasswd 認証 を設定する際にこのパスワードファイルを使用できます。

注記

htpasswd コマンドについての詳細は、HTPasswd Identity Provider を参照してください。