MEETUP
SALTPRIMERANINTRODUCTIONTOSALT
ERWINEMBSEN&RICHARDWOUDENBERG18MARCH2014
SSC ID 0x57F37A53
ERWINEMBSEN
SENIORCONSULTANT
XEBIABV,EEMBSEN@XEBIA.COM,+31610901698
SSC id: 0xB5D844E6
RichardWoudenberg
!
SeniorConsultant/InnovationArchitect/Troublemaker
Xebia/rwoudenberg@xebia.com
Immutable
Servers
INTRODUCTIONS
SALT
OVERVIEW
HIGHSPEEDREMOTEEXECUTIONENGINE
CONFIGURATIONMANAGEMENTSYSTEM
MASTERANDMINIONS
Master Minions
SALT
SYNDIC
Master
Minions
Master Master
Minions
SALT
CLOUD
RACKSPACE
AMAZONAWS
MICROSOFTAZURE
DIGITALOCEAN
GOGRID
GOOGLECOMPUTEENGINE
OPENSTACK
HPCLOUD
OTHER
COMPONENTS
SALTVIRT
SALTMINE
RUNNERS
PROXYMINION
WINDOWSSOFTWAREREPO
REACTOR
EXERCISESETUP
SETUPSALTMASTER
SETUPSALTMINION
SETUPMASTER-MINIONS / PART1
EXERCISE#1
1. vagrant up master	
2. vagrant ssh master	
3. (Master) sudo su -	
4. (Master) service salt-master start	
5. (Master) salt-key -L	
6. (Master) service salt-minion start	
7. (Master) salt-key -L	
8. (Master) salt-key -a master	
9. (Master) salt-key -L
# Start the master	
# SSH into the master VM	
# Change to the root user	
# Start the Salt master	
# List keys	
# Start the Salt minion	
# List keys	
# Sign the key	
# List keys
(Master)-Executeonthemaster / (Minion)-Executeontheminion
SETUPMASTER-MINIONS / PART2
EXERCISE#1
1. Open a new terminal windows	
2. vagrant up minion	
3. vagrant ssh minion	
4. (Minion) sudo su -	
5. (Minion) service salt-minion start	
6. (Master) salt-key -L	
7. (Master) salt-key -a minion	
8. (Master) salt-key -L
# SSH into the minion VM	
# Change to the root user	
# Start the Salt minion	
# List keys	
# Sign the key	
# List keys
(Master)-Executeonthemaster / (Minion)-Executeontheminion
COMMAND
STRUCTURE
salt * pkg.install vim
InvokeSalt SpecifyTarget CallFunction PassArguments
REMOTEEXECUTION
EXERCISE#2
1. vagrant ssh master	
2. sudo su -	
3. salt * test.ping	
4. salt master sys.doc	
5. salt master sys.doc file	
6. salt * disk.usage	
7. salt * status.loadavg	
8. salt * pkg.version wget	
9. salt minion pkg.install lynx	
# SSH into the master VM	
# Change to the root user	
# Ping all minions	
# Output sys.doc	
# Output sys.doc for file	
# Return usage information	
# Return load averages	
# Get version of wget	
# Install lynx on minion
PROVIDESSAMESETOF COMMANDSAND
FUNCTIONALITYASSALT
NEEDSROSTERFILETOFUNCTION
SALT-SSH
SALTSSH
EXERCISE#3
1. vagrant ssh master	
2. sudo su -	
3. cat /etc/salt/roster	
4. salt-ssh minion-ssh pkg.version wget	
5. salt-ssh * test.ping
INFORMATIONOFTHEUNDERLYINGSYSTEM
AVAILABLETHROUGHTHEGRAINSINTERFACE
2PLACESONTHEMINIONTOSPECIFYTHEM
SALT
GRAINS
SALTGRAINS
EXERCISE#4
1. vagrant ssh master	
2. sudo su -	
3. salt minion grains.items	
4. salt minion grains.item cpuarch	
5. salt minion grains.setval meetup salt

6. (Minion) echo ‘salt: primer’ > /etc/salt/grains	
7. salt minion saltutil.sync_grains	
8. salt minion grains.item salt
RUNCOMMANDOREXECUTESTATEBYMATCHING:
hostnames,systeminformation,definedgroups
TARGETING
SALTTARGETING
EXERCISE#5
1. vagrant ssh master	
2. sudo su -	
3. salt minion grains.items	
4. salt -G ‘cpuarch:x86_64’ grains.item num_cpus
COREOFTHESALTSYSTEMISTHESALTSTATEFILE
REPRESENTSTHEDESIREDSTATEOFASYSTEM
STATES
apache:	
pkg:	
- installed	
service:	
- running
# Install package	
# apache http server	
# start the service	
# if it is stopped	
# Executed in the	
# order defined
STATES
TREE-LIKESTRUCTURES(YAML)OFDATADEFINED
ONTHEMASTERANDPASSEDTHROUGHTOMINIONS
PILLARS
BUILDATOMCATSTATE-PART#1
EXERCISE#6
1. Open file /srv/salt/states/tomcat/init.sls	
2. Alternative is salt/states/tomcat/init.sls	
3. Create runtime user tomcat in group tomcat	
4. Apply state: salt minion state.sls tomcat	
5. Validate that user and group are created
http://docs.saltstack.com/ref/states/all
BUILDATOMCATSTATE-PART#2
EXERCISE#6
Extend the tomcat state file with:



install tomcat6 package

configure tomcat

start tomcat
ErwinEmbsen
eembsen@xebia.com
RichardWoudenberg
rwoudenberg@xebia.com
THANK
YOU

Meetup - An introduction to Salt