1

我正在使用 Ansible 2.4

在剧本中,我从 Ansible 保险库文件中检索了一个秘密,并尝试使用docker_secret模块将此秘密作为一个群秘密注入:

- hosts: managers
  become: yes
  become_method: sudo
  gather_facts: yes

  tasks:
  - name: Include secrets vars in task
    include_vars: "{{ playbook_dir }}/vault/vault.yml"
    name: secrets

  - debug:
      msg: "{{ secrets }}"

  - name: Set Docker secrets in SWARM
    docker_secret:
      name: "secrets.properties"
      data: "{{ secrets }}"
      state: present

调试输出正确的值,但 docker_secret 作业正在崩溃,告诉我没有“秘密”属性。

PLAY [经理]


任务[收集事实] ************************************************ ************ 好的:[测试1]

任务[秘密] ************************************************ ******************* 好的:[test1]

任务[调试] ********************************************** ********************* 好的:[test1] => {“msg”:“ secrets.gitJenkinsPassword=MY_SECRET_PASSWORD ”}

任务 [在 SWARM 中设置 Docker 机密] ****************************************** *** 致命:[test1]:失败!=> {"changed": false, "failed": true, "module_stderr": "与 node1.mycompany.com 的共享连接已关闭。\r\n", "module_stdout": "回溯(最近一次通话):\ r\n 文件 \"/tmp/ansible_9JUi1H/ansible_module_docker_secret.py\",第 283 行,在 \r\n main()\r\n 文件 \"/tmp/ansible_9JUi1H/ansible_module_docker_secret.py\",第 278 行,在main\r\n SecretManager(client, results)()\r\n File \"/tmp/ansible_9JUi1H/ansible_module_docker_secret.py\",第 170 行, 调用中\r\n self.present()\r\n 文件 \"/tmp/ansible_9JUi1H/ansible_module_docker_secret.py\",第 209 行,当前\r\n secret = self.get_secret()\r\n 文件 \" /tmp/ansible_9JUi1H/ansible_module_docker_secret.py\",第 177 行,在 get_secret\r\n secrets = self.client.secrets(filters={'name': self.name})\r\nAttributeError: 'AnsibleDockerClient' object has没有属性 'secrets'\r\n", "msg": "MODULE FAILURE", "rc": 0} 重试,使用:--limit @/var/jenkins_home/workspace/deploy/ansible/playbooks/swarm。重试

4

1 回答 1

1

正如 Konstantin_Surovov 所提到的,这是一个 docker-py 库版本问题。事实上,它只适用于 docker-py 2.4 或更高版本,因为 2.1 中的秘密功能存在错误

于 2017-11-02T13:45:53.087 回答