Top Banner
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ansible Galaxy Serena Lorenzini (BioDec.com) Pycon otto Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 1 / 34
34

Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

Sep 13, 2018

Download

Documents

doantuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Ansible Galaxy

Serena Lorenzini (BioDec.com)

Pycon otto

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 1 / 34

Page 2: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Topics

What is Ansible?What is Ansible Galaxy?Download and advanced download.Create reusable Ansible roles with the Galaxy.Ansible, Github and TravisCI.The Biodec role template.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 2 / 34

Page 3: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

What is Ansible?

Ansible is a radically simple IT automation platform that makes yourapplications and systems easier to deploy.

Avoid writing scripts or custom code to deploy and update yourapplications.Automate in a language that approaches plain English, using onlySSH (and python).No agents to install on remote systems.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 3 / 34

Page 4: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

What is Ansible?

Ansible is a python tool that automates the provisioning of an ITinfrastructure through SSH connection.Ansible instructions are written in plain yaml and can (have to) beorganized in roles.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 4 / 34

Page 5: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Why should I use it?

Because you are doing at least one of these activities:

NetworkingSofware deploymentSoftware upgradesSecurity upgradesProvisioning systemsUser management in OSBuilding clusters

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 5 / 34

Page 6: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install Ansible

Being a python product installing Ansible is as easy as typing:

$ pip install ansible

Tip: install Ansible (preferably) in a dedicated python virtualenv usingthe pip python package manager.

$ pip install virtualenv$ virtualenv myproject$ . myproject/bin/activate$ (myproject) pip install Ansible==2.1.4.0

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 6 / 34

Page 7: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install Ansible

and you will find a load of ansible-related tools:

ansibleansible-consoleansible-containeransible-docansible-galaxyansible-lintansible-playbookansible-pullansible-vault

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 7 / 34

Page 8: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

What is Ansible Galaxy?

It is the Ansible’s official community hub for finding, downloading, rating,and sharing Ansible roles…”So, it is …

a command line toola website

for searching, installing, creating and managing roles.

Many many projects can be found in the galaxyMany many duplicatesQuality from excellent through broken to horribly dangerous

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 8 / 34

Page 9: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

A word on roles

Roles are a level of astraction that allows to write clean and reusableansible code.Roles are just automation around include directives, and don’t containmuch beyond some improvements to search path handling for referencedfiles. However, that can be a big thing!

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 9 / 34

Page 10: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Why using Ansible Galaxy?

Ansible is easy to learn but rushing to use it with a limited knowledge ofits best practices leads to not reusable code.Creating reusable Ansible roles is a strongly encouraged practice.During this presentation we will take a look at a tool designed for thispurpose: Ansible Galaxy. It comes bundled with Ansible and its mainpurpose is to share roles using the Galaxy hub and other SCMs.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 10 / 34

Page 11: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install Ansible GalaxyAnsible Galaxy comes bundled with Ansible. Install Ansible and type yourfirst Galaxy command:

$ ansible-galaxy -hUsage: ansible-galaxy

deleteimportinfoinitinstalllistloginremovesearchsetup

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 11 / 34

Page 12: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Download a role from the Galaxy hub

Let’s look at some useful command: install.

$ ansible-galaxy install username.rolename

And it will download the role fromhttps://galaxy.ansible.com/username/rolename/ in the ansible roles path.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 12 / 34

Page 13: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Advanced download

You can do more than installing one role at time…

Install multiple roles at once.Install roles from various SCMs.Specify the roles path.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 13 / 34

Page 14: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install multiple roles at once

Write a requirements.yml file. It contains a list of roles to bedownloaded:

# from galaxy- src: userone.roleone- src: usertwo.roleone- src: usertwo.roletwo

Provide the file to ansible-galaxy command:

$ ansible-galaxy install -r requirements.yml

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 14 / 34

Page 15: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install roles from various SCM

Be sure to have set the credentials (i.e. add SSH key) to authenticateyourself.

From Github:

# from Github- src: https://github.com/bennojoy/nginx

version: mastername: nginx_role

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 15 / 34

Page 16: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Install roles from various SCM

From a webserver:

# where the role is packaged in a tar.gz- src: https://webserver.example.com/files/master.tar.gz

name: http-role

From other git scm:

# from GitLab or other git-based scm- src: [email protected]:mygroup/ansible-base.git

scm: gitversion: "0.1" # quoted, for YAML parser

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 16 / 34

Page 17: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Specify the roles path

Ansible downloads roles to the path specified by the environment variableANSIBLE_ROLES_PATH. This can be set to a series of directories (i.e./etc/ansible/roles:~/.ansible/roles).You can override this by:

setting the environment variable in your sessiondefining roles_path in an ansible.cfg fileusing the –roles-path option.

