2.8. 使用 Ansible 更改 Grafana 密码
默认情况下,Grafana 的密码由仪表板使用,设置为 admin
。使用此流程更改密码。
为安全起见,请更改默认密码。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对集群中的所有节点进行 root 访问权限。
流程
可选: 如果您不知道 Grafana 容器在其上运行哪些节点,请在 Ansible 主机文件中找到
[grafana-server]
中列出的节点,通常位于/etc/ansible/hosts
:示例
[grafana-server] grafana
在运行 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 ✔
在 Ansible 管理节点上,使用
ansible-vault
加密 Grafana 密码,然后将加密的密码添加到group_vars/all.yml
中。进入
/usr/share/ceph-ansible/
目录:[admin@admin ~]$ cd /usr/share/ceph-ansible/
运行
ansible-vault
并创建新的 vault 密码:示例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault' New Vault password:
重新输入密码以确认它:
示例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'grafana_admin_password_vault' New Vault password: Confirm New Vault password:
输入 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
记录开头为
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
打开以编辑
group_vars/all.yml
,并将上方的输出粘贴到文件中:示例
grafana_admin_password_vault: !vault | $ANSIBLE_VAULT;1.1;AES256 38383639646166656130326666633262643836343930373836376331326437353032376165306234 3161386334616632653530383231316631636462363761660a373338373334663434363865356633 66383963323033303662333765383938353630623433346565363534636434643634336430643438 6134306662646365370a343135316633303830653565633736303466636261326361333766613462 39353365343137323163343937636464663534383234326531666139376561663532
在加密的密码下方添加一行:
示例
grafana_admin_password: "{{ grafana_admin_password_vault }}"
注意由于 Ansible 中的一个错误会在将 vault 值直接分配给 Ansible 变量时中断字符串类型,因此需要使用上述两个变量。
- 保存并关闭该文件。
重新运行
ansible-playbook
。对于基于容器的部署:
示例
[admin@node1 ceph-ansible]$ ansible-playbook --ask-vault-pass -v site-container.yml -i hosts
请注意,只有使用
/etc/ansible/hosts
的默认 Ansible 主机文件位置时才需要-i
主机。对于裸机,基于 RPM 的部署:
示例
[admin@node1 ceph-ansible]$ ansible-playbook --ask-vault-pass -v site.yml -i hosts
请注意,只有使用
/etc/ansible/hosts
的默认 Ansible 主机文件位置时才需要-i
主机。