设为首页 收藏本站
查看: 1088|回复: 0

[经验分享] 运维自动化之puppet-Darrenpan

[复制链接]

尚未签到

发表于 2018-8-3 09:35:13 | 显示全部楼层 |阅读模式
  Server  IP:192.168.72.10/24   hostname:puppet-server
  Client  IP:192.168.72.111/24  hostname:puppet-client-01
  Clinet  IP:192.168.72.168/24  hostname:puppet-client-02
  关闭selinux
  1、配置服务器和客户端的IP地址和主机名,确保可以相互ping通主机名
  2、服务器和客户端安装所需环境
  [root@puppet]# yum install ruby* -y
  注:如果需要精细安装,只需如下4个包
  [root@puppet]# yum install ruby-libs ruby ruby-irb ruby-rdoc -y
  3、同步服务器和客户端的时间
  [root@puppet]# ntpdate time.nist.gov
  注:如果没有ntpdate可以yum安装
  [root@puppet]# yum install ntpdate -y
  4、服务器和客户端安装facter和puppet主程序
  5、下载安装facter
  [root@puppet]# wget http://downloads.puppetlabs.com/facter/facter-latest.tgz
  [root@puppet]# tar -zxvf facter-latest.tgz
  [root@puppet facter-1.6.6]# cd facter-1.6.6
  [root@puppet facter-1.6.6]# ruby install.rb
  6、下载安装puppet
  [root@puppet]wget http://puppetlabs.com/downloads/puppet/puppet-2.6.14.tar.gz
  [root@puppet]# tar -zxvf puppet-2.6.14.tar.gz
  [root@puppet srv]# cd puppet-2.6.14
  [root@puppet puppet-2.6.14]# ruby install.rb
  7、修改hosts文件
  server端
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 puppet-server
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  192.168.72.111 puppet-client-01
  client端
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 puppet-client-01
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  192.168.72.10 puppet-server
  8、服务器server端配置
  copy源文件
  [root@puppet-server puppet-2.6.14]# mkdir /etc/puppet
  [root@puppet-server puppet-2.6.14]# cp conf/auth.conf /etc/puppet/
  [root@puppet-server puppet-2.6.14]# cp conf/redhat/fileserver.conf /etc/puppet/
  [root@puppet-server puppet-2.6.14]# cp conf/redhat/puppet.conf /etc/puppet/
  [root@puppet-server puppet-2.6.14]# cp conf/redhat/server.init /etc/init.d/puppetmaster
  [root@puppet-server puppet-2.6.14]# chmod +x /etc/init.d/puppetmaster
  [root@puppet-server puppet-2.6.14]# chkconfig --add puppetmaster
  [root@puppet-server puppet-2.6.14]# chkconfig puppetmaster on
  [root@puppet-server puppet-2.6.14]# chkconfig --list puppetmaster
  puppetmaster    0:off 1:off 2:on 3:on 4:on 5:on 6:off
  [root@puppet-server puppet-2.6.14]# mkdir -p /etc/puppet/manifests
  创建puppet帐号
  [root@puppet-server puppet-2.6.14]# puppetmasterd --mkusers(目的是在/var/lib/puppet下创建一些目录)
  启动服务
  [root@puppet-server puppet-2.6.14]# /etc/init.d/puppetmaster restart
  Stopping puppetmaster:                                     [  OK  ]
  Starting puppetmaster:                                     [  OK  ]
  9、客户client端配置
  [root@puppet-client-01 puppet-2.6.14]# mkdir /etc/puppet/
  [root@puppet-client-01 puppet-2.6.14]# cp conf/auth.conf /etc/puppet/
  [root@puppet-client-01 puppet-2.6.14]# cp conf/namespaceauth.conf /etc/puppet/
  [root@puppet-client-01 puppet-2.6.14]# cp conf/redhat/puppet.conf /etc/puppet/
  [root@puppet-client-01 puppet-2.6.14]# cp conf/redhat/client.init /etc/init.d/puppet
  [root@puppet-client-01 puppet-2.6.14]# chmod +x /etc/init.d/puppet
  [root@puppet-client-01 puppet-2.6.14]# chkconfig --add puppet
  [root@puppet-client-01 puppet-2.6.14]# chkconfig puppet on
  [root@puppet-client-01 puppet-2.6.14]# vim /etc/puppet/namespaceauth.conf
  ......
  [fileserver]
  allow *
  [puppetmaster]
  allow *
  [puppetrunner]
  allow *
  [puppetbucket]
  allow *
  [puppetreports]
  allow *
  [resource]
  allow *
  ......
  创建puppet帐号和rra目录
  [root@puppet-client-01 puppet-2.6.14]# puppetd --mkusers
  注:如果报错,可以手动创建用户。
  重启服务
  [root@puppet-client-01 puppet]# /etc/init.d/puppet restart
  10、服务server端防火墙配置
  [root@puppet-server ~]# iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
  [root@puppet-server ~]# /etc/init.d/iptables save
  11、客户client端防火墙配置
  [root@puppet-client-01 ~]# iptables -A INPUT -p tcp --dport 8139 -j ACCEPT
  [root@puppet-client-01 ~]# /etc/init.d/iptables save
  12、服务端修改配置文件,设置允许的地址
  [root@puppet-server ~]# vim /etc/puppet/fileserver.conf
  ......
  [files]
  path /tmp/srv/
  allow 192.168.72.0/24
  ......
  手动认证
  1、客户端发送请求
  [root@puppet-client-01 ~]# puppetd --test --server puppet-server
  2、服务器端查看
  [root@puppet-server ~]# puppetca -l
  puppet-client-01 (4B:58:77:C0:52:22:DD:1E:A4:A8:B8:5E:4F:9C:71:25)
  3、服务器签名认证
  [root@puppet-server ~]# puppetca -s -a(对所有客户端认证)
  notice: Signed certificate request for puppet-client-01
  notice: Removing file Puppet::SSL::CertificateRequest puppet-client-01 at '/var/lib/puppet/ssl/ca/requests/puppet-client-01.pem'
  注:[root@puppet-server ~]# puppetca -s $hostname(对某个主机认证)
  自动认证
  1、服务端
  [root@puppet-server ~]# vim /etc/puppet/puppet.conf
  ......
  [main]
  autosign = true
  ......
  2、客户端
  [root@puppet-client-01 puppet-2.6.14]# vim /etc/puppet/puppet.conf
  [agent]
  ......
  listen = true          #打开客户端的监听服务端的puppetrun命令
  server = puppet-server #指定服务端
  puppetport = 8139      #客户端的监听端口,默认是8139,可不加
  runinterval = 60       #同步文件时间,默认1800s
  ......
  3、[root@puppet-client-01 puppet-2.6.14]#puppetd
  #客户端运行命令puppetd,会放在后台运行,从此客户端会每隔60s同步一次服务器里的site.pp配置
  功能测试:
  1、puppet运维自动化之组管理
  ......
  group { "ceshi":
  gid => 800,                         #该组的 gid,必须是数字,如果不指定,将自动分配 ,不同的系统自动分配的算法不一样,不推荐使用自动分配gid
  allowdupe => false,                 #是否允许两个相同的gid, 这个参数不能在freebsd上面使用, 可以设置的值是false , true
  ensure => present,                  #创建或者删除组,设置absent就删除该组,设置 present就创建该组
  members => [ ceshi1,ceshi2,ceshi3 ] #该组的成员
  }
  ......
  2、puppet运维自动化之文件分发
  通过puppet服务器向客户端分发文件
  [root@puppet-server ~]# vim /etc/puppet/manifests/site.pp
  ......
  file
  {"/tmp/srv/darren":        #资源的标题
  name => "/tmp/srv/darren",#name等于标题,所以可以省略
  source => "puppet://puppet-server/files/darren",
  owner =>root,             #客户端下载后的文件属主
  group =>root,             #客户端下载后的文件属组
  mode =>777                #客户端下载后的文件权限
  }
  ......
  file
  {"/tmp/srv/darren":
  source => "puppet://puppet-server/files/darren",
  }
  ......
  file {
  "/tmp/srv/ceshi.txt":
  content => file("/tmp/srv/ceshi.txt");
  }
  ......
  3、puppet运维自动化之crontab文件管理
  ......
  cron { "reboot":
  command => "/sbin/init 6",
  user =>root,
  minute =>35,
  hour =>13
  }
  #除了name和command这两个参数以外,其他都是可选项
  #name该crontab的名字,用于区分不同的crontab
  #command是crontab要执行的命令,环境变量按照系统本地规则进行管理,推荐使用绝对路径
  #ensure指定该资源是否启用,可设置成true或false
  #environment在crontab环境里指定环境变量,例如PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  #user把crontab任务加入到默认的crontab列表,默认是运行puppet的用户
  #minute运行crontab的分钟,可设置0-59
  #hour运行crontab的小时,可设置0-23
  #monthday运行crontab的每月中的某一天,可设置1-31
  #month运行crontab的月份,1-12
  #weekday运行crontab的星期数,0-7
  ......
  4、puppet运维自动化之分类管理客户端
  ......
  node puppet-client-01 {
  file {
  "/tmp/srv/192.168.72.0":
  source => "puppet://puppet-server/files/192.168.72.0",
  owner =>root,
  group =>root,
  mode =>777,
  ensure =>present
  }
  }
  ......
  #node,节点定义,当一个节点(puppet客户端)连接到puppet服务器端,puppet解析器会查找这个节点的node代码片断,然后利用这个代码片断来生成该客户端的配置代码。
  5、puppet运维自动化之yum安装软件包,以httpd模拟测试
  ......
  package { "httpd": ensure => "installed" }
  #ensure设置软件包得状态:installd(present)表示要安装该软件,absent表示卸载该软件,latest表示安装软件包的最新版本。
  ......
  6、puppet运维自动化之网络下载安装rpm包
  ......
  package { "epel":
  ensure => present,
  provider => rpm,
  source => "http://mirrors.sohu.com/fedora-epel//6/x86_64/epel-release-6-5.noarch.rpm"
  }
  ......
  7、puppet运维自动化之安装多个软件包
  ......
  Package { ensure => "installed" }  #注意:第一个P是大写,这就意味着对软件包管理设置了一个全局的的参数。
  package { "lrzsz": }
  package { "telnet": }
  package { "sudo": }
  ......
  8、puppet运维自动化之服务管理
  ......
  service {
  "nfs":
  ensure => running;
  "iptables":
  ensure => stopped;
  "puppet":
  enable => true;
  "httpd":
  enable => false;
  }
  ......
  参数
  #binary :运行服务的命令的路径, 只用于不支持init的操作系统, 如果没有指定启动脚本,就用这个命令来启动服务。
  #enable :服务是否随开机而启动,可设置的值为true,false,需要provider支持enableable。
  #ensure: 服务是否运行,可设置的值为running,stopped,也可以用true,false。
  #hasrestart:指出管理脚本是否支持restart参数,如果不支持,就用stop和start实现restart效果。可以设置的值是true 或 false。
  #hasstatus :服务的init脚本是否支持status参数,可设置的值为ture,false。
  #name: 该资源的namevar, 服务的名字,通常就是在/etc/init.d/目录下的名字。
  #path: 指定查找init 脚本的路径。
  #pattern :搜索进程表匹配字符串,用于不支持init的脚本,当要停止一个服务的时候,通过查看进程运行列表来判断。
  #provider :The specific backend for provider to use,可设置的值有base, daemontools,init等。
  #restart :重启服务
  #start: 开启服务
  #status :服务运行状态
  #stop: 停止服务
  9、puppet运维自动化之主机管理
  ......
  #客户端192.168.72.128添加主机别名name01和name02
  host { "name":
  ip => '192.168.72.128',
  host_aliases => ["name01", "name02" ],
  ensure =>'present'
  }
  ......
  #host:安装和管理主机实体。对大部分系统来说,这些实体就在/etc/hosts文件中
  #ip:主机的IP地址
  #host_aliases:主机别名,可以有多个,多个值需要指定为一个数组。
  #ensure:确定该主机是否启用,有效值present和absent
  10、puppet运维自动化之执行外部命令
  ......
  #客户端解压puppet软件包
  exec { "tar xf /tmp/srv/puppet-2.6.14.tar.gz":
  cwd => "/tmp/srv/",
  creates => "/tmp/srv/puppet",
  path => ["/bin","/usr/bin","/usr/sbin"]
  }
  ......
  #cwd:指定命令执行的目录。如果目录不存在,则命令执行失败
  #creates:指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行
  #path:命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数组或以冒号分隔的形式来定义。
  11、puppet运维自动化之目标客户端执行脚本(前提是客户端已经存在该脚本)
  ......
  #客户端执行hello.sh脚本
  exec {
  "/tmp/srv/hello.sh":
  cwd =>"/tmp/srv",
  timeout =>120,      #脚本的执行时间,防止死循环,单位为秒
  user =>root,
  path =>["/sbin","/usr/local/sbin","/usr/local/bin","/usr/bin","/bin"],
  }
  ......
  错误解决参考:
  http://k.ifeng.com/149804/4112878
  http://www.mysqlops.com/2011/11/08/puppet-errors.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545702-1-1.html 上篇帖子: puppet安装配置和测试 下篇帖子: puppet安装与使用--安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表