我在使用manager节点加入worker节点时遇到问题。但是我在系统中加入群集中的工作者时遇到问题。
docker_worker_token设置为另一台主机。
host1:
- name: Get the worker join-token.
shell: docker swarm join-token -q worker
with_items:
- "{{ groups['manager'] }}"
register: docker_worker_token
host2:
- name: join node to the cluster
shell: docker swarm join --token {{ hostvars[item]['docker_worker_token'] }} {{ managerip }}:2377
with_items:
- "{{ groups['manager'] }}"
我正在低于这个错误。
失败:[188.166.30.64](item = 188.166.17.148)=> {"改变了#34;:是的, " cmd":" docker swarm join --token {' msg':u'所有项目已完成', '改变了':是的,'结果':[{u'已经改变':是的,你'结束':你' 2016-09- 10 13:42:11.439043',' _ansible_no_log':错,你' stdout': U' SWMTKN-1-34rdkhgb6ij6njvzdnutvbt8ee3crelm5as7dm7c7y7s03nvr3-9m0c8vp9hjb84ne90etapxec5&#39 ;, ' _ansible_item_result':是的,'项目':你' 188.166.17.148',你' delta': 你' 0:00:00.016042',你'':你的码头工人加入令牌-q工人', 你':你'你' rc':0,'调用':{' module_name':你&# 39;命令&#39 ;, 你' module_args':{u'警告':是的,你'可执行':无,你' _uses_shell': 是的,你' _raw_params':你的码头工人群加入令牌-q工人', 你删除了':没有,你创造了':没有,你' chdir':无}},' stdout_lines': [U' SWMTKN-1-34rdkhgb6ij6njvzdnutvbt8ee3crelm5as7dm7c7y7s03nvr3-9m0c8vp9hjb84ne90etapxec5&#39], 你'开始':2016-09-10 13:42:11.423001',你'警告':[]}]} 188.166.17.148:2377"," delta":" 0:00:00.060083"," end":" 2016-09-10 13:42:24.251326","失败":true," item":" 188.166.17.148"," rc" :1, "开始":" 2016-09-10 13:42:24.191243"," stderr":" \" docker swarm 加入\"只需要1个参数。\ n请参见#docker swarm join --help'。\ n \ n用户:docker swarm join [OPTIONS] HOST:PORT \ n \ n将一个群体作为节点和/或管理员"," stdout":&#34 ;"," stdout_lines":[], "警告":[]}
现在我如何编写{{ hostvars[item]['docker_worker_token'] }}
,以便我可以从hostvars
获取令牌信息。
答案 0 :(得分:1)
输出中的cmd
值为您提供了一个提示:
{{ hostvars[item]['docker_worker_token'].results[0].stdout }}
但我几乎可以肯定您在任务将节点加入群集并在任务中使用with_items
,并设置docker_worker_token
变量?因此,您最终会在变量中使用不必要的results
图层。