Voor de installatie van puppet enterprise staat hier de documentatie: http://docs.puppetlabs.com/pe/latest/install_basic.html
| --test |
| --no-daemonize |
| --verbose |
| --onetime |
| --ignorecache |
| --no-usecacheonfailure |
| --detailed-exitcodes |
| --show_diff |
| --no-splay |
| --noop |
| --debug |
| --environment |
| --configprint |
| --tags | Conditionally apply parts of the catalog based on tags |
| --genconfig | Generate a starting config file. Mostly useful for Open Source users setting up their infrastructure for the first time |
| --trace | Generate full stack traces on errors which can be useful for debugging |
| --waitforcert | How long the agent should wait for its certificate to be signed before giving up. Useful during Agent provisioning. |
[main]
certname = master.puppetlabs.vm
vardir = /var/opt/lib/pe-puppet
logdir = /var/log/pe-puppet
rundir = /var/run/pe-puppet
basemodulepath = /etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
environmentpath = /etc/puppetlabs/puppet/environments
server = master.puppetlabs.vm
user = pe-puppet
group = pe-puppet
archive_files = true
archive_files_server = master.puppetlabs.vm
module_groups = base+pe_only
dns_alt_names = puppet
environment_timeout = 0
[agent]
report = true
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
graph = true
pluginsync = true
environment = production
[master]
node_terminus = classifier
ca_server = master.puppetlabs.vm
reports = console,puppetdb
storeconfigs = true
storeconfigs_backend = puppetdb
certname = master.puppetlabs.vm
server = master.puppetlabs.vm
always_casch_featers = true
De secties corresponderen met de run mode, de main sectie is van toepassing in alle run modi, maar master, agent en user zijn op de gelijknamige modi van toepassing. Overeenkomstig zal een node waar een agent draait geen master sectie hebben.
Iedere configuratie setting in puppet.conf heeft een overeenkomstig commandline commando. Volgorde van oplossen:
command line > run mode > main > puppet defaults.
Dit betekend at een setting in [agent] een setting in [main] zal overschrijven wanneer puppet agent -t wordt gedraait, maar dat een optie die wordt meegegeven op de command line beide overschrijft.
Puppet gebruikt factor om informatie over de host te verzamelen. Het uitvoeren van het factor commando leverd een lijst met sleutel waarden paren op.
Een commandline tool om puppet resources op het systeem te inspecteren, heeft een directe interactie met de Resource Abstraction Layer (RAL) en retouneert de puppet code representatie van de huidige status van de resource
Het Puppet resource commando accepteerd twee argumenten, 1.
puppet resource user elvis
...
user { 'elvis':
ensure => absent,
}
het uitvoeren van het resource commando met alleen het resource type leverd de huidige status van alle resources van een bepaald type
vb.: puppet resource user
....
user { 'vcsa':
ensure => present,
uid => '69',
gid => '69',
shell => '/sbin/nologin',
comment => 'virtual console memory owner',
home => '/dev',
}
user { 'willywonka':
ensure => present,
uid => '1006',
gid => '1008',
shell => '/bin/bash',
home => '/home/willywonka',
}
| git status | - geeft de status van de werk directory |
| git add | - voegd de gewijzigde code toe aan een commit |
| git commit | - voegd een set wijzigingen toe aan de (eigen) repository |
| git push | - voegd de wijzigingen toe aan de remote repository |
| Git Development Workflow |
| git pull origin master |
| edit validate test |
| git add |
| git commit |
| git push origin master |
| test on development infrastructure |
| andere te gebruiken git commando's |
| git diff |
| git log |
| git show |
| git blame |
| git branch & git checkout |
resources
http://git-scm.com/book
http://try.github.com/
class sysadmin {
user { 'elmo':
ensure => present,
groups => ['sysadmin','web','dbadmin'],
managehome => true,
}
group { 'sysadmin':
ensure => present,
}
}
package { 'openssh':
ensure => present,
}
| Resource abstraction layer | ||||
| Type | File | Package | Service | User |
| Provider | Posix | Apt | Redhat | Useradd |
| Windows | Yum | Launched | ldap | |
| Gems | SMF | Netinfo | ||
| Apt-get | Debian | |||
| RPM | Windows | |||
| Msi | ||||
| Windows |
| aix.rb | fink.rb | opkg.rb | ports.rb | windows |
| appdmg.rb | freebsd.rb | pacman.rb | portupgrade.rb | windows.rb |
| apple.rb | gem.rb | pip.rb | rpm.rb | yumhelper.py |
| aptitude.rb | hpux.rb | pkgdmg.rb | rug.rb | yumhelper.pyc |
| apt.rb | macports.rb | pkgin.rb | sunfreeware.rb | yumhelper.pyo |
| aptrpm.rb | msi.rb | pkg.rb | sun.rb | yum.rb |
| blastwave.rb | nim.rb | pkgutil.rb | up2date.rb | aypper.rb |
| dpkg.rb | openbsd.rb | portage.rb | urpmi.rb |
Notes
Some packages types can retrieve their own package files, while others cannot. For those package formats that cannot retrieve their own package files, you can use the source parameter to point to the correct file or URI.
# Using the Windows provider
package { 'mysql':
ensure => present,
source => '//corpserver/installers/mysql-5.5.16-winx64.msi',
provider => windows,
}
# Using the RPM provider
package { 'mysql':
ensure => present,
source => 'http://internal.mycorp.net/packages/redhat/6/mysql-5.5.16x86_64.rpm',
provider => rpm,
}
http://docs.puppetlabs.com/references/latest/type.html#package
Classes definieeren een verzameling van resources die als 1 enkele eenheid worden gemanaged.
Classe definities worden bewaart in een manifest, het init.pp file hieronder is een voorbeeld van zo'n betand, geschreven in de puppet dsl.
Hieronder zijn de package, file en service individuele puppet resources, samengevoegd om 1 enkele classe te vormen.
# /etc/puppetlabs/puppet/environments/production/modules/ssh/manifest/init.pp
class ssh {
package { 'openssh':
ensure => present,
}
file { '/etc/ssh/sshd_config':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
require => Package['openssh'],
source => 'puppet:///modules/ssh/sshd_config',
}
service { 'sshd':
ensure => running,
enable => true
require => File['/etc/ssh/sshd_config'],
}
}
Modules zijn directories die de configuratie bevatten. Ze zijn ontworpen om alle gerelateerde componenten die bij een enkele configuratie beheren te bevatten.
to specify the contents and behavior of a class. Defining a class doesn't automatically include it in a configuration; it simply makes is available to be declared.
To direct Puppet to include or instantiate a given class. To declare classes, use the include function. This tells Puppet to evaluate the class and manage all the resources declared within it.
Als je een class bouwd zoals hierboven de ssh class, definieer je heminclude ssh
Het declareren van een puppet class instrueert puppet de classe af te dwingen. Declaration Testing, kan door een include statement op te nemen in het init.pp bestand.
v.b.
# /etc/puppetlabs/puppet/environments/production/modules/ssh/examples/init.pp
include ssh
Compiles puppet manifest into a resource catalog
Uses the Resource Abstraction Layer to simulate or enforce the catalog locally
In agent/master puppet arrangements, agent nodes send their facts to the master and toe master compliles the catalog using theis facts.
When using puppet apply, local facts are used to build the catalog.
When using puppet apply, remember to apply against files in the tests directory, not in de manifest directory.
Files in the manifest directory contain the resource definitions, but to implement, defined resources need to be declared and the files in the tests directory contain the declaration, which will actually initiate action.
There is no harm in running puppet apply against files in the manifest direcotry, but this wil op apply any changes.
Running puppet apply against files in the test directory can be used as an ad hoc verification or proof of concept to see how the module will manage the system once implemented.
puppet apply examples/init.pp
--noop mode simulates without enforcing
puppet apply --noop examples/init.pp
package { 'kernel':
ensure => latest,
noop => true,
}