Ansible = usar fatos como variáveis no arquivo de inventário

1

Estou usando o Ansible para instalar e configurar o Red Hat OpenShift. Um dos desafios que estou enfrentando atualmente é configurar a autenticação LDAP usando um playbook. Eu preciso adicionar a seguinte variável ao arquivo de inventário Ansible -

Autenticação LDAP

openshift_master_identity_providers=[{'name': 'idm-ldap', 'challenge': 'true', 'login': 'true', 'kind': 'LDAPPasswordIdentityProvider', 'attributes': {'id': ['dn'], 'email': ['mail'], 'name': ['cn'], 'preferredUsername': ['uid']}, 'bindDN': '"uid=<...>-bind,cn=users,cn=accounts,dc=<...>-01-<...>,dc=svcs,dc=<...>,dc=com"', 'bindPassword': {'file': '/etc/origin/master/artifacts/<...>.encrypted', 'keyFile': '/etc/origin/master/artifacts/<...>.key'}, 'ca': '/etc/origin/master/artifacts/<...>.crt', 'insecure': 'false', 'url': '"ldaps://<...>.<...>-<...>-<...>.<...>.<...>.com:<...>/ou=users,dc=example,dc=com?uid"'}]*

Como este manual será usado em diferentes ambientes, eu realmente gostaria de poder usar o fato do hostname atual do host ansible no tempo de execução do playbook como uma variável para substituir o valor de url': '"ldaps://etc" . / p>

Isso é possível? Eu fiz muitas buscas, mas não encontrei nenhuma maneira de fazer isso?

    
por Dominic Murphy 12.06.2018 / 10:00

1 resposta

1

Você pode inserir uma variável dentro de uma string variável usando jinja2 da mesma forma que você faz dentro de playbooks e arquivos de tarefas (usando chaves duplas dentro de aspas duplas):

INI:

myvar="{{ ansible_fqdn }}"

YAML:

---
myvar: "{{ ansible_fqdn }}"

Aplicado especificamente ao seu exemplo:

openshift_master_identity_providers="[{'name': 'idm-ldap', 'challenge': 'true', 'login': 'true', 'kind': 'LDAPPasswordIdentityProvider', 'attributes': {'id': ['dn'], 'email': ['mail'], 'name': ['cn'], 'preferredUsername': ['uid']}, 'bindDN': '"uid=-bind,cn=users,cn=accounts,dc=-01-,dc=svcs,dc=,dc=com"', 'bindPassword': {'file': '/etc/origin/master/artifacts/.encrypted', 'keyFile': '/etc/origin/master/artifacts/.key'}, 'ca': '/etc/origin/master/artifacts/.crt', 'insecure': 'false', 'url': 'ldaps://{{ ansible_fqdn }}:/ou=users,dc=example,dc=com?uid'}]"

Observe que o valor inteiro da variável tem aspas duplas em torno dele. Estou assumindo que este é o comportamento pretendido, caso contrário, seria melhor usar o YAML para criar um dicionário mais complexo.

    
por 13.06.2018 / 06:38