Модуль Ansible docker_secret не принимает переменную в поле данных

Я использую Ansible 2.4

В playbook я извлекаю секрет из файла хранилища 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 сообщает мне, что нет атрибута "секреты".

ИГРАТЬ [менеджеры]


ЗАДАЧА [Сбор фактов] ******************************************* ************ ОК: [test1]

ЗАДАЧА [секреты] ********************************************* ******************* ОК: [test1]

ЗАДАЧА [отладка] ********************************************* ********************* ok: [test1] => {"msg": "secrets.gitJenkinsPassword = MY_SECRET_PASSWORD < / strong> "}

ЗАДАЧА [Установить секреты Докера в SWARM] ***************************************** *** фатальный: [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 Файл \ "/ 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 File \ "/ tmp / ansible_9JUi1H / ansible_module_docker_secret. py \ ", строка 177, в get_secret \ r \ n secrets = self.client.secrets (filters = {'name': self.name}) \ r \ nAttributeError: объект 'AnsibleDockerClient' не имеет атрибута 'секреты' \ r \ n "," msg ":" MODULE FAILURE "," rc ": 0}, чтобы повторить попытку, используйте: --limit @ / var / jenkins_home / workspace / deploy / ansible / p laybooks / swarm.retry


person Lucas.de    schedule 02.11.2017    source источник
comment
Это Requirements (on host that executes module) docker-py >= 2.1.0 выполнено?   -  person Konstantin Suvorov    schedule 02.11.2017


Ответы (1)


Как упоминал Константин Суровов, это проблема версии библиотеки docker-py. На самом деле он работает только с docker-py 2.4 или новее, потому что в 2.1 есть ошибка секретной функции.

person Lucas.de    schedule 02.11.2017