a virtualizáció esete a puppettal
DESCRIPTION
TRANSCRIPT
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
A Puppet és a Virtualizáció
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Mit csinál a Neticle?
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Szövegelemzés
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Trendfigyelés
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Partnereink
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Miről lesz ma szó?
● A virtualizálás problémája?
● Miben segít a konfiguráció-menedzsment?
● Mit tud a Puppet?
● A Puppet alapjai
● Puppet üzemeltetés
● Bónusz
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Régen
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Most
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Az automatizáció segít
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Röviden a Puppetről
● Saját nyelv (DSL)
● Több féle üzemeltetési módot támogat
● Kiváló dokumentáció
● Multiplatform (Windows is)
● Open Source, support a PuppetLabs
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Tipusok
● File erőforrás:
file { "/etc/sudoers": ensure => present, mode => 0644, source => "puppet:///modules/sudo/sudoers"; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Tipusok
● User erőforrás létrehozása:
user { "janoszen": ensure => present, password => "*", uid => 1000, gid => 1000, shell => "/bin/bash"; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Tipusok
● Csomag telepítése:
package { "mc": ensure => present; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
További beépített tipusok
● Exec● Nagios● Hosts file● Mount● Service● És még rengeteg egyéb:
http://docs.puppetlabs.com/references/latest/type.html
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Saját tipusok
define users::account( $password = "*", $sshkeys = [], $ensure = "present" ) {
user { $name: ensure => $ensure, password => $password }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Saját tipusok
file { "/home/${name}/.ssh/authorized_keys": ensure => $ensure, owner => $name, content => template( "modules/users/authorized_keys.erb" ), require => User[$name]; }
}
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Osztályok
● Resource-ok gyűjteménye, hasonlít a define-ra.● Egy osztályból csak egy lehet!
class server {}
class server::db inherits server {}
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Osztályok használata
include server::db
vagy
class { "server::db": ; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Paraméterezett osztályok
class uptrack ( $accesskey ) { }
class { "uptrack": accesskey => ""; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Node classification
● Hostnév alapján:
node /^db([\d]+)\./ { include server::db }
● Külső forrásból (LDAP, MySQL, stb):http://docs.puppetlabs.com/guides/external_nodes.html
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Facter – A gép tulajdonságai
● Hostname, domain, FQDN, IP cím
● Operációs rendszer, release
● Kernel verzió
● is_virtual
● Szabadon bővíthető minimális Ruby tudással.
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Puppet futtatás
● Standalone (puppet apply)
● Puppetmaster
● Mcollective
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Standalone használat
● Létrehozunk egy puppet könyvtárat (jellemzően git clone)
● Lefuttatjuk a site.pp filet:
puppet apply "/etc/puppet/manifests/site.pp"
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Puppetmaster
● Központi helyen készített manifestek
● Reportok gyűjtése
● Dashboard
● Gépek közötti összefüggések (exportált erőforrások)
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Puppet agent
● Szereti a RAM-ot
● Ezért érdemes cronból futtatni
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Exportált erőforrások
@@nagios_service { "${hostname}-http": use => "generic-service", check_command => "check_http_alive", service_description => "HTTP Connectivity", host_name => "${hostname}", notify => Service['icinga'], tag => "monitor01"; }
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Erőforrások importálása
Nagios_service <<| tag == "${hostname}" |>>
● Bővebben: http://docs.puppetlabs.com/puppet/latest/reference/lang_exported.html
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Mcollective
● Masszív méretű deploymentek (több ezer node) esetén érdekes.
● Nem tárgyaljuk.
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Bónusz
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Hiera - az adattároló
● Elkülöníti az értékeket a konfigurációtól.● YAML, JSON vagy egyéni backend● Példa:
network: eth0: auto: true address: 188.227.224.3 netmask: 255.255.224.0 broadcast: 188.227.224.15 gateway: 188.227.224.14
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Hiera használat
● Egyszerű adattömb lekérdezés:
$valtozo = hiera('kulcs')
● Erőforrások ciklikus létrehozása:
$myvhosts = hiera('apache::vhosts') create_resources('apache::vhost', $myvhosts)
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Augeas
● Konfigurációs fájlok hierarchikus címzése.
augeas { "test1": context => "/files/etc/sysconfig/firstboot", changes => "set RUN_FIRSTBOOT YES", onlyif => "match other_value size > 0",}
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Puppet Forge
● Kész Puppet modulok tömkelege.
puppet module install puppetlabs-apache --version 0.0.2
● Óvatosan!
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Demo
https://github.com/neticletechnologies/puppet-demo
@janoszen www.janoszen.com @neticle_hu www.neticle.hu
Stalking lehetőségek
Pásztor János Neticle Technologies
Ikonok: http://www.iconarchive.com/show/social-networks-pro-icons-by-artbees.html
www.janoszen.com
@janoszen
fb.com/janoszen
youtube.com /user/janoszen
blog.neticle.hu
@neticle_hu
fb.com/neticle