Ansible角色任务失败的docker swarm节点加入

时间:2016-09-10 18:15:58

标签: docker ansible ansible-playbook ansible-2.x

我在使用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获取令牌信息。

1 个答案:

答案 0 :(得分:1)

输出中的cmd值为您提供了一个提示:

{{ hostvars[item]['docker_worker_token'].results[0].stdout }}

但我几乎可以肯定您在任务将节点加入群集并在任务中使用with_items,并设置docker_worker_token变量?因此,您最终会在变量中使用不必要的results图层。