community.general.hashi_vault – Получение секретов из хранилища HashiCorp Vault
Примечание
Этот плагин входит в состав коллекции community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в playbook укажите: community.general.hashi_vault.
Обзор
- Получение секретов из хранилища HashiCorp’s Vault.
Требования
Ниже перечислены требования, необходимые на узле локального контроллера, на котором выполняется этот поиск.
- hvac (библиотека python)
- hvac 0.7.0+ (для поддержки пространств имен)
- hvac 0.9.6+ (для избежания всех предупреждений о устаревании)
- botocore (только если необходимо выводить параметры aws из boto)
- boto3 (только если используется профиль boto)
Параметры
| Параметр | Варианты/Значения по умолчанию | Конфигурация | Комментарии |
|---|---|---|---|
| auth_method строка |
| Записи в ini: [lookup_hashi_vault] добавлен в версии 0.2.0 community.general переменная окружения: VAULT_AUTH_METHOD | Метод аутентификации для использования. userpass добавлен в Ansible 2.8.aws_iam_login добавлен в community.general 0.2.0.jwt добавлен в community.general 1.3.0. |
| aws_access_key строка добавлен в 0.2.0 community.general | переменная окружения: EC2_ACCESS_KEY переменная окружения: AWS_ACCESS_KEY переменная окружения: AWS_ACCESS_KEY_ID | Ключ доступа AWS для использования. псевдонимы: aws_access_key_id | |
| aws_profile строка добавлен в 0.2.0 community.general | переменная окружения: AWS_DEFAULT_PROFILE переменная окружения: AWS_PROFILE | Профиль AWS псевдонимы: boto_profile | |
| aws_secret_key строка добавлен в 0.2.0 community.general | переменная окружения: EC2_SECRET_KEY переменная окружения: AWS_SECRET_KEY переменная окружения: AWS_SECRET_ACCESS_KEY | Секретный ключ AWS, соответствующий ключу доступа. псевдонимы: aws_secret_access_key | |
| aws_security_token строка добавлен в 0.2.0 community.general | переменная окружения: EC2_SECURITY_TOKEN переменная окружения: AWS_SESSION_TOKEN переменная окружения: AWS_SECURITY_TOKEN | Токен безопасности AWS, если используются временные ключи доступа и секретные ключи. | |
| ca_cert строка | Путь к сертификату для использования в процессе аутентификации. псевдонимы: cacert | ||
| jwt строка добавлен в 1.3.0 community.general | переменная окружения: ANSIBLE_HASHI_VAULT_JWT | JSON Web Token (JWT) для использования в процессе аутентификации JWT в Vault. | |
| mount_point строка | Точка подключения Vault, требуется только при наличии пользовательской точки подключения. Не применяется к аутентификации с помощью токенов. | ||
| namespace строка | переменная окружения: VAULT_NAMESPACE добавлен в 1.2.0 community.general | Пространство имен Vault, где хранятся секреты. Этот параметр требует HVAC 0.7.0+ и Vault 0.11+. Дополнительно, это может быть достигнуто путем добавления префикса к точке подключения аутентификации и/или пути к секрету с указанием пространства имен (например, mynamespace/secret/mysecret). | |
| password строка | Пароль аутентификации. | ||
| region строка добавлен в 0.2.0 community.general | переменная окружения: EC2_REGION переменная окружения: AWS_REGION | Регион AWS для создания соединения. | |
| return_format строка добавлен в 0.2.0 community.general |
| Управляет обработкой нескольких пар ключ/значение в пути при возврате. dict возвращает единственный словарь, содержащий пары ключ/значение (то же поведение, что и до community.general 0.2.0).values возвращает только список всех значений. Используйте, когда ключи не важны.raw возвращает фактический результат API, который включает метаданные и может содержать данные, вложенные в других ключах.псевдонимы: as | |
| role_id строка | Записи в ini: [lookup_hashi_vault] добавлен в 0.2.0 community.general переменная окружения: VAULT_ROLE_ID | Идентификатор роли Vault. Используется в методах аутентификации approle и aws_iam_login. | |
| secret строка / обязательно | Путь к секрету Vault, запрашиваемому в формате path[:field]. | ||
| secret_id строка | переменная окружения: VAULT_SECRET_ID | Идентификатор секрета для использования в аутентификации Vault AppRole. | |
| token строка | переменная окружения: VAULT_TOKEN | Токен Vault. Если используется аутентификация по токену и токен не предоставлен явно или через переменную окружения, плагин проверит наличие файла токена, как определено в token_path и token_file. | |
| token_file строка добавлен в 0.2.0 community.general | По умолчанию: ".vault-token" | Записи в ini: [lookup_hashi_vault] переменная окружения: VAULT_TOKEN_FILE добавлен в 1.2.0 community.general | Если токен не указан, будет попытка чтения токена из этого файла в token_path. |
| token_path строка добавлен в 0.2.0 community.general | Записи в ini: [lookup_hashi_vault] переменная окружения: VAULT_TOKEN_PATH добавлен в 1.2.0 community.general | Если токен не указан, будет попытка чтения файла токена из этого пути. | |
| url строка | По умолчанию: "http://127.0.0.1:8200" | Записи в ini: [lookup_hashi_vault] добавлен в 0.2.0 community.general переменная окружения: VAULT_ADDR | URL-адрес сервиса Vault. |
| username строка | Имя пользователя аутентификации. | ||
| validate_certs логическое |
| Управляет проверкой и валидацией сертификатов SSL, в основном требуется выключить только для самозаверенных. Будет заполнен инвертированным значением VAULT_SKIP_VERIFY, если это значение установлено, и validate_certs явно не предоставлено (добавлено в community.general 1.3.0).Будет по умолчанию true, если ни validate_certs, ни VAULT_SKIP_VERIFY не установлены. |
Примечания
Примечание
- Из-за текущего ограничения в библиотеке HVAC не обязательно будет ошибка, если указан неверный конечный пункт.
- Начиная с community.general 0.2.0, при указании пути KV v2 возвращается только последняя версия секрета.
- Начиная с community.general 0.2.0, все параметры могут быть предоставлены через строку с параметрами (разделенными пробелами пары ключ=значение) или параметрами (см. примеры).
- Начиная с community.general 0.2.0, когда
secretявляется первым параметром в строке параметров,secret=не требуется (см. примеры).
Примеры
- ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hello:value token=c975b780-d1be-8016-866b-01d0f9b688a5 url=http://myvault:8200') }}"
- name: Return all secrets from a path
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hello token=c975b780-d1be-8016-866b-01d0f9b688a5 url=http://myvault:8200') }}"
- name: Vault that requires authentication via LDAP
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/hello:value auth_method=ldap mount_point=ldap username=myuser password=mypas') }}"
- name: Vault that requires authentication via username and password
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hello:value auth_method=userpass username=myuser password=psw url=http://myvault:8200') }}"
- name: Connect to Vault using TLS
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hola:value token=c975b780-d1be-8016-866b-01d0f9b688a5 validate_certs=False') }}"
- name: using certificate auth
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/hi:value token=xxxx url=https://myvault:8200 validate_certs=True cacert=/cacert/path/ca.pem') }}"
- name: Authenticate with a Vault app role
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hello:value auth_method=approle role_id=myroleid secret_id=mysecretid') }}"
- name: Return all secrets from a path in a namespace
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/hello token=c975b780-d1be-8016-866b-01d0f9b688a5 namespace=teama/admins') }}"
# When using KV v2 the PATH should include "data" between the secret engine mount and path (e.g. "secret/data/:path")
# see: https://www.vaultproject.io/api/secret/kv/kv-v2.html#read-secret-version
- name: Return latest KV v2 secret from path
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret=secret/data/hello token=my_vault_token url=http://myvault_url:8200') }}"
# The following examples work in collection releases after community.general 0.2.0
- name: secret= is not required if secret is first
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/data/hello token=<token> url=http://myvault_url:8200') }}"
- name: options can be specified as parameters rather than put in term string
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/data/hello', token=my_token_var, url='http://myvault_url:8200') }}"
# return_format (or its alias 'as') can control how secrets are returned to you
- name: return secrets as a dict (default)
ansible.builtin.set_fact:
my_secrets: "{{ lookup('community.general.hashi_vault', 'secret/data/manysecrets', token=my_token_var, url='http://myvault_url:8200') }}"
- ansible.builtin.debug:
msg: "{{ my_secrets['secret_key'] }}"
- ansible.builtin.debug:
msg: "Secret '{{ item.key }}' has value '{{ item.value }}'"
loop: "{{ my_secrets | dict2items }}"
- name: return secrets as values only
ansible.builtin.debug:
msg: "A secret value: {{ item }}"
loop: "{{ query('community.general.hashi_vault', 'secret/data/manysecrets', token=my_token_var, url='http://myvault_url:8200', return_format='values') }}"
- name: return raw secret from API, including metadata
ansible.builtin.set_fact:
my_secret: "{{ lookup('community.general.hashi_vault', 'secret/data/hello:value', token=my_token_var, url='http://myvault_url:8200', as='raw') }}"
- ansible.builtin.debug:
msg: "This is version {{ my_secret['metadata']['version'] }} of hello:value. The secret data is {{ my_secret['data']['data']['value'] }}"
# AWS IAM authentication method
# uses Ansible standard AWS options
- name: authenticate with aws_iam_login
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/hello:value', auth_method='aws_iam_login', role_id='myroleid', profile=my_boto_profile) }}"
# The following examples work in collection releases after community.general 1.3.0
- name: Authenticate with a JWT
ansible.builtin.debug:
msg: "{{ lookup('community.general.hashi_vault', 'secret/hello:value', auth_method='jwt', role_id='myroleid', jwt='myjwt', url='https://myvault:8200')}}"
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие — поля, уникальные для этого поиска:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| _raw список / элементы=словарь | успех | запрошенные секрет(ы) |
Авторы
- Jonathan Davila (!UNKNOWN) <jdavila(at)ansible.com>
- Brian Scholer (@briantist)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/hashi_vault_lookup.html