Docker module - idempotence problem

99 views
Skip to first unread message

Andrew Pashkin

unread,
Sep 16, 2014, 6:29:30 AM9/16/14
to ansible...@googlegroups.com
Hi all!

I've found, that if run such command:
- docker: image=registry state=running
And then:
- docker: image=registry state=running env="SOMEVAR=1"
The module will return "ok", not "changed" and docker container will not be relaunched with new parameters.
At first sight it may seem like this problem can be easily resolved by introducing some check in the module.
But if we think better we will find at least two problems:
1) What the module should do with a container that was launched with old parameters?

2) docker run registry -e "SOMEVAR=1" is a different call from just docker run registry, but the only way to inspect what environment variables in a container (AFAIK) is docker inspect -f "{{ .Config.Env }}" our_container and there will be some default environment variables as HOME. And also we need to ensure that there is no stale user-defined environment variables. So I don't see any straight-forward ways to check if a container was launched with exact environment variables as defined in current version of playbook.
I want to discuss, what is the best way to make this module operate fully in idempotent fashion.
-- 
With kind regards, Andrew Pashkin.
cell phone - +7 (985) 898 57 59
Skype - waves_in_fluids
e-mail - andrew....@gmx.co.uk

Michael DeHaan

unread,
Sep 16, 2014, 8:29:31 AM9/16/14
to ansible...@googlegroups.com
That parameter is probably intended to be set only at launch time, and is not so much an idempotence problem so much as it's probably not changing anything.

Worth checking.  Idempotence is a frequently misunderstood concept, which is why we try to not use the word very much.

It only means that repeated runs on the same thing to not introduce new effects F(x) = F(F(x)), it's not so much about return codes.

Also, for completeness, please share the version of Ansible that you are using?

Thanks!


--
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/541810FD.6030907%40gmx.co.uk.
For more options, visit https://groups.google.com/d/optout.

Andrew Pashkin

unread,
Sep 16, 2014, 12:06:04 PM9/16/14
to ansible...@googlegroups.com
I use Ansible 1.7.1

Can you express your agumentation in application to the specific problem with docker module and evn. vars?

Regarding idempotence concept - seems like you right.

By the way I think I've found a workaround - instead of env. vars there is possible to use a config file, so it will be easier to check for changes, and whats regarding to issue 1) - I think it is possible to use container names for that and check specific names everytime - not random auto-generated by docker.

For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages