我是Chef和AWS的新手,我正在学习如何部署集群,将Chef抛给AWS Ec2。为此,我正在使用chef-provisioning-aws。
我正在从我的工作站直接向AWS执行chef-client
,我没有chef-server
(使用chef-zero)。这就是我执行的方式:
chef-client -z -r "role[example_cluster]"
是的,我在群集和run_list
中都有自己的角色
"recipe[example::aws_setup]",
"recipe[example::create_cluster]"
在example::create_cluster
食谱上,我使用machine_batch
创建机器并调用以下食谱:
recipe 'example::recipe_1'
recipe 'example::recipe_2'
我也定义了一些属性,并在Role文件中覆盖其中的一些属性,但是当我执行chef-client
时,example::aws_setup
和example::create_cluster
上的属性是我覆盖的属性角色文件,但example::recipe_1
和example::recipe_2
中使用的是默认文件。
有人有导游或可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
我想我昨晚在IRC上回答了你,但以防万一:
运行供应流程的服务器(或本例工作站)的节点数据与EC2中新创建的节点之间没有关系。如果要将角色或其他内容应用于它们,则需要在创建计算机时在配置配方中执行此操作。
答案 1 :(得分:1)
Chef属性具有" Precedence"订购。请参考answer相关的Chef属性Precedence,它将有助于理解在运行cookbook时将考虑哪个属性值。
您需要调用正确的属性方法,同时覆盖属性值。