Hi,

I'm trying to create some sort of factory pattern I guess in my vars files 
for creating Amazon data pipeline jobs. What I want is to have a list of 
dicts, and each one will contain a parameter ("step") that I want to be 
different per item. However, since this value is quite large & complicated, 
and will be used for 90% of the items, i don't want to have to duplicate 
this value 40 or so times.

So, is it possible to include a vars file in another one? I tried using 
jinja2's "include" function, but it complained that certain variables 
weren't defined because it was trying to resolve the variables in the 
included file. In fact, those variables should be parsed later in the main 
play, now when including one vars file into the main one. I can't use roles 
because this is part of a larger pattern in which the main vars file is 
loaded dynamically depending on another variable.

Some examples might make clear what I mean.

Here's my playbook, "create-job.yml":

- name: "Create a data pipeline and definition for {{ product }} {{ job }}"
  hosts: localhost
  gather_facts: True
  vars_files:
    - "vars/pipelines/{{ group }}/env/{{ env }}.yml"
    - "vars/pipelines/{{ group }}/{{ job }}.yml"


Here's my vars file, "job1.yml", for the "job1" job:

template: multiple-emr
startTime: 03:00:00
definitions:
- product: web_v2
  suite: websuite
  {% include default_step.yml %}         # how to include "default_step.yml"?
- product: db2
   suite: dbsuite
  {% include default_step.yml %} 
- product: custom
  suite: customsuite
  {% include custom_step.yml %} 
... x 40


And here's the contents of "default_step.yml":

s3_precondition: "/raw/data/#{node.myDate}/{{ product }}/"
step:
- "s3://my-bucket/artifacts/emr-jar-2.1.1.jar"
- "com.example.SampleEMR"
- "-Dinput=s3n://example-{{ env }}-data{{ s3_precondition | replace('node.', 
'') }}*{{ suite }}_#{myDate}.*.gz"
- "-Doutput=s3n://example-{{ env }}-data/intermediate/data/#{myDate}/{{ product 
}}/{{ suite }}/",
- "-DoutputFormat=json",
...


How can I achieve this with ansible?

Mark

-- 
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/cbe7f116-aadf-4d57-94ea-712834cb498a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to