geeky academy week 3 :: vagrant + puppet
DESCRIPTION
Geeky Academy Week 3 :: Vagrant + Puppet - Vagrant 101 - Vagrant 201 - Vagrant 301TRANSCRIPT
![Page 1: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/1.jpg)
VAGRANT
3rd WEEKSATURDAY, JULY 06, 2013 – SUNDAY, JULY 07, 2013
GEEK ACADEMY 2013
![Page 2: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/2.jpg)
INSTRUCTOR TEAMTAVEE SOMKIAT THAWATCHAI
Tavee (Vee) Khunbida Somkiat (Pui) Puisungnuen Thawatchai (Boy) JongsuwanpaisanSiam Chamnan Kit
Siam Chamnan Kit
Siam Chamnan Kit
![Page 3: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/3.jpg)
![Page 4: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/4.jpg)
What Vagrant ?
ohttp://www.vagrantup.com/oBased on VirtualBox and RubyoManage VM with Simple Command lineoRun on
oWindowsoLinuxoMac OS
![Page 5: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/5.jpg)
VAGRANT 101
GEEK ACADEMY 2013
![Page 6: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/6.jpg)
Simple Command Line
$ gem install vagrant$ vagrant box add base <box url>$ vagrant init$ vagrant up
![Page 7: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/7.jpg)
Step 1 :: Installation with Ruby Gem
$ gem install vagrant
![Page 8: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/8.jpg)
Step 2 :: Add Base Box
$ vagrant box add base http://files.vagrantup.com/precise32.box
…….[vagrant] Downloading with Vagrant::Downloaders::File...[vagrant] Copying box to temporary location...[vagrant] Extracting box...[vagrant] Verifying box...[vagrant] Cleaning up downloaded box...
![Page 10: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/10.jpg)
Step 3 :: Configuration
$ vagrant init
…..A `Vagrantfile` has been placed in this directory. You
are nowready to `vagrant up` your first virtual environment!
Please readthe comments in the Vagrantfile as well as
documentation on`vagrantup.com` for more information on using Vagrant.
![Page 11: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/11.jpg)
Vagrantfile
Vagrant::Config.run do |config|
config.vm.box = "base“
end
![Page 12: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/12.jpg)
Step 4 :: Boot
$ vagrant up
….[default] Importing base box 'base'...[default] Matching MAC address for NAT networking...[default] Clearing any previously set forwarded ports...[default] Fixed port collision for 22 => 2222. Now on port 2200.[default] Forwarding ports...[default] -- 22 => 2200 (adapter 1)[default] Creating shared folders metadata...[default] Clearing any previously set network interfaces...[default] Booting VM...[default] Waiting for VM to boot. This can take a few minutes.
![Page 13: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/13.jpg)
Ready to SSH
User=vagrantPassword=vagrant
![Page 14: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/14.jpg)
Optional Command
$ vagrant status$ vagrant halt$ vagrant destroy$ vagrant reload$ vagrant provision$ vagrant suspend$ vagrant resume
![Page 15: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/15.jpg)
Summary for 101
oReduce setup timeoSimpleoSelf-serviceoConsistencyoRepeat
![Page 16: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/16.jpg)
VAGRANT 201
GEEK ACADEMY 2013
https://github.com/up1/geeky_devops
![Page 17: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/17.jpg)
Working with Vagrantfile
oSpecified base boxoNetwork ConfigurationoSharing FolderoMultiple VM
![Page 18: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/18.jpg)
Specified Base Box
Vagrant::Config.run do |config| config.vm.box = "lucid32“
config.vm.box_url = "http://files.vagrantup.com/lucid32.box"
config.vm.box_url = "c:\\demo-geeky\\lucid32.box"
end
![Page 19: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/19.jpg)
Network Configuration
Vagrant::Config.run do |config| config.vm.network :hostonly,
"33.33.33.10"
end
![Page 20: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/20.jpg)
Sharing Folder
Vagrant::Config.run do |config| config.vm.share_folder "foo", "/guest/path",
"/host/path"
end
Path on VM Path on Local
![Page 21: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/21.jpg)
Sharing Folder
Vagrant::Config.run do |config|
config.vm.share_folder "work", "/var/www", "./webapp”
end
![Page 22: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/22.jpg)
Multiple VM in Stack
oWeb ServeroApplication ServeroDatabase ServeroCaching ServeroMessaging Server
![Page 23: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/23.jpg)
Web Server and DB ServerVagrant::Config.run do |config|
config.vm.define :web do |web_config| web_config.vm.host_name = "web01.internal" web_config.vm.network :hostonly,
"192.168.0.100" end
config.vm.define :db do |db_config| db_config.vm.host_name = "db01.internal" db_config.vm.network :hostonly, "192.168.0.101" end
end
![Page 24: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/24.jpg)
DEMO MORE
oFlexible configurationo# of ServeroHostnameoManage IP
![Page 25: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/25.jpg)
DEMO MOREoWeb Server
oweb-01.vagrant.internal 33.33.33.11 oweb-02.vagrant.internal 33.33.33.12
oDB Serverodb-01.vagrant.internal 33.33.33.21
![Page 26: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/26.jpg)
Serversnodes = { 'web' => [2, 10], 'db' => [1, 20],}
![Page 27: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/27.jpg)
Create Serversnodes.each do |prefix, (count, ip_start)| count.times do |i|
hostname = "%s-%02d" % [prefix, (i+1)]
config.vm.define "#{hostname}" do |box|
box.vm.host_name = "#{hostname}.vagrant.internal"
box.vm.network :hostonly, "33.33.33.#{ip_start+i}“
end
endend
![Page 28: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/28.jpg)
VAGRANT 301
GEEK ACADEMY 2013
![Page 29: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/29.jpg)
Vagrant with Puppet
ohttps://puppetlabs.comoConfiguration management with CodeoRubyoRepeatable
![Page 30: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/30.jpg)
Demo :: Install all in one
oManage package with Puppeto Javao Apache Tomcato Rediso RabbitMQ
https://github.com/up1/geeky_devopsdemo-puppet
![Page 31: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/31.jpg)
Structure of Puppet
opuppetomanifests/default.ppomodules
o javaomanifests/init.pp
otomcatomanifests/init.pp
oredisomanifests/init.pp
orabbitMQomanifests/init.pp
Starting point
![Page 32: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/32.jpg)
Vagrantfile
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/manifests"
puppet.manifest_file = "default.pp"puppet.module_path = "puppet/modules"
end
Vagrant provision
Starting point
![Page 33: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/33.jpg)
Default.pp
include bootstrap include redisinclude javainclude tomcatinclude rabbitmq
Step to execute modules
![Page 34: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/34.jpg)
Structure of Puppet
opuppetomanifests/default.ppomodules
o javaomanifests/init.pp
otomcatomanifests/init.pp
oredisomanifests/init.pp
orabbitMQomanifests/init.pp
Starting point each module
![Page 35: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/35.jpg)
Init.pp :: Java
class java {package { "openjdk-7-jdk":
ensure => installed,require => Exec['apt-get update']
}}
![Page 36: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/36.jpg)
Init.pp :: Package Apache Tomcat
class tomcat { package { "tomcat6": ensure => installed, require => Package['openjdk-7-jdk'], } package { "tomcat6-admin": ensure => installed, require => Package['tomcat6'], }
}
![Page 37: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/37.jpg)
Init.pp :: Service Apache Tomcat
class tomcat {
service { "tomcat6": ensure => running, require => Package['tomcat6'], subscribe => File["tomcat-users.xml"] }
}
![Page 38: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/38.jpg)
Init.pp :: Tomcat-users.xml
class tomcat {
file { "tomcat-users.xml": owner => 'root', path => '/etc/tomcat6/tomcat-users.xml', require => Package['tomcat6'], notify => Service['tomcat6'], content => template( '/path/tomcat/templates/tomcat-
users.xml.erb') }
}
![Page 39: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/39.jpg)
Tomcat-users.xml.erb
<?xml version='1.0' encoding='utf-8'?><tomcat-users>
<role rolename="manager"/><role rolename="admin"/><user name="tomcat-admin" password="12345" roles="manager,admin"/>
</tomcat-users>
![Page 40: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/40.jpg)
More Demo
ohttps://github.com/up1/geeky_devopsodemo-multi-puppet
box.vm.provision :puppet do |puppet| puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "#{prefix}.pp" puppet.module_path = "puppet/modules" end
![Page 41: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/41.jpg)
Question ?
![Page 42: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/42.jpg)
GEEK ACADEMY 2013
![Page 43: Geeky Academy Week 3 :: Vagrant + Puppet](https://reader035.vdocument.in/reader035/viewer/2022081518/554a3381b4c90520578b536b/html5/thumbnails/43.jpg)
THANK YOU FORYOUR TIME
GEEK ACADEMY 2013