$ ansible-galaxy install --roles-path . -r requirements.yml

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 17 / 34

Page 18: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Create Ansible roles using Ansible Galaxy

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 18 / 34

Page 19: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

The init command

The first step in creating a role is creating its directory structure.Use the init command to initialize the base structure of a new role,saving time on creating the various directories and main.yml files a rolerequires.

$ ansible-galaxy --offline init role_name

The above will create a role named role-name.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 19 / 34

Page 20: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Create Ansible roles using Ansible Galaxy

The role structure:

README.md.travis.ymldefaults/main.ymlfiles/handlers/main.ymlmeta/main.ymltemplates/tests/

inventorytest.yml

vars/main.yml

…wait… a Travis file?Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 20 / 34

Page 21: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Ansible and Travis

Github is the main git scm for sharing Ansible roles, and it integratesvery well with TravisCI.Starting from ansible 2 the role template contains a minimal setup forrunning tests with Travis.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 21 / 34

Page 22: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Ansible and TravisThe travis file:

language: pythonpython: "2.7"

addons:apt:

packages:- python-pip

install:- pip install ansible

script:- ansible-playbook tests/test.yml -i tests/inventory \

--syntax-check

notifications:webhooks: https://galaxy.ansible.com/api/v1/notifications/

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 22 / 34

Page 23: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Ansible galaxy, github and Travis

The galaxy imports roles from Github and, since Ansible 2, it shows theTravis build status as well!You will need:

the Travis token to authenticate your repo ansible-galaxy setupto add notifications to travis.yml file

notifications:webhooks: https://galaxy.ansible.com/api/v1/notifications/

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 23 / 34

Page 24: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

What if I have roles on another scm?

Like we do in Biodec? We save our work in a self-hosted Gitlab service.Gitlab is a great alternative to Github and has its own services for runningCI/CD pipelines.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 24 / 34

Page 25: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

The Biodec role template

We have come to like a different role structure when developing our roles,mainly because we have our private Gitlab server where we push/downloadour roles instead of Github.

We have a gitlab-ci.yml (not travis.yml).We have a requirements.txt for installing ansible via pip (we liketo fix the versions).We have a ansible.cfg to declare roles path (instead of writing iton the fly).We have a install_roles.yml to download other roles, along withmeta.yml.We don’t have tests dir (there are no proper tests). and we havemoved test.yml in project dir.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 25 / 34

Page 26: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

The Biodec role template

.gitlab-ci.ymlREADME.mdansible.cfgdefaults/main.ymlfiles/install_roles.ymlhandlers/main.ymlmeta/main.ymltemplates/test.ymlproduction.ymlrequirements.txtvars/main.yml

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 26 / 34

Page 27: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Our CI file

CI tests in Docker containers:

test:image: python:2.7script:

- apt-get update -y && \apt-get install -y python python-dev python-pip- pip install -r requirements.txt- echo localhost > inventory- ansible-playbook -i inventory \test.yml --connection=local

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 27 / 34

Page 28: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Creating roles using our template

How do you create an Ansible-galaxy template?The “easy way”:

ansible-galaxy init --role-skeleton=/path/to/skeleton role_name

Or configure ansible.cfg

[galaxy]role_skeleton = /path/to/skeletonrole_skeleton_ignore = ^.git$,^.*/.git_keep$

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 28 / 34

Page 29: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Creating roles using our template

Other ways:

Fork the code (not easily updatable) so the init command will loada different role template.Create a git project where you put the role template and run gitclone instead of ansible-galaxy init.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 29 / 34

Page 30: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Create Ansible roles using Ansible Galaxy

Conclusion

Ansible is easy to startAnsible solves 80% of our problems (devops people)Ansible is a popular technology constantly evolving and addingmodulesit keeps up with almost every type of OS or virtualization typeYou can use Ansible Galaxy with your private galaxy of roles and youcan build your own role skeleton.

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 30 / 34

Page 31: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

4devops

4devops

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 31 / 34

Page 32: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

4devops

4devops next appointments

Workshop Docker e Container day, 27-28 Aprile 2017, Verona (Italy)Progettare e far evolvere infrastrutture cloud su AWS, 4 maggio 2017,Milano (Italy)Orchestrators and Containers day, 24 May 2017 in Chiasso(Switzerland)

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 32 / 34

Page 33: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Thank you

Thank you

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 33 / 34

Page 34: Serena Lorenzini (BioDec.com Pycon otto · Topics What is Ansible? What is Ansible Galaxy? Download and advanced download. Create reusable Ansible roles with the Galaxy. Ansible,

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

...

.

Thank you

Contacts

Serena Lorenzini email: [email protected] www.biodec.com

Serena Lorenzini (BioDec.com) Ansible Galaxy Pycon otto 34 / 34