My ansible version:
etdev@rlotttrustystock101012240:~$ ansible --version
ansible 1.9.2
configured module search path = None
I am using a local connection (i.e. doing stuff on my local machine).
In my playbook, I have the following line that checks out additional code repos to build using the git module:
`
- name: Checkout src directories
register: repos_state
git: repo={{ item.value.url }} dest={{ item.value.checkout_dir }} version={{ item.value.revision }} force=true
with_dict: “{{ repos }}”
`
The repos variable is defined something like this:
repos: dcs: url: "http://supersecretrepo/dcsurl.git" revision: 283fa10 checkout_dir: "{{ srcdir }}/dcs" build_dir: "{{ srcdir }}/dcs" ecp: url: "http://supersecretrepo/ecpurl.git" revision: fad759e checkout_dir: "{{ srcdir }}/ecp" build_dir: "{{ srcdir }}/ecp" vue: url: "http://supersecretrepo/vueurl.git" revision: dc9acab checkout_dir: "{{ srcdir }}/vue/vue" build_dir: "{{ srcdir }}/vue"
I have a task following this that builds stuff from these repositories:
`
- name: Build the software
shell: nohup make deb > /tmp/{{ item.key }}-build.txt chdir={{ item.value.build_dir }}
with_dict: “{{ repos }}”
when: repos_state.changed
`
So, when the variable repos_state shows an overall change, then it will rebuild ALL the software locations.
What I would like to know is if there is a more fine grained way to do this. Let’s say that I update the revision for repo dcs. In this case, I want my build software to only build the one that has changed. I have tried to figure out how to do this but haven’t had much luck.
Does anyone have a suggestion about how I could do this? I tried “when: repos_state[ {{item.key}} ].changed” but that didn’t work.
I’m still fairly new to Ansible so I apologize if my question is simple.
Thanks.
Rodney