【发布时间】:2019-04-01 19:46:06
【问题描述】:
我想添加命令将作业白名单推送到多个节点,而不需要一一编辑,有办法吗?
我已经试过了:
knife exec -E 'nodes.transform("name:A_NODE_NAME") do |n|
n.set["push_jobs"]["whitelist"]["ntpdate"] = "ntpdate -u time"
end'
正如here 所说,但它不起作用:
命令运行良好,
knife exec -E 'nodes.transform("name:zookeeper03") do |n|
n.set["push_jobs"]["whitelist"]["dns"] = "chef-client -r system-configs::dns"
end'
然后我使用knife node edit zookeeper03,编辑器显示给我
{
"name": "zookeeper03",
"chef_environment": "_default",
"normal": {
"tags": [
],
"push_jobs": {
"whitelist": {
"dns": "chef-client -r system-configs::dns"
}
}
}
但是在运行knife job start "dns" zookeeper03之后,在该节点中跟踪日志时,日志显示:
ERROR: [zookeeper03] Received commit c1fa30942d664c6df7213c71d79a74f3, but command 'dns' is not in the whitelist!
有什么建议吗?
提前致谢
【问题讨论】:
-
“不工作”是什么意思?节点属性设置了吗?
-
我已经更新了原来的问题
-
您的
nodes.transform语法看起来不错。编辑节点属性的一个问题是,如果在您进行编辑时在该机器上运行了一个守护进程模式,它可能会由于 API 竞争条件而被踩踏。尝试先停止该节点上的 chef 服务? -
我重启了节点,没有任何变化,错误信息是一样的。
-
请重启客户端推送作业服务
标签: chef-infra push jobs whitelist