In Ansible, se provo a utilizzare una variabile come nome parametro o un nome chiave, non viene mai risolta. Per esempio, se ho {{ some_var }}: true
, o:risolve la chiave del dizionario o la variabile parametro in Ansible
template: "{{ resolve_me_to_src }}": "some_src"
le variabili saranno solo utilizzati letteralmente e mai risolvere. Il mio caso uso specifico sta usando questo con il modulo EC2, in cui alcuni dei miei nomi dei tag vengono memorizzati come variabili:
- name: Provision a set of instances
ec2:
group: "{{ aws_security_group }}"
instance_type: "{{ aws_instance_type }}"
image: "{{ aws_ami_id }}"
region: "{{ aws_region }}"
vpc_subnet_id: "{{ aws_vpc_subnet_id }}"
key_name: "{{ aws_key_name }}"
wait: true
count: "{{ num_machines }}"
instance_tags: { "{{ some_tag }}": "{{ some_value }}", "{{ other_tag }}": "{{ other_value }}" }
C'è un modo per aggirare questo? Posso contrassegnare che voglio forzare la valutazione in qualche modo?
Che ne dici di creare una var che contenga i tuoi tag? Ad esempio, instance_tags: {{my_instance_tags}} – jarv
@jarv Sono al 100% interessante con questo, ma quando creo il var mi imbatto negli stessi identici problemi. Usando 'set_fact' per creare il dizionario, non elabora le chiavi come variabili. – Eli
Vorrei isolare il tuo problema dal modulo ec2, prova ad aggiungere un "- debug: var = my_instance_tags" prima del task ec2 per vedere cosa ha Ansible per la var. – jarv