所以我的目标是使用 cloudformation 在云中启动 100 个节点,我想在我的 cloudformation 脚本中用厨师角色标记节点,而不是使用刀。我已经将我的 cloudformation 节点设置为自动向厨师服务器注册,我想使用向厨师服务器报告他们的角色,以便厨师服务器在每个节点上安装正确的说明书(取决于节点角色)。我知道用刀可以做到这一点,但我想将节点角色隐藏在我的 cloudformation 脚本中。
我该怎么做?
所以我的目标是使用 cloudformation 在云中启动 100 个节点,我想在我的 cloudformation 脚本中用厨师角色标记节点,而不是使用刀。我已经将我的 cloudformation 节点设置为自动向厨师服务器注册,我想使用向厨师服务器报告他们的角色,以便厨师服务器在每个节点上安装正确的说明书(取决于节点角色)。我知道用刀可以做到这一点,但我想将节点角色隐藏在我的 cloudformation 脚本中。
我该怎么做?
我使用 Puppet,这当然与 Chef 略有不同,但应该适用相同的理论。我在启动新实例时(也通过 CloudFormation)发送一个 JSON 对象作为用户数据,然后在 Puppet 中访问此数据以进行动态配置。
Puppet 会自动处理很多此类问题 - 例如,它会自动为我设置 FACTOR_EC2_USER_DATA 环境变量,因此我只需将 JSON 解析为 $role 和 $environment 等变量,此时我可以动态决定实例的角色应该分配。
因此,只要您能找到某种方法来访问 Chef 中的用户数据,同样的方法应该可以工作。
我和厨师一起做这个。我通常在 S3 中放置一个 json 文件,描述机器需要使用的角色。我在 CloudFormation 中创建了一个可以访问 S3 存储桶的 IAM 用户。然后,在我的用户数据脚本中,我首先从 S3 获取文件,然后运行 chef-client -j /path/to/json/file。我对验证密钥 fwiw 做同样的事情,以便节点可以注册自己。
高温高压