ansible basics - adfinis sygroup · 2020-04-28 · $ ansible test -i inventory.txt -u root -m...
TRANSCRIPT
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:
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!
FeelFreetoContactUswww.adfinis-sygroup.ch
TechBlog
GitHub