Created
August 31, 2014 03:05
-
-
Save jgornick/96566d9b90eb1fbd97f5 to your computer and use it in GitHub Desktop.
Ansible: Set variable in task module template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# Global Users Collection | |
users: | |
- username: user1 | |
state: present | |
name: User 1 | |
keys: | |
- pub-key-01 | |
groups: | |
- www-data | |
- username: user2 | |
state: present | |
name: User 2 | |
keys: | |
- pub-key-02 | |
groups: | |
- admin | |
--- | |
# Per-Host User Memebership Collection | |
users_host_membership: | |
- username: user1 | |
# override defaults in global | |
groups: | |
- www-data | |
- admin | |
- username: user2 | |
state: absent | |
--- | |
# User task to setup user | |
user: > | |
{% set host_user = users_host_membership | selectattr('username', item.username) | first %} | |
{% set host_user_groups = host_user | attr('groups') %} | |
{% set user_state = host_user.state if host_user.state is defined else item.state %} | |
name={{ item.username }} | |
state={{ user_state }} | |
{% if user_state = 'absent' %} | |
force=yes | |
remove=yes | |
{% endif %} | |
groups={{ (host_user_groups | join(',')) if (host_user_groups | length) > 0 else (item.groups | join(',')) if (item.groups | length) > 0 else '' }} | |
when: "(users_host_membership | selectattr('username', item.username) | length) > 0" | |
with_items: users |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment