Я запускаю Ansible 2.2.0.0 для создания пользователей на сервере CentOS 7 со следующим:
- name: User creation
user: name="{{item.username}}"
group="{{item.username if users_create_per_user_group
else item.group}}"
groups="{{item.groups | join(',')}}"
shell="{{item.shell if item.shell is defined else users_default_shell}}"
comment="{{item.name}}"
uid="{{item.uid}}"
home="{{item.home if item.home is defined else []}}"
password="{{ item.password if item.password is defined else '!' }}"
with_items: "{{users}}"
tags: ['users','configuration']
Я назначаю wordpress для primary_group (чтобы разработчики контента могли читать и писать в своей области wordpress, не беспокоясь о chgrp'ing своих файлов), и я вижу, что переменная назначается правильно в выводе playbook:
ok: [someserver] => (item={u'username': u'someuser', **u'group': [u'wordpress']**, u'name': u'somefirstname somelastname', u'ssh_key': [u'ssh-rsa AN_SSH_PUBLIC_KEY'], u'groups': [u'someuser', u'apache', u'sftpusers'], u'password': u'A UNIX PASSWORD HASH', u'uid': 2101})
Но основная группа пользователя остается «someuser», а не «wordpress», хотя ошибок не возникает.
Чтобы расширить мысли Константина:
Добавьте оператор отладки прямо перед созданием пользователя, чтобы проверить значение users_create_per_user_group
- name: Debug users_create_per_user_group
debug: var=users_create_per_user_group
Обновите создание пользователя, чтобы вы могли group
как список
- name: User creation
user: name="{{item.username}}"
group="{{item.username if users_create_per_user_group
else (item.group if item.group is string else item.group[0]) }}"
groups="{{item.groups | join(',')}}"
shell="{{item.shell | default(users_default_shell) }}"
comment="{{item.name}}"
uid="{{item.uid}}"
home="{{item.home | default([])}}"
password="{{ item.password | default('!') }}"
tags: ['users','configuration']