我担任厨师:
{
"name": "my-role",
"description": "Defines a role",
"override_attributes": {
"cookbook_one" {
"key": "value"
}
}
"run_list": [
recipe["cookbook_one"],
recipe["cookbook_two"]
]
}
我在预配程序块中与Packer通话:
{
"variables": {
"my-variable": ""
},
"provisioners": [
{
"type": "chef-client",
"server_url": "https://mychefserver.com/",
"run_list": "role[my-role]",
...
}
我需要能够从Packer中将一些属性添加到recipe_two。我读到可以使用json block of the chef-client预配器将一些属性添加到运行列表。我尝试过
"type": "chef-client",
"server_url": "https://mychefserver.com/",
"run_list": "role[my-role]",
"json": {
"override_attributes": {
"cookbook_two": {
"some_key": "value"
}
}
}
当我运行打包程序时,我可以在/tmp/packer-chef-client/first-boot.json
中看到 {
"override_attributes": {
"cookbook_two": {
"some_key": "{{ user `my-variable` }}"
}
},
"run_list": [
"role[my-role]"
]
}
但是食谱_two的override_attributes不会暴露给食谱。我找不到如何使它以这种方式工作的任何示例,也找不到正确的“ json”:{}块格式通过。
通过Packer调用的角色向我的食谱公开覆盖属性的任何方向都将受到赞赏
答案 0 :(得分:0)
您发出的问题与打包程序本身无关,而是如何执行chef-client
并为厨师客户运行提供自定义属性。
您可以通过在chef-client
中加入--json-attributes
(我强烈建议您访问文档,因为其中包含示例)来提供自定义属性
-j PATH, --json-attributes PATH
包含JSON数据的文件的路径。用于设置第一个客户端运行。对于将来使用选项-i进行的所有运行,这些属性应保留在Chef服务器中。
回到包装工的问题...
创建一个具有您要覆盖的属性的json文件,并确保您使用--json-attributes
从打包程序中调用Chef-client,并将其指向您创建的json文件。
答案 1 :(得分:0)
您的打包程序文件不应包含multiprocessing
部分。相反,它应该是这样的:
totalcoins = None
coinN = None
sum_total = range
while coinN != '0' and totalcoins != '0':
coinN = input("Please enter first amount: ")
if coinN == "":
print("You didn't enter anything")
else:
totalcoins = input("Please enter second amount ")
if totalcoins == "":
print("You didn't enter anything")
else:
sum_total = int(coinN) + int(totalcoins)
if sum_total in range(100):
print('Sorry, you only entered {} cents'.format(sum_total))
else:
if sum_total == 100:
print('The sum of {0} and {1} is = 1 rand '.format(coinN, totalcoins, sum_total))
if sum_total >=100:
print('The sum of {0} and {1} is = {2} rand '.format(coinN, totalcoins, sum_total))
print("\n")