I have JSON file with database credentials and want to create playbook with external parameters to make migration between databases.
Firstly, I get JSON-data. Also, I have 2 variables like potential external arguments.
vars:
db_credentials: "{{ lookup('file','/etc/ansible-configs/config/db-migration/db-credentials.json') | from_json }}"
db_from: "{{ _db_from }}"
db_to: "{{ _db_to }}"
Next, I'm going to get value by key on my recently parsed JSON.
- name: "Test"
debug:
msg: "{{ lookup('dict', db_credentials.project_1.dev_1) | selectattr('key', 'defined') | map (attribute='value') | first }}"
JSON:
{
"project_1": {
"dev_1": {
"server": "172.31.40.208",
"port": "5432",
"db": "db_dev_1",
"login": "login",
"password": "passw0rd"
},
"project_2": {
"server": "172.31.40.208",
"port": "5432",
"db": "db_uat_1",
"login": "login",
"password": "passw0rd"
}
}
}
The question is I want to pass parameters like project_1.dev_1.
# ansible-playbook playbooks/migrate-db.yml -e '{"db_from":"project_1.dev_1"}'
How can I use it in my code?
I want something like this:
msg: "{{ lookup('dict', db_credentials.{{ db_from }}) | selectattr('key', 'defined') | map (attribute='value') | first }}"
But it doesn't work.