7.4. 使用 Ansible 进行配置更改
对于本节,假设您熟悉 Ansible。
只有一部分可用的主机配置选项会 公开给 Ansible。安装 OpenShift Container Platform 后,Ansible 会使用一些替换的值创建一个清单文件。修改此清单文件并重新运行 Ansible 安装程序 playbook 是为了自定义 OpenShift Container Platform 集群。
虽然 OpenShift Container Platform 支持使用 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 配置三个不同的身份验证选项:-
如果主机上已配置了
/etc/origin/master/htpasswd,则仅指定
。openshift_master
_identity_providers -
指定
openshift_master_identity_providers
和openshift_master_htpasswd_file
将本地 htpasswd 文件复制到主机。 -
指定
openshift_master_identity_providers
和openshift_master_htpasswd_users
,以在主机上生成新的 htpasswd 文件。
由于 OpenShift Container Platform 需要哈希密码来配置 HTPasswd 身份验证,因此您可以使用
htpasswd
命令(如以下小结所述)为用户生成哈希密码,或使用用户和相关哈希密码创建平面文件。以下示例将身份验证方法从默认
拒绝所有
设置到htpasswd
,并使用指定的文件为jsmith
和blob 用户可以生成用户 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 master 服务以应用更改。
您现在已使用 Ansible 修改了 master 和节点配置文件,但这只是一个简单的用例。从此处您可以看到哪些 master 和 节点配置选项 公开给 Ansible,并自定义您自己的 Ansible 清单。
7.4.1. 使用 htpasswd
命令
要将 OpenShift Container Platform 集群配置为使用 HTPasswd 身份验证,您至少需要一个带有哈希密码的用户才能包含在 清单文件中。
您可以:
创建用户和散列密码:
运行以下命令来添加指定用户:
$ 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 身份验证时使用哈希密码。hashed 密码是字符串,位于 :
后面。在上例中,请输入:
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 身份提供程序。