How about moving the common authentication values into their own key in the
dictionary
- name: Test variable composition
hosts: localhost
gather_facts: false
vars:
common:
var1: var1
shell: "{{ lookup('env', 'SHELL') }}"
test1:
a: 1
b: 2
common: "{{ common }}"
test2:
a: 3
b: 4
common: "{{ common }}"
tasks:
- debug: var=common
- debug: var=test1
- debug: var=test2
Output
(ansible)[ec2-user@ip-10-0-0-226 playbooks]$ ansible-playbook -i launched
test_output.yml
PLAY [Test variable composition]
**********************************************
TASK: [debug var=common]
******************************************************
ok: [localhost] => {
"common": {
"shell": "/bin/bash",
"var1": "var1"
}
}
TASK: [debug var=test1]
*******************************************************
ok: [localhost] => {
"test1": {
"a": 1,
"b": 2,
"common": {
"shell": "/bin/bash",
"var1": "var1"
}
}
}
TASK: [debug var=test2]
*******************************************************
ok: [localhost] => {
"test2": {
"a": 3,
"b": 4,
"common": {
"shell": "/bin/bash",
"var1": "var1"
}
}
}
PLAY RECAP
********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0
Thanks!
Michael
On Tuesday, October 21, 2014 2:55:23 AM UTC-5, Tomas Karasek wrote:
>
> Hello,
>
> I am testing OpenStack modules and I wonder if it's possible to somehow
> "pre-define" a dictionary for a resource to avoid repeating parameter
> declarations. I have:
>
> ---
> - quantum_network:
> auth_url: "{{ lookup('env', 'OS_AUTH_URL') }}"
> login_username: "{{ lookup('env', 'OS_USERNAME') }}"
> login_password: "{{ lookup('env', 'OS_PASSWORD') }}"
> login_tenant_name: "{{ lookup('env', 'OS_TENANT_ID') }}"
>
> name: "{{ network_name }}"
>
> - quantum_subnet:
> auth_url: "{{ lookup('env', 'OS_AUTH_URL') }}"
> login_username: "{{ lookup('env', 'OS_USERNAME') }}"
> login_password: "{{ lookup('env', 'OS_PASSWORD') }}"
> login_tenant_name: "{{ lookup('env', 'OS_TENANT_ID') }}"
>
> cidr: "{{ subnet_cidr }}"
> name: "{{ subnet_name }}"
> [end of YAML]
>
> All the OpenStack modules have the 4 authentication parameters, and I
> would like to somehow remove the duplicity of declaring them every time
> again.
>
> If it would be some OOP oriented programming language, I would create an
> abstract class and inherit. If it would be python, I would create a base
> dict and then copy it and extend it. I am not sure how to achieve this in
> Ansible and YAML.
>
> Is there a way to declare the auth values only one time?
>
> Thanks.
>
> Cheers,
> Tomas
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/d6f2fc6a-1703-4a2e-a265-7a03a971ce94%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.