Re: ansible playbooks git module usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Greetings. 

Hello, I've signed up to respond to this thread, I hope that's ok. 
I'll send an introductory email later.

> In my continuing quest to get our daily ansible check/diff report to be
> 0 and all playbooks to be idempotent I have run into a case I would
> like to ask everyone about. :) 
> 
> The ansible git module is in use in a number of playbooks/roles now. By
> default (or if you specify update=yes) it will do a git pull to pull
> the latest changes, so it's not idempotent (ie, when running --check it
> always shows such tasks as changed because it cannot know if there's
> going to be new data or not)

That's not my reading of the git module (it checks to see if remote head
is the same as current head before fetching - changed should be False, 
even in check mode, if there are no new commits. I haven't tested if this
is actually the behaviour, but if not, it sounds like that's a bug in the git
module). 

Having said that, if you seek repeatability you need to solve this problem 
either way

> There's a number of ways we could handle this: 
> 
> 1. Set all git: module usage to have 'update=no'. 
> 2. Set all git: module usage to use 'version=SHA-1'.
> 3. Set all git: module usage to have 'changed_when: False' so they
> would never show as changed.
> 4. Set all git: modules to when: not ansible_check_mode
> 5. Weed out these git changes from our reports so they still are
> changed, but don't annoy me. 
 
> Personally, I am torn between 1 and 2 and dislike 3 and 4 and really
> dislike 4. 

The only way you'll have new infrastructure be consistent with existing
infrastructure is 2. It's more work, but it's more correct.

As you say, the problem with 1 is that old infrastructure will be pinned to
whatever version it gets built with, and new infrastructure may well receive
a later commit. 

3 and 4 are just ways of making ansible misreport the truth.

5 is simply ignoring the problem - and you're right that it's an actual problem.

One of the ansible-lint rules is designed to encourage the use of 2.
https://github.com/willthames/ansible-lint/blob/master/lib/ansiblelint/rules/GitHasVersionRule.py

Will
_______________________________________________
infrastructure mailing list
infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
https://lists.fedoraproject.org/admin/lists/infrastructure@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux