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 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 配置三个不同的身份验证选项:

    • 如果主机上已配置了 /etc/origin/master/htpasswd,则仅指定 openshift_master _identity_providers
    • 指定 openshift_master_identity_providersopenshift_master_htpasswd_file 将本地 htpasswd 文件复制到主机。
    • 指定 openshift_master_identity_providersopenshift_master_htpasswd_users,以在主机上生成新的 htpasswd 文件。

    由于 OpenShift Container Platform 需要哈希密码来配置 HTPasswd 身份验证,因此您可以使用 htpasswd 命令(如以下小结所述)为用户生成哈希密码,或使用用户和相关哈希密码创建平面文件。

    以下示例将身份验证方法从默认 拒绝所有 设置到 htpasswd,并使用指定的文件为 jsmithblob 用户可以生成用户 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 master 服务以应用更改。

您现在已使用 Ansible 修改了 master 和节点配置文件,但这只是一个简单的用例。从此处您可以看到哪些 master节点配置选项 公开给 Ansible,并自定义您自己的 Ansible 清单。

7.4.1. 使用 htpasswd 命令

要将 OpenShift Container Platform 集群配置为使用 HTPasswd 身份验证,您至少需要一个带有哈希密码的用户才能包含在 清单文件中

您可以:

创建用户和散列密码:

  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 身份验证时使用哈希密码。hashed 密码是字符串,位于 : 后面。在上例中,请输入:

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 身份提供程序