我有一个用于特定集群服务的 Juju Charm。在手动部署中,集群管理员可以在控制系统节点和集群中的其他节点之间启用无密码 SSH 访问。我希望我的 Juju Charm 能够自动执行该过程。
简单来说 :
- 服务跨节点部署
- 每个节点都有一个为服务所有者创建的用户帐户
- 其中一个或多个节点将具有控制系统包
- 目标是让该小部分节点上的服务所有者无需密码 ssh 访问所有节点
我原本想将公钥放入节点之间的对等关系的关系属性中……然后从另一端读取它。但关系-关系-改变我已经看到了这个叫做n 阶乘次n 节点集群。如果可以避免的话,我宁愿不在那里增加更多复杂性。
答案1
我将向您提供关于在对等节点之间同步密钥的想法(针对您的控制节点),但据我所知,这可以用于您的所有节点。
在关系关系改变钩子脚本:
#if there is no pubkey corresponding to this nodes ID, export this relation
ThisUnitID=$(echo $JUJU_UNIT_NAME | awk -F/ '{print $2}')
if [ -z $(relation-get pub_key"$ThisUnitID" ]; then
relation-set pub_key"$ThisUnitID" "$ThisPubKey"
fi
#get everyone's pub key
MEMBERS=$(relation-list)
for member in $MEMBERS; do
memberID=$(echo $member | awk -F/ '{print $2}')
custom_save_pub_key $(relation-get pub_key"$memberID" )
done
如果我正确理解了 juju,那么当添加新节点时,每个节点都会调用一次此方法,这将允许新节点获取其他所有节点的公钥。但由于新节点也会更改关系,因此将导致所有其他节点再次运行此方法以提取更新的密钥列表……依赖副作用非常黑客化,但非常简洁。
祝你好运。