Skip to content

Instantly share code, notes, and snippets.

@jgornick
Created August 31, 2014 03:05
Show Gist options
  • Save jgornick/96566d9b90eb1fbd97f5 to your computer and use it in GitHub Desktop.
Save jgornick/96566d9b90eb1fbd97f5 to your computer and use it in GitHub Desktop.
Ansible: Set variable in task module template
---
# 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