【问题标题】:Ansible roles task failing docker swarm node joinAnsible 角色任务失败 docker swarm node join
【发布时间】:2016-09-10 18:15:58
【问题描述】:

我在将工作节点加入管理节点时遇到问题。但是我在加入集群中的工作人员时遇到了系统问题。

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) => {"changed": true, "cmd": "docker swarm join --token {'msg': u'All items completed', '改变':真,'结果':[{u'改变':真,u'end':u'2016-09-10 13:42:11.439043','_ansible_no_log':假,你'stdout': u'SWMTKN-1-34rdkhgb6ij6njvzdnutvbt8ee3crelm5as7dm7c7y7s03nvr3-9m0c8vp9hjb84ne90etapxec5', '_ansible_item_result':真,'item':u'188.166.17.148',u'delta': u'0:00:00.016042', u'cmd': u'docker swarm join-token -q worker', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args':{u'warn':真,u'executable':无,u'_uses_shell': 是的,u'_raw_params': u'docker swarm join-token -q worker', u'removes':无,u'creates':无,u'chdir':无}},'stdout_lines': [u'SWMTKN-1-34rdkhgb6ij6njvzdnutvbt8ee3crelm5as7dm7c7y7s03nvr3-9m0c8vp9hjb84ne90etapxec5'], 你'开始':你'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”、“失败”:真、“项目”:“188.166.17.148 ", "rc": 1, “开始”:“2016-09-10 13:42:24.191243”,“stderr”:“\”docker swarm join\" 只需要 1 个参数。\n参见 'docker swarm join --help'。\n\n用法:docker swarm join [OPTIONS] HOST:PORT\n\n作为节点和/或管理器加入 swarm", "stdout": "", "stdout_lines": [], “警告”:[]}

现在我如何编写{{ hostvars[item]['docker_worker_token'] }},以便我可以从hostvars 获取令牌信息。

【问题讨论】:

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


    【解决方案1】:

    输出中的cmd 值给了你一个提示:

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

    但我几乎可以肯定你在任务中无缘无故地使用了with_items将节点加入集群和在你设置docker_worker_token 变量的任务中?所以你最终会在变量中添加不必要的results 层。

    【讨论】:

    • docker_worker_token 设置为不同的主机。 - name: 获取worker join-token。 shell: docker swarm join-token -q worker with_items: - "{{ groups['manager'] }}" register: docker_worker_token
    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多