Ansible Modules. Modules are Ansible’s way of abstracting certain system management or configuration tasks. In many ways, this is where the real power in Ansible lies. By abstracting commands and state into modules, Ansible is able to make system management idempotent.This is an important concept that makes configuration management tools like Ansible much more powerful and safe than. Apr 28, 2018 Join GitHub today. GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Contents
We are going to use Ansible to create user accounts and add users to groups, setup them up with access via ssh using by adding their public keys to authorized_key files. For the minimum version of this task we are just going to do four things:
/etc/sudoers
so the users can use sudo
without entering a password
The guide has been tested using a new Digital Ocean Ubuntu 17.04 Droplet on the cheapest plan, and everything runs as root when connected to the server via ssh or console (Such as with Digital Ocean’s Console option on the control panel)
For this guide we are going to setup the playbook to run a server directly, using the “local” connection method so when run as root we don’t need to worry about additional authentication or setting up host inventories.
To get Ansible installed you can just run apt-get install ansible
which will install version 2.2. Or check out the Ansible documentation if you want to get the latest version.
To check everything is working as it should, it’s best to run a barebones playbook with just a ping
task which will check your setup using the simplest version of a playbook possible.
Github create ssh key mac. Create a file called users.yml
with the following snippet, and run it with ansible-playbook users.yml
Don’t worry about the [WARNING]: provided hosts list is empty, only localhost is available
message, we are only working with localhost so this is to be expected.
At the top of the playbook, we add a simple list of usernames.
Now we have a list of usernames in a variable, we can use that to create user accounts.
In it’s simplest form the Ansible User Module just needs to be given a name
, and we can use the with_items
to apply our list to the module in a loop.
When using with_items
the value becomes available as item
, in it’s simplest form you '{{ item }}'
will use the item value for a module property.
So our users are more useful, we are also going to add the groups
admin and www-data to each user.
Now you cand download activated GRID 2 CD-Key Generator from. Grid 2 cd key generator. Earn fame, fans and fortune as you blaze your way to the top in intense, relentless races on licensed circuits, beautifully realised city streets and lethal mountain roads. GRID 2 CD-Key GeneratorThis tool was coded on Visual C and before you download the software you need to have installed the following software. GRID 2 will also set the new standard for multiplayer racing with innovative modes, an entirely separate progression system and deep integration with RaceNet, the free online extension for Codemasters Racing games.
The newly created user accounts on a server don’t have passwords set, so to be able to log in we need to add each users ssh key to their authorize_keys file. We can do this using Ansible’s Authorized Key Moduleauthorized_key
that takes user
and a file in key
.
key
takes a file, which can be loaded using the lookup('file','path to file')
function. In this code, we put the public SSH keys in files/username.key.pub
. By having the file names match to the username we can use the same users
var for the loop without needing to add additional parameters at this stage.
Now your users can login with their ssh keys, but won’t be able to do any server admin with sudo
because without passwords set, they can’t enter their password when prompted when they use the command as per the default behaviour. To get around this limitation, we can update /etc/sudoers
with Ansible’s lineinfile Module.
This simple implementation of the lineinfile
looks for a line starting with – represented in a regexp as ^
– with the string %admin
and then ensures it matches the line
%admin ALL=(ALL) NOPASSWD: ALL
Once in place, any users in the admin group will no longer be prompted for a password when using sudo
The next part of this guide steps up to the Viable version, by defining expanding the vars to have multiple properties per item using complex vars to add groups per user, using user state for a method to disable users accounts. The improved playbook also introduces handlers and notify to restart services when the configuration changes. Improve the user management playbook in the next guide.