我有terraform
配置AWS
结构。我已经为配方执行准备了厨师,但问题是实例没有任何node_name
属性,因为它们是由Terraform
使用AutoScaling Group
和chef client
与user_data
脚本一起安装的。节点名称由chef
生成,我需要在每个实例上最初执行一些安装。我试图创建base
角色,并使用所需的操作将其更新到服务器。更新成功,但没有正在启动实例的安装。有没有办法为每个新到的实例运行命令或分配角色?与自动调节配置实例的厨师执行配方
回答
谢谢你的答案。自定义AMI不是一种选择,所以我不得不为另一种方法进行研究。原来你可以跳过chef-service-manager
部分,直接拨打chef client
。要点是您可以将JSON
文件作为参数分配给chef client
。 JSON
可以包含runlist
和/或role
,即使它是由Autoscaling group
创建的,也可以分配给新实例。由于我已经在使用user_data
,我刚刚在脚本中添加了JSON
创建,并分配了中已有runlist
的所需角色。这两个答案帮助我到达那里。现在在每个新实例中,通过user_data
我创建了一个JSON
的角色,最后我运行了chef client -f role_config.json
,之后我致电服务创建chef-service-manager
。这只是一个补丁,因为最佳选择不是将其创建为服务,而是每次都使用scheduled task
并调用json
,因为如果第二次调用同一实例,它将在将来的执行中被忽略。同样从我在Chef
文档中看到的,scheduled task
将是比使用该服务更好的选择。感谢您的答案!
有两个解决方案我能想到的:
- 添加要加载在USER_DATA的EC2s脚本的aws_instance
例如属性:
resource "aws_instance" "foo" {
ami = "ami-408c7f28"
instance_type = "t1.micro"
user_data = "**your script**"
}
- 从您自己的自定义AMI启动它们。
您必须在LaunchConfig中将配置烘焙成混合的AMI和初始化脚本。 https://github.com/coderanger/octan_demo/blob/master/tf/octan_cluster/main.tf#L156-L167和https://github.com/coderanger/octan_demo/blob/master/tf/octan_cluster/bootstrap.tpl是一个使用厨师独奏的例子(很好,本地模式,因为独奏还不支持策略,但这是一个不同的故事),但它应该给你一个想法。您可以使用类似的脚本安装Chef,创建配置,下载验证密钥(可能来自S3,使用IAM角色),然后启动第一个chef-client
运行。 https://github.com/coderanger/brix/blob/master/packer/client-bootstrap.sh是另一个更早的例子,它显示了chef-client的这种情况,在这种情况下,它正在生成基于CloudFormation数据的配置,并且Chef install +验证密钥被烘焙到AMI中。
- 1. 厨师 - 重复性配方执行
- 2. 厨师配置Apache(http.conf)
- 3. 写作厨师配方
- 4. 厨师在httpd配方中设置DocumentRoot
- 5. 动态使用厨师配方
- 6. 厨师:设置并发与poise应用程序python配方
- 7. 配置厨师的码头图像
- 8. 厨师更新配置文件
- 9. 厨师服务器时区配置
- 10. 厨师架构配置窗口
- 11. 如果红宝石(厨师配方)
- 12. 厨师包括配方覆盖属性
- 13. 从配方创建厨师数据包
- 14. 厨师 - 如何避免重复配方
- 15. 厨师 - 在配方中获取cookbook_path
- 16. 厨师节点与环境
- 17. 在与厨师配置后失去对服务器的访问
- 18. 保持$ PATH变量在运行列表中执行厨师配方
- 19. 如何让每位厨师都能执行厨师自定义资源运行
- 20. 与厨师一起删除配置项目
- 21. 如何从配方中设置厨师环境属性
- 22. 如何从厨师配方运行bash脚本文件
- 23. 抓厨师例外
- 24. 如何分配的文件内容厨师节点属性
- 25. 使用Travis for E2厨师食谱配置实例创建实例后等待SSH服务挂起
- 26. 自动配置与Ad-Hoc配置
- 27. 厨师客户供应方无法与厨师服务器
- 28. 使用Opscode厨师扩展EC2实例
- 29. 厨师刀AWS EC2实例弹性IP
- 30. 无法使用厨师和刀创建ec2 ubuntu实例节点
选项1的问题是我不使用'aws_instance'资源。实例由'launch_configuration'和'Autoscaling Group'创建,所以我不能使用'provisioner'或绑定特定实例中的角色。 – Nephilimrising