 Hello, my name is Sergey Golotsynsky, I am a software engineer at Johns Hopkins University and a member of the galaxy team. Today I will give you a brief introduction to get Ansible, after which you will move on to the Ansible tutorial. In these slides and the follow up tutorial, we will try to answer questions such as what is Ansible, why Ansible, how we want to use Ansible, how to write an Ansible role, and how to leverage community built roles. The overall objectives of this part of the training are to learn Ansible basics to write a simple Ansible role and to install a role from Ansible Galaxy. Configuration management manages the configuration of machines. It specifies what software should be installed and how it should be configured. So why do you want configuration management? Well, what do you do when things go wrong? What if your server dies? Did you back up your configuration? Did you back up your web server configuration? Ansible provides an answer to these and similar challenges. Overall, the goals of configuration management are reproducibility, uniformity, and recovery. Ansible is a very popular open source configuration management tool sponsored by Red Hat. There are several alternatives, but the Galaxy project uses Ansible. Ansible uses an agentless model. You simply SSH into your machines and execute commands in them. Ansible has many popular pre-existing roles for many common tasks. Before you start the tutorial, we'll go over several key concepts. First is the inventory file. This file lists all of your hosts. The group name is in the square brackets. Group names are used to select a set of systems on which Ansible will operate. It is possible to assign variables to hosts and groups. Here we override the Ansible user variable on two hosts. This variable controls which user is used to log in. A module is a piece of code that Ansible can execute on a host collecting return values. A task is an invocation of a single module with its configuration. Here is an example of invoking the copy module and the package module. Copy is a file from source on the local host to destination on the remote host. Then it sets some attributes about the file like owner, group and mode. Next we see an example of the package module. This is a generic OS package manager module. It ensures for the package named NTP date its state is present that is installed. A role is a collection of tasks, files, templates, variables and handlers. Tasks are things to be executed like a copy task to add files to a remote machine. Files contain static unchanging files that are used by the tasks. Templates are like files but they contain variables that will be replaced when Ansible deploys the file. Variables contain definitions of variables for use in templates and in tasks. Handlers manage services restarting them when configuration changes. A playbook is a YAML file listing a set of tasks and roles that should be applied to a group of hosts. This is an example playbook. We give it a name in this case CVMFS. Then we select two hosts, in this case all hosts known to our inventory file. We specify some additional variables and then we invoke two roles. If you have secrets like API keys or passwords, you need to use Vault. Vault encrypts your secrets with a password so you can include them in your playbooks. This lets you collaborate on playbooks and infrastructure publicly with Git. There are multiple ways of designing playbooks. Use one that fits your use case. Some prefer a playbook which does everything so no step can be forgotten. Others prefer playbooks which do individual steps. These can be faster and you can only run the ones that change. Ansible has a repository for public roles. There are a huge number of available roles for common tasks. It is called Ansible Galaxy but it is a different Galaxy. To sum up Ansible lets you do system administration at scale. Many system administration, software installation and software management tasks are already available as Ansible tasks for roles. Thank you.