Ansible Basics - Adfinis SyGroup · 2020-04-28 · $ ansible test -i inventory.txt -u root -m...

Preview:

Citation preview

AnsibleBasics

Besmart.Thinkopensource.

AnsibleHands-onLearningbydoing

Hands-on::Basics01InstallAnsibleandtakethefirststeps

Basics01-InstallationInstallAnsibleonyourmachine:

RHEL&CentOS(requiresEPEL)

$sudoyuminstallansible

Debian&Ubuntu

$sudoapt-getinstallansible

Basics01-InstallationCheckifyouhavethelatestAnsibleversion:

$ansible--version$manansible

Basics01-InstallationAddyourSSHpublickeytotheauthorized_keysfileonthetargetnode:

$ssh-copy-idroot@192.168.122.10

Basics01-InstallationCreateaworkingdirectoryforthisworkshop:

$mkdir~/ansible_workshop$cd~/ansible_workshop

Basics01-InventoryCreatethefileinventory.txtcontainingyourtestnode:

[test]192.168.122.10

Basics01-Ad-hoccommandsExecuteyourfirstad-hoccommands:

$ansibletest-iinventory.txt-uroot-mping$ansibletest-iinventory.txt-uroot-mcommand-a"df-h"$ansibletest-iinventory.txt-uroot-mcommand-a"ls-l/"

Hands-on::Basics02Createsometasksandthefirstplaybook

Basics02-FactsExplorethefactsofyourtestnode:

$ansibletest-iinventory.txt-uroot-msetup

Basics02-PlaybooksCreatethefilewebserver.ymlwiththefollowingcontent:

----hosts:testtasks:

-name:installnginxpackage:name:nginxstate:present

-name:startnginxserviceservice:name:nginxstate:started

Basics02-PlaybooksRuntheplaybookagainstyourtestnode:

$ansible-playbookwebserver.yml-iinventory.txt-uroot

Wasitsuccessful?Checkifthewebserverisrunninginyourbrowser!

Basics02-PlaybooksGetdebuggingoutputbyaddingtheverboseflag(s):

$ansible-playbookwebserver.yml-iinventory.txt-uroot-v

Addmore-vparameterstogetevenmoreoutput

Basics02-RolesCreateanewrolecalled"nginx":

$mkdir-proles/nginx/tasks

Addtheprevioustaskstothetasksfileroles/nginx/tasks/main.yml:

----name:installnginxpackage:name:nginxstate:present

-name:startnginxserviceservice:name:nginxstate:started

Basics02-RolesIncludethenewnginxroleinthewebserver.ymlplaybook:

----hosts:testroles:-nginx

Executetheplaybookagain,whathappens?

Hands-on::Basics03Makeyourplaybookmoredynamicwithvariables

Basics03-VariablesCreateahost_varsandgroup_varsdirectoryinyourworkingdir:

$mkdirhost_varsgroup_vars

Yourdirectorynowshouldlooklikethis:

ansible_workshop|--group_vars|--host_vars|--inventory.txt|--roles|--webserver.yml

Basics03-CommonroleCreateanadditionalrolecalled"common"includingthefollowingdirectories:

common|--defaults|--tasks|--vars

Basics03-CommonroleAddthedefaultsvarslistedbelow:

---common_packages:-ntp-iptables

Basics03-CommonroleThenewroleshouldtakecareofinstallingseveralpackages:

----name:installcommonpackagespackage:name:"{{item}}"state:presentwith_items:"{{common_packages}}"

Basics03-TestingIncludethenewroleintoyourplaybookandgiveitaspin:

Whathappens?

Whatpackageswereinstalled?

Basics03-group_varsCreatethefilegroup_vars/testwiththefollowingvariables:

---common_packages:-ntp-iptables-vim-zsh

Basics03-TestingExecutetheplaybookasecondtime:

Arethereanychanges?

Ifyes,why?

Basics03-RolevarsCreatethefileroles/common/vars/main.ymlwiththefollowingvariables:

---common_packages:-ntp-iptables-vim-zsh-tcpdump-wget-curl-rsync

Basics03-TestingExecutetheplaybookathirdtime:

Wait,whathappenednow?

Pleaseexplaintome!

Hands-on::Basics04Generatefilesdynamicallywithtemplates

Basics04-PreparationAddthemissingdirectoriesinournginxrole:

defaultshandlerstemplatesvars

Basics04-DefaultsAddthefollowingvariabletothedefaultsvars:

---nginx_welcome_messages:-"Ansibleiscool!"-"Itevengetsbetter!"-"Myfirstloop!"

Basics04-TemplateCreatethenewtemplatecalled index.html.j2 :

{%formessageinnginx_welcome_messages%}<p>{{message}}</p>{%endfor%}

Basics04-TasksWhichmoduledoweneedtorenderthetemplateandcopyitto/usr/share/nginx/www?

Addanewtaskwhichrendersthetemplate

Createabackupoftheoldindex.htmlfile

Basics04-TestingExecuteyourmodifiedplaybooktodeploythenewwebsite:

Diditwork?

Whichmessagesaredisplayed?

Basics04-HandlersImaginethisisamorecomplexwebapplication:

Restartthenginxserviceiftheindex.htmlfilechanged

Basics04-TestingDeploythewebsiteagain:

Diditwork?

Wasthenginxservicerestarted?

Goodwork!You'vecompletedthispartoftheworkshop!

Recommended