Мы можем использовать команду Ansible adhoc, чтобы получить интересующую переменную, ldap_config
.Для начала мы собираемся использовать этот adhoc для получения строки зашифрованного хранилища Ansible:
$ ansible -i "localhost," all \
-m debug \
-a 'msg="{{ ldap_config }}"' \
--vault-password-file=~/.vault_pass.txt \
-e@inventory/group_vars/env1
localhost | SUCCESS => {
"msg": "ABCD......."
Обратите внимание, что мы:
- с использованием модуля
debug
ираспечатав переменную msg={{ ldap_config }}
- , указав
ansible
путь к секрету для расшифровки зашифрованных строк - с использованием нотации
-e@< ...path to file...>
для передачи файла с зашифрованными переменными хранилища
Теперь мы можем использовать фильтры Jinja2, чтобы выполнить остальную часть анализа:
$ ansible -i "localhost," all \
-m debug \
-a 'msg="{{ ldap_config | b64decode | from_yaml }}"' \
--vault-password-file=~/.vault_pass.txt \
-e@inventory/group_vars/env1
localhost | SUCCESS => {
"msg": {
"apiVersion": "v1",
"bindDN": "uid=readonly,cn=users,cn=accounts,dc=mydom,dc=com",
"bindPassword": "my secret password to ldap",
"ca": "",
"insecure": true,
"kind": "LDAPSyncConfig",
"rfc2307": {
"groupMembershipAttributes": [
"member"
],
"groupNameAttributes": [
"cn"
],
"groupUIDAttribute": "dn",
"groupsQuery": {
"baseDN": "cn=groups,cn=accounts,dc=mydom,dc=com",
"derefAliases": "never",
"filter": "(objectclass=groupOfNames)",
"scope": "sub"
},
"tolerateMemberNotFoundErrors": false,
"tolerateMemberOutOfScopeErrors": false,
"userNameAttributes": [
"uid"
],
"userUIDAttribute": "dn",
"usersQuery": {
"baseDN": "cn=users,cn=accounts,dc=mydom,dc=com",
"derefAliases": "never",
"scope": "sub"
}
},
"url": "ldap://192.168.1.10:389"
}
}
ПРИМЕЧАНИЕ: В приведенном выше разделе -a 'msg="{{ ldap_config | b64decode | from_yaml }}"
это то, что делает тяжелыйподъем с точки зрения преобразования из Base64 в YAML.
Ссылки