Puppet

From wiki.habital.lv
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Инсталляция программного обеспечения на сервере и на агенте

rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm

На сервере:

# yum install puppet-server
# chkconfig puppetmaster on

Файл /etc/puppet/puppet.conf:

# vi /etc/puppet/puppet.conf
[main]certname = puppet.mybox.lv
   server = puppet.mybox.lv
   environment = production
   runinterval = 1h

[master]
   dns_alt_names = puppet.mybox.lv,puppet

На агенте:

# yum install puppet

Установка сертификатов на сервере и на агенте

На сервере:

# rm -rf /var/lib/puppet/ssl/*
# puppet master --verbose --no-daemonize
Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): 3F:CD:FD:CF:5B:1A:72:C1:D2:BA:ED:0A:C8:AF:AE:E0:B3:66:AC:78:9B:03:53:01:2E:47:36:6A:21:41:80:76
Notice: Signed certificate request for ca
Info: Creating a new certificate revocation list
Info: Creating a new SSL key for puppet.mybox.lv
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppet.mybox.lv
Info: Certificate Request fingerprint (SHA256): 80:D0:E6:43:66:54:85:85:59:2A:3E:40:C1:A4:5F:93:82:89:35:07:84:6C:DF:0F:B8:A0:EC:CB:A1:63:24:D1
Notice: puppet.mybox.lv has a waiting certificate request
Notice: Signed certificate request for puppet.mybox.lv
Notice: Removing file Puppet::SSL::CertificateRequest puppet.mybox.lv at '/var/lib/puppet/ssl/ca/requests/puppet.mybox.lv.pem'
Notice: Removing file Puppet::SSL::CertificateRequest puppet.mybox.lv at '/var/lib/puppet/ssl/certificate_requests/puppet.mybox.lv.pem'
Notice: Starting Puppet master version 3.8.7
<Ctrl-C>
# puppet cert list --all
+ "puppet.mybox.lv" (SHA256) 2B:52:7C:52:1E:E9:44:7A:02:BE:1B:8E:9F:84:8D:BF:EC:1E:59:F3:10:18:B9:16:53:C7:22:BB:B6:40:28:00 (alt names:
"DNS:puppet.mybox.lv","DNS:puppet", "DNS:puppet.mybox.lv")
# service puppetmaster start

На агенте:

# vim /etc/puppet/puppet.conf
[main]certname = proxy.mybox.lv
   server = puppet.mybox.lv
   environment = production
   runinterval = 1h
# puppet agent –test

На сервере:

# puppet cert list
 "proxy.mybox.lv" (SHA256) CF:68:EF:63:98:BD:9A:FA:9F:6B:11:F5:BA:36:E1:AE:38:63:B3:82:FF:CB:73:B7:3E:F3:AB:2A:44:9B:5E:08
# puppet cert sign proxy.mybox.lv

Примеры настроек (на puppet-сервере)

NTP-server

# cat /etc/puppet/manifests/site.pp
node 'puppet.mybox.lv' {
  include "ntp_config"
}

node 'proxy.mybox.lv' {
 include "ntp_config"
}

class ntp_config {
 #case $operatingsystem {
 #  centos, redhat: { $service_name = 'ntpd' }
 #  debian, ubuntu: { $service_name = 'ntp' }
 #}

 package { 'ntp':
   ensure => installed,
 }

 service { 'ntp':
   name      => ntpd,
   ensure    => running,
   enable    => true,
   subscribe => File['ntp.conf'],
 }

 file { 'ntp.conf':
   path    => '/etc/ntp.conf',
   ensure  => file,
   owner   => root,
   group   => root,
   mode    => 644,
   require => Package['ntp'],
   source  => "puppet:///modules/ntp/ntp.conf",
   # This source file would be located on the Puppet master at
   # /etc/puppet/modules/ntp/files/ntp.conf
 }
}

NTP-сервер и Squid-сервер

$ cat /etc/puppet/manifests/site.pp
node 'squid-1.mybox.lv', 'squid-2.mybox.lv' {
  include ntp, squid
}
$ cat /etc/puppet/modules/ntp/manifests/init.pp 
class ntp {
 package { ['ntp']:
   ensure => present;
 }
 
 service { 'ntp':
   name    => ntpd,
   ensure  => running,
   enable  => true,
   require => Package['ntp'];
 }
 
 file { 'ntp.conf':
   path    => '/etc/ntp.conf',
   ensure  => file,
   owner   => root,
   group   => root,
   mode    => 644,
   require => Package['ntp'],
   notify  => Service['ntp'],
   source  => "puppet:///modules/ntp/ntp.conf",
   # This source file would be located on the Puppet master at
   # /etc/puppet/modules/ntp/files/ntp.conf
 }
}
$ cat /etc/puppet/modules/ntp/files/ntp.conf 
…
Файл конфикурации ntp.conf
$ cat /etc/puppet/modules/squid/manifests/init.pp 
class squid {
 package { ['squid']:
   ensure => present;
 }

 service { 'squid':
   name      => squid,
   ensure    => running,
   enable    => true,
   require   => Package['squid'];
 }

 file { 'squid.conf':
   path    => '/etc/squid/squid.conf',
   ensure  => file,
   owner   => root,
   group   => squid,
   mode    => 640,
   require => Package['squid'],
   source  => "puppet:///modules/squid/squid.conf",
   # This source file would be located on the Puppet master at
   # /etc/puppet/modules/squid/files/squid.conf
 }

 file { 'squidguard.conf':
   path    => '/etc/squid/squidguard.conf',
   ensure  => file,
   owner   => squid,
   group   => squid,
   mode    => 644,
   require => Package['squid'],
   source  => "puppet:///modules/squid/squidguard.conf",
   # This source file would be located on the Puppet master at
   # /etc/puppet/modules/squid/files/squidguard.conf
 }

 exec { 'squid-reconfigure':
   command => 'squid -k reconfigure',
   path    => ['/bin', '/usr/bin', '/usr/sbin'],
   require => Service['squid'];
 }
}
$ cat /etc/puppet/modules/squid/files/squid.conf
…
Файл конфигурации squid.conf.
$ cat /etc/puppet/modules/squid/files/squidguard.conf
…
Файл конфигурации squidguard.conf.