我想使用编辑 ec2 节点的 node_dataknife node
命令。
我可以使用以下命令手动执行此操作。
knife node edit NODE_NAME
它将生成一个我需要编辑的 json。
"name": "NODE-1",
3 "chef_environment": "test",
4 "normal": {
5 "node_data": {
6 "version": "23690ecc9c572e47db242bfad1296388f91da1e9",
7 "depot_path": "https://s3.amazonaws.com/builds/",
8 "source_repo": "softwares/"
9 },
10 "tags": [
11
12 ]
13 },
14 "run_list": [
15 "role[my-role]"
16 ]
17 }
我要编辑node_data
在那个 json 中。
如果我必须编辑 run_list 有一个命令
knife node run_list add node 'role[ROLE_NAME]'
我需要类似这个命令的东西。
听起来您想要一种可编写脚本/非交互式的方式来设置给定节点的属性。您可以使用knife exec
为了这。
对于给定的示例,假设您想要获取并设置source_repo
in node_data
对于“NODE-1”。您可以通过运行以下命令来实现此目的:
knife exec -E "nodes.find(:name => 'NODE-1') { |node| node['node_data']['source_repo'] = '/new/path/softwares/'; node.save; }"
请注意node.save
最后:这将使厨师服务器保存您的更改。如果命令中缺少此内容,则这是临时更改,不会保存在厨师服务器上。
要确认 Chef 服务器上的属性确实已更改,您可以像这样获取当前值:
knife exec -E "nodes.find(:name => 'NODE-1') { |node| puts node['node_data']['source_repo'] }"
你应该看到:/new/path/softwares/
作为上述命令的输出。
顺便说一句,请注意node['node_data']['source_repo']
相当于(并且可以替换为)node.node_data.source_repo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)