PowerFlex 3.6 缺少 device_config 中的 PowerFlex 网关的 puppet 证书
Summary: 本文介绍如何识别和修复由于数据库的 device_config 表中缺少 PowerFlex Gateway 的 puppet-cert 而导致的问题。
Symptoms
-
与服务相关的作,例如 RCM/IC 升级、进入或退出服务模式等...将失败。
-
deployment.log包含类似于以下错误的内容。
-
在post_request中遇到 VXOS REST API 错误:undefined method '[]' for nil:NilClass
-
我们可以看到,在 PowerFlex Manager 中的资源下列出了两个不同的 PowerFlex 网关名称。
示例:

Cause
在 3.7.x 及更高版本中,PFxM 检索设备配置信息的方式已更改为使用与 puppet 证书名称无关的数据库条目。
某些作导致报告的网关名称在 PFxM 中更改,或者使用不同的主机名重新安装网关或更改了 SSL 证书。
数据库表仅具有当前 PowerFlex Gateway名称的条目,但服务会查看旧的 PowerFlex Gateway名称。
Resolution
验证:
1) 转至 /opt/Dell/ASM/deployments/Job-xxx<> 下的作业 ID,其中节点的服务相关作失败。
示例:cd /opt/Dell/ASM/deployments/Job-xxx<
>
2) 运行以下命令以确定服务尝试使用的 puppet 证书。
cat deployment.json|grep -i cert|grep scaleio
例:[delladmin@pfxm-jade Job-913d3f1a-b7cd-4fe9-a4b5-2085d8034d17-0-0]$ cat deployment.json|grep -i cert|grep scaleio.
“puppetCertName”:“scaleio-sio_gw”、“
puppetCertName”:“scaleio-sio_gw”,
[delladmin@pfxm-jade Job-913d3f1a-b7cd-4fe9-a4b5-2085d8034d17-0-0]$
3) 连接到 asm_dev 数据库并检查 scaleio 网关存在的证书名。
psql -U orion asm_dev
asm_dev=> select certname from device_config where certname like 'scaleio-%';
示例:
asm_dev=> select certname from device_config where certname like 'scaleio-%';
certname
----------------------
scaleio-powerflex_gw
(1 row)
4) 确保数据库中缺少我们从 deployment.jason 文件中注意到的 puppet 证书。在此示例中,它是“scaleio-sio_gw” ,数据库中缺少它。
仅当步骤 4 为 true 时,才继续执行以下步骤。
1) 拍摄 PowerFlex Manager 虚拟机的快照。
2) 运行以下查询并记下当前网关的字段(certname、host、provider、scheme、credential_id)的值。在此示例中,当前网关为 scaleio-powerflex_gw。
asm_dev=> select * from device_config are certname like 'scaleio-%';
编号 | 证书名称 | 主持人 |端口 | 路径 |提供者 |方案 | credential_id |os_credential_id |svm_os_credential_id |os_type |svm_os_connect_ip |svm_os_type | update_time |svm_name |os_connect_ip
----+-------------------------+-----------------+------+--------------------------+----------+--------+----------------------------------+------------------+----------------------+---------+-------------------+-------------+-------------------------------+----------+---------------
49 | scaleio-powerflex_gw | 192.168.150.100 | |scaleio/bin/discovery.rb |脚本 |脚本 |ff8080816e8e8257016e8e96df6d00e5 | | | | | |2022-04-13 07:01:26974846-04 | |
。
3) 运行以下查询以在device_config表中为缺少的证书添加新条目。
注意:-在以下命令中,将 VALUES 字段替换为正确的值。
INSERT INTO device_config (certname, host, provider, scheme, credential_id) VALUES('<Missing cert name>', '<Value from current gateway noted in previous step>', '<value from current gateway noted in previous step>', '<value from current gateway noted in previous step>', '<value from current gateway noted in previous step>');
例: asm_dev=> INSERT INTO device_config (certname, host, provider, scheme, credential_id) VALUES('scaleio-sio_gw', '192.168.150.100', 'script', 'script', 'ff8080816e8e8257016e8e96df6d00e5');
插入 0 1
4) 运行以下查询以确认添加了缺少证书的新条目。
从 device_config 中选择 certname,其中 certname like 'scaleio-%';
示例:
asm_dev=> select certname from device_config where certname like 'scaleio-%';
certname
----------------------
scaleio-powerflex_gw
scaleio-sio_gw
(two rows)
asm_dev-> \q
[delladmin@pfxm-jade ~]$
5) 在 PowerFlex Manager 中重试此作。