我目前正在使用AutoScalingGroups来管理堆栈中节点的生命周期。在堆栈创建期间,脚本创建一个ssh密钥,然后与集群中的所有节点共享,以允许管理员用户能够在堆栈内的节点之间进行ssh。这是部署为无密码ssh访问的软件的要求。还要求每个堆栈都有自己的ssh密钥而不使用共享密钥。
不幸的是,当ASG替换坏节点时,ssh密钥在新节点中不可用。 /home/adminuser/.ssh/authorized_keys文件不包含我在创建堆栈时创建的ssh密钥。我正在寻找一种存储ssh密钥的方法,以便可以将其添加到ASG创建的新节点中。
我找到了能够放置和获取参数的SSM: http://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html http://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html
这可行。我可以在这里存储所有Stack的ssh密钥,然后每个Stack可以只查询存储库中的私钥。遗憾的是,这不会起作用,因为我的帐户中所有堆栈中的所有节点都可以看到这些值。我希望这些参数仅可用于堆栈中的节点。
一个堆栈可能用于测试,而另一个堆栈可能用于同一帐户下的生产。我不希望测试用户能够查询与生产堆栈相关的参数。
有没有办法为Stack只提供堆栈的变量/参数?还有另一种方法吗?