2.8. 使用 Ansible 更改 Grafana 密码

默认情况下,Grafana 的密码由仪表板使用,设置为 admin。使用此流程更改密码。

重要

为安全起见,请更改默认密码。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对集群中的所有节点进行 root 访问权限。

流程

  1. 可选: 如果您不知道 Grafana 容器在其上运行哪些节点,请在 Ansible 主机文件中找到 [grafana-server] 中列出的节点,通常位于 /etc/ansible/hosts

    示例

    [grafana-server]
    grafana

  2. 在运行 Grafana 容器的节点上,更改密码:

    语法

    podman exec CONTAINER_ID grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" NEW_PASSWORD

    CONTAINER_ID 更改为 Grafana 容器的 ID。将 NEW_PASSWORD 更改为所需的 Grafana 密码。

    示例

    [root@grafana ~]# podman exec 3f28b0309aee grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" NewSecurePassword
    t=2020-10-29T17:45:58+0000 lvl=info msg="Connecting to DB" logger=sqlstore dbtype=sqlite3
    t=2020-10-29T17:45:58+0000 lvl=info msg="Starting DB migration" logger=migrator
    
    Admin password changed successfully ✔

  3. 在 Ansible 管理节点上,使用 ansible-vault 加密 Grafana 密码,然后将加密的密码添加到 group_vars/all.yml 中。

    1. 进入 /usr/share/ceph-ansible/ 目录:

      [admin@admin ~]$ cd /usr/share/ceph-ansible/
    2. 运行 ansible-vault 并创建新的 vault 密码:

      示例

      [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault'
      New Vault password:

    3. 重新输入密码以确认它:

      示例

      [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault'
      New Vault password:
      Confirm New Vault password:

    4. 输入 Grafana 密码,按 Enter,然后输入 CTRL+D 以完成该条目:

      语法

      ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault'
      New Vault password:
      Confirm New Vault password:
      Reading plaintext input from stdin. (ctrl-d to end input)
      NEW_PASSWORD

      使用之前设置的 Grafana 密码替换 NEW_PASSWORD

      示例

      [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault'
      New Vault password:
      Confirm New Vault password:
      Reading plaintext input from stdin. (ctrl-d to end input)
      NewSecurePassword

    5. 记录开头为 grafana_admin_password_vault: !vault | 且以几个数字结尾的输出,因为它将在下一步中使用:

      示例

      [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault'
      New Vault password:
      Confirm New Vault password:
      Reading plaintext input from stdin. (ctrl-d to end input)
      NewSecurePassword
      grafana_admin_password_vault: !vault |
                $ANSIBLE_VAULT;1.1;AES256
                38383639646166656130326666633262643836343930373836376331326437353032376165306234
                3161386334616632653530383231316631636462363761660a373338373334663434363865356633
                66383963323033303662333765383938353630623433346565363534636434643634336430643438
                6134306662646365370a343135316633303830653565633736303466636261326361333766613462
                39353365343137323163343937636464663534383234326531666139376561663532
      Encryption successful

    6. 打开以编辑 group_vars/all.yml,并将上方的输出粘贴到文件中:

      示例

      grafana_admin_password_vault: !vault |
                $ANSIBLE_VAULT;1.1;AES256
                38383639646166656130326666633262643836343930373836376331326437353032376165306234
                3161386334616632653530383231316631636462363761660a373338373334663434363865356633
                66383963323033303662333765383938353630623433346565363534636434643634336430643438
                6134306662646365370a343135316633303830653565633736303466636261326361333766613462
                39353365343137323163343937636464663534383234326531666139376561663532

    7. 在加密的密码下方添加一行:

      示例

      grafana_admin_password: "{{ grafana_admin_password_vault }}"

      注意

      由于 Ansible 中的一个错误会在将 vault 值直接分配给 Ansible 变量时中断字符串类型,因此需要使用上述两个变量。

    8. 保存并关闭该文件。
  4. 重新运行 ansible-playbook

    1. 对于基于容器的部署:

      示例

      [admin@node1 ceph-ansible]$ ansible-playbook --ask-vault-pass -v site-container.yml -i hosts

      请注意,只有使用 /etc/ansible/hosts 的默认 Ansible 主机文件位置时才需要 -i 主机。

    2. 对于裸机,基于 RPM 的部署:

      示例

      [admin@node1 ceph-ansible]$ ansible-playbook --ask-vault-pass -v site.yml -i hosts

      请注意,只有使用 /etc/ansible/hosts 的默认 Ansible 主机文件位置时才需要 -i 主机。