第 13 章 使用 director Operator 更改服务帐户密码

Red Hat OpenStack Platform (RHOSP)服务和它们使用的数据库通过其身份服务(keystone)凭证进行身份验证。Identity 服务在初始 RHOSP 部署过程过程中生成这些 RHOSP 密码。您可能需要定期更新密码以进行威胁缓解或安全合规。您可以使用 director Operator (OSPdO)的原生工具在部署 RHOSP 环境后更改许多生成的密码。

13.1. 使用 director Operator 轮转 overcloud 服务帐户密码

您可以轮转与部署 Red Hat OpenStack Platform (RHOSP)环境的 director Operator (OSPdO)使用的 overcloud 服务帐户密码。

流程

  1. 创建当前 tripleo-passwords secret 的备份:

    $ oc get secret tripleo-passwords -n openstack -o yaml > tripleo-passwords_backup.yaml
  2. 创建名为 tripleo-overcloud-passwords_preserve_list 的纯文本文件,以指定以下服务的密码不应轮转:

    parameter_defaults
    BarbicanSimpleCryptoKek
    KeystoneCredential0
    KeystoneCredential1
    KeystoneFernetKey0
    KeystoneFernetKey1
    KeystoneFernetKeys
    CephClientKey
    CephClusterFSID
    CephManilaClientKey
    CephRgwKey
    HeatAuthEncryptionKey
    MysqlClustercheckPassword
    MysqlMariabackupPassword
    PacemakerRemoteAuthkey
    PcsdPassword

    如果有要保留密码的其他服务,您可以在此列表中添加其他服务。

  3. 创建一个密码参数文件 tripleo-overcloud-passwords.yaml,它列出了不应修改的密码:

    $ oc get secret tripleo-passwords -n openstack \
    -o jsonpath='{.data.tripleo-overcloud-passwords\.yaml}' \
    | base64 -d | grep -f ./tripleo-overcloud-passwords_preserve_list > tripleo-overcloud-passwords.yaml
  4. 验证 tripleo-overcloud-passwords.yaml 文件包含您不想轮转的密码。
  5. 更新 tripleo-password secret:

    $ oc create secret generic tripleo-passwords -n openstack \
    --from-file=./tripleo-overcloud-passwords.yaml \
    --dry-run=client -o yaml | oc apply -f -
  6. 创建 Ansible playbook 以使用 OpenStackConfigGenerator CRD 配置 overcloud。如需更多信息,请参阅使用 OpenStackConfigGenerator CRD 为 overcloud 配置创建 Ansible playbook
  7. 应用更新的配置。如需更多信息,请参阅使用 director Operator 应用 overcloud 配置

验证

将机密中的新 NovaPassword 与 Controller 节点上现在安装的内容进行比较。

  1. 从更新的 secret 获取密码:

    $ oc get secret tripleo-passwords -n openstack -o jsonpath='{.data.tripleo-overcloud-passwords\.yaml}' | base64 -d | grep NovaPassword

    输出示例:

    NovaPassword: hp4xpt7t2p79ktqjjnxpqwbp6
  2. 检索在 Controller 节点上运行的 Compute 服务(nova)的密码:

    1. 访问 openstackclient 远程 shell:

      $ oc rsh openstackclient -n openstack
    2. 确保您位于主目录中:

      $ cd
    3. 检索 Compute 服务密码:

      $ ansible -i /home/cloud-admin/ctlplane-ansible-inventory Controller -b -a "grep ^connection /var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf"

      输出示例:

      172.22.0.120 | CHANGED | rc=0 >> connection=mysql+pymysql://nova_api:hp4xpt7t2p79ktqjjnxpqwbp6@172.17.0.10/nova_api?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo connection=mysql+pymysql://nova:hp4xpt7t2p79ktqjjnxpqwbp6@172.17.0.10/nova?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo