Подстановка community.hashi_vault.vault_ansible_settings – возвращает параметры (опции) плагина
Примечание
Этот плагин подстановки входит в коллекцию community.hashi_vault (версия 7.1.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.hashi_vault.
Чтобы использовать её в плейбуке, укажите: community.hashi_vault.vault_ansible_settings.
Добавлено в community.hashi_vault 2.5.0
Обзор
- Возвращает словарь параметров и их значений для указанного плагина.
- Это особенно полезно для использования параметров плагина в модулях и
module_defaults, особенно если общие параметры заданы вansible.cfg, в переменных Ansible или с помощью переменных среды на контроллере. - Параметры можно фильтровать по имени, а также включать или исключать значения по умолчанию, не заданные параметры и закрытые параметры.
Термины
Параметр | Комментарии |
|---|---|
Terms list / elements=string | Имена параметров для загрузки. Поддерживаются подстановочные знаки в стиле Добавьте По умолчанию: |
Параметры ключевых слов
Здесь описаны параметры ключевых слов подстановки. Это значения key1=value1, key2=value2 и так далее в следующих примерах: lookup('community.hashi_vault.vault_ansible_settings', key1=value1, key2=value2, ...) и query('community.hashi_vault.vault_ansible_settings', key1=value1, key2=value2, ...)
Параметр | Комментарии |
|---|---|
include_default boolean | Включать параметры, значения которых взяты по умолчанию. Варианты:
|
include_none boolean | Включать параметры, значение которых равно Варианты:
|
include_private boolean | Включать параметры, начинающиеся с символа подчёркивания Варианты:
|
plugin string | Имя плагина, параметры которого будут возвращены. Поддерживаются только подстановки. Короткие имена (без точки По умолчанию: |
Примечания
Примечание
- При совместном использовании позиционных параметров и параметров ключевых слов позиционные параметры необходимо указывать перед параметрами ключевых слов:
lookup('community.hashi_vault.vault_ansible_settings', term1, term2, key1=value1, key2=value2)иquery('community.hashi_vault.vault_ansible_settings', term1, term2, key1=value1, key2=value2) - Эта коллекция поддерживает некоторые переменные среды «с низким приоритетом», которые загружаются после всех остальных источников, например
VAULT_ADDR. - Эти переменные среды не поддерживаются этим плагином.
- Чтобы использовать их, применяйте подстановку ansible.builtin.env для их непосредственной загрузки при вызове модуля или задании
module_defaults. - Аналогично, значения параметров, которые требуют дополнительной обработки, не будут заполнены.
- Например, токены не будут загружены из файла-приёмника токенов, а для методов аутентификации не будут вызваны их методы
validate. - Обходные решения приведены в примерах, но рассмотрите возможность использования специфичных для Ansible способов задания этих значений.
См. также
См. также
- Значения модулей по умолчанию
-
Использование ключевого слова
module_defaults.
Примеры
### In these examples, we assume an ansible.cfg like this:
# [hashi_vault_collection]
# url = https://config-based-vault.example.com
# retries = 5
### end ansible.cfg
### We assume some environment variables set as well
# ANSIBLE_HASHI_VAULT_URL: https://env-based-vault.example.com
# ANSIBLE_HASHI_VAULT_TOKEN: s.123456789
### end environment variables
# playbook - ansible-core 2.12 and higher
## set defaults for the collection group
- hosts: all
vars:
ansible_hashi_vault_auth_method: token
module_defaults:
group/community.hashi_vault.vault: "{{ lookup('community.hashi_vault.vault_ansible_settings') }}"
tasks:
- name: Get a secret from the remote host with settings from the controller
community.hashi_vault.vault_kv2_get:
path: app/some/secret
######
# playbook - ansible any version
## set defaults for a specific module
- hosts: all
vars:
ansible_hashi_vault_auth_method: token
module_defaults:
community.hashi_vault.vault_kv2_get: "{{ lookup('community.hashi_vault.vault_ansible_settings') }}"
tasks:
- name: Get a secret from the remote host with settings from the controller
community.hashi_vault.vault_kv2_get:
path: app/some/secret
######
# playbook - ansible any version
## set defaults for several modules
## do not use controller's auth
- hosts: all
vars:
ansible_hashi_vault_auth_method: aws_iam
settings: "{{ lookup('community.hashi_vault.vault_ansible_settings', '*', '!*token*') }}"
module_defaults:
community.hashi_vault.vault_kv2_get: '{{ settings }}'
community.hashi_vault.vault_kv1_get: '{{ settings }}'
tasks:
- name: Get a secret from the remote host with some settings from the controller, auth from remote
community.hashi_vault.vault_kv2_get:
path: app/some/secret
- name: Same with kv1
community.hashi_vault.vault_kv1_get:
path: app/some/secret
######
# playbook - ansible any version
## set defaults for several modules
## do not use controller's auth
## override returned settings
- hosts: all
vars:
ansible_hashi_vault_auth_method: userpass
plugin_settings: "{{ lookup('community.hashi_vault.vault_ansible_settings', '*', '!*token*') }}"
overrides:
auth_method: aws_iam
retries: '{{ (plugin_settings.retries | int) + 2 }}'
settings: >-
{{
plugin_settings
| combine(overrides)
}}
module_defaults:
community.hashi_vault.vault_kv2_get: '{{ settings }}'
community.hashi_vault.vault_kv1_get: '{{ settings }}'
tasks:
- name: Get a secret from the remote host with some settings from the controller, auth from remote
community.hashi_vault.vault_kv2_get:
path: app/some/secret
- name: Same with kv1
community.hashi_vault.vault_kv1_get:
path: app/some/secret
######
# using a block is similar
- name: Settings
vars:
ansible_hashi_vault_auth_method: aws_iam
settings: "{{ lookup('community.hashi_vault.vault_ansible_settings', '*', '!*token*') }}"
module_defaults:
community.hashi_vault.vault_kv2_get: '{{ settings }}'
community.hashi_vault.vault_kv1_get: '{{ settings }}'
block:
- name: Get a secret from the remote host with some settings from the controller, auth from remote
community.hashi_vault.vault_kv2_get:
path: app/some/secret
- name: Same with kv1
community.hashi_vault.vault_kv1_get:
path: app/some/secret
#####
# use settings from a different plugin
## when you need settings that are not in the default plugin (vault_login)
- name: Settings
vars:
ansible_hashi_vault_engine_mount_point: dept-secrets
settings: "{{ lookup('community.hashi_vault.vault_ansible_settings', plugin='community.hashi_vault.vault_kv2_get') }}"
module_defaults:
community.hashi_vault.vault_kv2_get: '{{ settings }}'
block:
- name: Get a secret from the remote host with some settings from the controller, auth from remote
community.hashi_vault.vault_kv2_get:
path: app/some/secret
#####
# use settings from a different plugin (on an indivdual call)
## short names assume community.hashi_vault
- name: Settings
vars:
ansible_hashi_vault_engine_mount_point: dept-secrets
settings: "{{ lookup('community.hashi_vault.vault_ansible_settings') }}"
module_defaults:
community.hashi_vault.vault_kv2_get: '{{ settings }}'
block:
- name: Get a secret from the remote host with some settings from the controller, auth from remote
community.hashi_vault.vault_kv2_get:
engine_mount_point: "{{ lookup('community.hashi_vault.vault_ansible_settings', plugin='vault_kv2_get') }}"
path: app/some/secret
#####
# normally, options with default values are not returned, but can be
- name: Settings
vars:
settings: "{{ lookup('community.hashi_vault.vault_ansible_settings') }}"
module_defaults:
# we usually want to use the remote host's IAM auth
community.hashi_vault.vault_kv2_get: >-
{{
settings
| combine({'auth_method': aws_iam})
}}
block:
- name: Use the plugin auth method instead, even if it is the default method
community.hashi_vault.vault_kv2_get:
auth_method: "{{ lookup('community.hashi_vault.vault_ansible_settings', 'auth_method', include_default=True) }}"
path: app/some/secret
#####
# normally, options with None/null values are not returned,
# nor are private options (names begin with underscore _),
# but they can be returned too if desired
- name: Show all plugin settings
ansible.builtin.debug:
msg: "{{ lookup('community.hashi_vault.vault_ansible_settings', include_none=True, include_private=True, include_default=True) }}"
#####
# dealing with low-precedence env vars and token sink loading
## here, VAULT_ADDR is usually used with plugins, but that will not work with vault_ansible_settings.
## additionally, the CLI `vault login` is used before running Ansible, so the token sink is usually used, which also will not work.
- hosts: all
vars:
plugin_settings: "{{ lookup('community.hashi_vault.vault_ansible_settings', 'url', 'token*', include_default=True) }}"
overrides:
url: "{{ plugin_settings.url | default(lookup('ansible.builtin.env', 'VAULT_ADDR')) }}"
token: >-
{{
plugin_settings.token
| default(
lookup(
'ansible.builtin.file',
(
plugin_settings.token_path | default(lookup('ansible.builtin.env', 'HOME')),
plugin_settings.token_file
) | path_join
)
)
}}
auth_method: token
settings: >-
{{
plugin_settings
| combine(overrides)
}}
module_defaults:
community.hashi_vault.vault_kv2_get: "{{ lookup('community.hashi_vault.vault_ansible_settings') }}"
tasks:
- name: Get a secret from the remote host with settings from the controller
community.hashi_vault.vault_kv2_get:
path: app/some/secret
#####
Возвращаемое значение
Ключ | Описание |
|---|---|
Возвращаемое значение dictionary | Словарь параметров и их значений. Даже при наличии нескольких терминов возвращается только один словарь. Возвращается: при успехе Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/hashi_vault/vault_ansible_settings_lookup.html