我有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