Запустите ansible-vault encrypt_string в ansible playbook

У меня есть работа в Rundeck, которая требует, чтобы пользователи передавали пароль базы данных в ansible. А ansible примет это как дополнительную переменную.

ansible-playbook test.yml -e "password=123" 

Однако мы хотели бы сохранить пароль во время выполнения, но в соответствии с передовой практикой . Они потребуют, чтобы пароль был сохранен в файле. и сохраните весь файл с помощью ansible-vault create.

Поскольку нам нужно передать большое количество паролей, и я заметил, что есть вызов функции encrypt_string. Я пытаюсь вызвать его в playbook и пытаюсь на лету сгенерировать пароль хранилища, но получаю сообщение об ошибке ниже:

«ОШИБКА! Для шифрования можно использовать только один --vault-id. Это включает пароли из конфигурации и cli.»

Вот моя инструкция test.yml:

---
- name: test
  hosts: localhost
  tasks:
  - name: vault var
    command: ansible-vault encrypt_string "{{ password }}" --vault-password-file ~/.vault_pass.txt
    register: var

  - name: variable
    set_fact:
      mypass: var

  - name: test encrypt_string
    debug:
      msg: "{{ mypass }}"

Я не уверен, что это правильный способ сделать это / лучшая практика, любой, кто может пролить свет, будет очень признателен.

Спасибо,


person Jervis Lin    schedule 22.12.2017    source источник


Ответы (1)


Вы можете обновить свою задачу, удалив опцию --vault-password-file, поскольку кажется, что ansible каким-то образом получает / читает ее из вашей среды.

...
...
- name: test
  hosts: localhost
  tasks:
  - name: vault var
    command: ansible-vault encrypt_string "{{ password }}" 
    register: var
...
...

Если вы предпочитаете оставить эту опцию в playbook, вам может потребоваться выяснить, откуда ее читает ansible. Ansible может читать его из своего конфигурационного файла по умолчанию, который обычно находится в ~/.ansible.cfg [ищите vault_password_file] или alias или где-то еще.

Более подробную информацию можно найти в документации по ansible vault с примерами.

person Robert Ranjan    schedule 23.12.2017