yllplay 发表于 2018-8-2 12:14:51

【4】puppet笔记 - 第一个简单模块

  前面了解了puppet的一些资源、变量、条件语句、类等基本元素,现在开始学习使用puppet软件来做到让软件、配置自动化。
  测试环境:
  主机名
  Fqdn
  IP地址
  Puppet   service
  Puppet.onepc.com
  192.168.198.252
  Pclient    agent
  Pclient.onepc.com
  192.168.198.144
  由于没有用dns,所以直接在二台机器的/etc/hosts文件添加以下内容:
  192.168.198.252 puppet.onepc.com puppet
  192.168.198.144 pclient.onepc.com pclient
  Puppet:cat /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=puppet.onepc.com
  Pclient:cat /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=pclient.onepc.com
  另外还需要搭建一个ntp时间服务器,因为master与agent之间的时间差不能超过多少,所以最好建一个时间服务器。
  环境参考:http://kisspuppet.com/2014/03/06/puppet_learning_base3/
  使用yum来安装puppet软件:
  两台机都设置官方yum源
  wgethttp://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
  rpm -ivh puppetlabs-release-6-7.noarch.rpm
  puppet主机:
yum install puppet-server  
chkconfig puppetmaster on
  
service puppetmaster start
  pclient主机:
yum install puppet  
chkconfig puppet on
  
service puppet start
  配置puppet主机(服务器)的puppet.conf文件:
  在原来的基础上添加以下内容
  
  server = puppet.onepc.com
  certname = puppet.onepc.com
  
  certname = puppet.onepc.com
  更改后如下:
# vi puppet.conf  

  # The Puppet log directory.
  # The default value is '$vardir/log'.
  logdir = /var/log/puppet
  # Where Puppet PID files are kept.
  # The default value is '$vardir/run'.
  rundir = /var/run/puppet
  # Where SSL certificates are kept.
  # The default value is '$confdir/ssl'.
  ssldir = $vardir/ssl
  


  # The file in which puppetd stores a list of the>  # associated with the retrieved configuratiion.Can be loaded in
  # the separate ``puppet`` executable using the ``--loadclasses``
  # option.
  # The default value is '$confdir/classes.txt'.
  classfile = $vardir/classes.txt
  # Where puppetd caches the local configuration.An
  # extension indicating the cache format is added automatically.
  # The default value is '$confdir/localconfig'.
  localconfig = $vardir/localconfig
  server = puppet.onepc.com
  certname = puppet.onepc.com
  

  certname = puppet.onepc.com
  配置pclient主机的puppet.conf文件:
  注:这里没有配置certname,默认是以主机名为certname。
# cat puppet.conf  

  # The Puppet log directory.
  # The default value is '$vardir/log'.
  logdir = /var/log/puppet
  # Where Puppet PID files are kept.
  # The default value is '$vardir/run'.
  rundir = /var/run/puppet
  # Where SSL certificates are kept.
  # The default value is '$confdir/ssl'.
  ssldir = $vardir/ssl
  


  # The file in which puppetd stores a list of the>  # associated with the retrieved configuratiion.Can be loaded in
  # the separate ``puppet`` executable using the ``--loadclasses``
  # option.
  # The default value is '$confdir/classes.txt'.
  classfile = $vardir/classes.txt
  # Where puppetd caches the local configuration.An
  # extension indicating the cache format is added automatically.
  # The default value is '$confdir/localconfig'.
  localconfig = $vardir/localconfig
  server = puppet.onepc.comyg
  参考:http://kisspuppet.com/2014/03/08/puppet_learning_base4/
  目的:ntp软件自动安装,并且配置好ntp.conf文件
  先把pclient主机上的ntp软件删除
# rpm -e --nodeps ntp-4.2.4p8-2.el6.centos.i686  
warning: /etc/ntp.conf saved as /etc/ntp.conf.rpmsave
  puppet主机上创建安装ntp模块:
# mkdir /etc/puppet/modules/ntp  
# mkdir /etc/puppet/modules/ntp/{files,manifests,templates}
  
