`
The default shell for a user if none is specified
users_default_shell: /bin/bash
Create home dirs for new users? Set this to false if you manage home
directories in some other way.
users_create_homedirs: true
Lists of users to create and delete
users:
- username: username
name: full_name_of_user
groups: [‘sudo’]
when: ansible_os_family == “Debian”
groups: [‘wheel’]
when: ansible_os_family == “RedHat”
uid: 2001
ssh_key:
- "ssh-dss AAAAB3N…Enter code here…
`
When conditionals not skipping “RedHat” tasks using the above roles/users/default/main.yml syntax, which is for an ubuntu system
I also tried doing this:
- username: same_as_above_username
name: full_name_of_user
groups: ['wheel']
uid: 1001
… but still not skipping “redhat” tasks
Hope someone can help. TIA
Sorry for the mistype, on 2nd highlighted code syntax, below is the correct one:
In your first example, you can’t stick a “when:” twice in a single task.
You can feed it a list of multiple conditionals, but I think your problem is you are missing a “-” to seperate two different tasks.
However, in the text below, there are other questions and problems, such as “username” vs “user”, which I suspect selects a module, and other duplicated fields, like “groups”.
Another problem is the when is indented and not at “task” level, though the module should yell to you about being sent a parameter it doesn’t know about.
In your second example, is this a task, or is this a data definition? I can’t tell because there is not a module named “username” and once again your indentation is all messed up
If this is your first ansible task, let me know and I can point you to the proper documentation sections, if not, please take a critical eye to how it looks relative to your other tasks and it should be easy to spot.
Again, in failure scenarios, it’s helpful to post the error message. I suspect it’s not only “not skipping”, but the module is telling you what’s wrong.
Wow! that was a lightning fast reply
In your first example, you can’t stick a “when:” twice in a single task.
Thanks for telling that, now I know
You can feed it a list of multiple conditionals, but I think your problem is you are missing a “-” to seperate two different tasks.
Sorry I’m pretty confused with this. What I really wanted to do is to automate creating users (which were sysad dudes) for every new server we build. But the problem is, the DEFAULT user included on /etc/sudoers file were different on Ubuntu (%sudo) and CentOS (%wheel).
So I stick a “when:” twice in a single task.
However, in the text below, there are other questions and problems, such as “username” vs “user”, which I suspect selects a module, and other duplicated fields, like “groups”.
If you mean text below was this:
- username: same_as_above_username
name: full_name_of_user
groups: [‘wheel’]
uid: 1001`
`
Sorry I paste it wrong.
Another problem is the when is indented and not at “task” level, though the module should yell to you about being sent a parameter it doesn’t know about.
I thought “when” must be indented? Which was sampled here: http://docs.ansible.com/playbooks_conditionals.html#the-when-statement
Sorry I pasted it wrong (for unknown cause), here is the correct one:
`
Hi John,
it does not seem like a task, more like variable definition. For example, user module does not have username param, name is used for user name, where you are defining real name.
For examples how to use user module look here: http://docs.ansible.com/user_module.html#examples
David
Yes I forgot to mention, I’m aware that it is a variable definition. The task was located in roles/users/tasks/main.yml which contains:
`
Hi,
that explains it. When is part of task, it cannot be used i variables (i guess).
In this specific case you do not need at all, just define something like:
sudo_group: “{% if ansible_family == ‘RedHat’ %}wheel{% else %}sudo{% endif %}”
in your host_vars, or main.yml in role vars/defaults.
Than just user sudo_group in task.
David
Thanks David I will try that