# touch /etc/puppet/modules/ntp/manifests/init.pp
  /etc/puppet/modules/ntp/manifests/init.pp 内容如下:
# cat init.pp  
class ntp::install {
  package {
  "ntp":
  ensure => installed,
  }
  
}
  
class ntp::config {
  file {
  "/etc/ntp.conf":
  content => template("ntp/ntp.conf"),
  mode => 644,
  owner => root,
  group => root,
  }
  
}
  
class ntp::server {
  service {
  "ntpd":
  ensure => running,
  enable => true,
  }
  
}
  
class ntp {
  include ntp::install,ntp::config,ntp::server
  
}
  
#
  把配置好的/etc/ntp.conf文件复制到 /etc/puppet/modules/ntp/templates目录下
  修改 /etc/puppet/manifests/site.pp 文件
# pwd  
/etc/puppet/manifests
  
# cat site.pp
  
$puppetserver = 'puppet.onepc.com' #设置全局变量
  
node 'pclient.onepc.com'{
  includentp,motd
  
}
  
node 'puppet.onepc.com'{
  include motd
  
}
  
#
  文件结构如下:
# tree ntp  
ntp
  
├── files
  
├── manifests
  
│   └── init.pp
  
└── templates
  └── ntp.conf
  
3 directories, 2 files
  关于file资源里面的content中的template说明:
  content => template("ntp/ntp.conf")
  上面的文件路径ntp/ntp.conf,实际上是要把ntp.conf文件放到
  modules ---ntp ---templates 目录下面
  在pclient主机执行:puppet agent --test
# ps -ef | grep yum  
root      46894465 13 14:32 ?      00:00:02 /usr/bin/python /usr/bin/yum -d 0 -e 0 -y install ntp
# /etc/init.d/ntpd status  
ntpd (pid4758) 正在运行...
  
# chkconfig | grep ntpd
  
ntpd            0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
# puppet agent --test  
Info: Retrieving pluginfacts
  
Info: Retrieving plugin
  
Info: Caching catalog for pclient.onepc.com
  
Info: Applying configuration version '1397801029'
  
Notice: /Stage/Ntp::Install/Package/ensure: created
  
Notice: /Stage/Ntp::Config/File/content:
  
--- /etc/ntp.conf       2013-07-15 17:18:47.000000000 +0800
  
+++ /tmp/puppet-file20140418-4465-bp12nr-0      2014-04-18 14:33:25.023023769 +0800
  
@@ -15,14 +15,16 @@
  restrict -6 ::1
  # Hosts on local network are less restricted.
  
-#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  
+restrict 192.168.198.0 mask 255.255.255.0 nomodify notrap
  # Use public servers from the pool.ntp.org project.
  # Please consider joining the pool (http://www.pool.ntp.org/join.html).
  
-server 0.centos.pool.ntp.org iburst
  
-server 1.centos.pool.ntp.org iburst
  
-server 2.centos.pool.ntp.org iburst
  
-server 3.centos.pool.ntp.org iburst
  
+#server 0.centos.pool.ntp.org iburst
  
+#server 1.centos.pool.ntp.org iburst
  
+#server 2.centos.pool.ntp.org iburst
  
+#server 3.centos.pool.ntp.org iburst
  
+server 127.127.1.0
  
+fudge 127.127.1.0 stratum 10
  #broadcast 192.168.1.255 autokey       # broadcast server
  #broadcastclient                     # broadcast client
  
Info: /Stage/Ntp::Config/File: Filebucketed /etc/ntp.conf to puppet with sum 7fda24f62b1c7ae951db0f746dc6e0cc
  
Notice: /Stage/Ntp::Config/File/content: content changed '{md5}7fda24f62b1c7ae951db0f746dc6e0cc' to '{md5}ba7148ba27bc50aba58d36f537f0dafe'
  
Notice: /Stage/Ntp::Server/Service/ensure: ensure changed 'stopped' to 'running'
  
Info: /Stage/Ntp::Server/Service: Unscheduling refresh on Service
  
Notice: Finished catalog run in 74.10 seconds
  
#
页: [1]
查看完整版本: 【4】puppet笔记 - 第一个简单模块