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

[经验分享] puppet自动化搭建

[复制链接]

尚未签到

发表于 2018-8-1 13:30:56 | 显示全部楼层 |阅读模式
  一:基础讲解
  Ntp,DNS需要
  源码先安装ruby,facter,puppet
  Cd puppet-XXX
  Ruby install.rb
  二:环境搭建
  1、服务端master
  A、yum配置
  环境自带源
  rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm
  yum install puppet-server -y
  B、 hosts配置
  vi /etc/hosts
  172.17.0.2      master.domain.com master
  172.17.0.3      slave.domain.com slave
  C、puppet文件配置
  rm -rf  /etc/puppet/puppet.conf
  puppet master --genconfig  >> /etc/puppet/puppet.conf
  grep -v "^$\|#" /etc/puppet/puppet.conf
  62 #    manifestdir = /etc/puppet/manifests
  63 #    manifest = /etc/puppet/manifests/site.pp
  64 #    masterlog = /var/lib/puppet/log/puppetmaster.log
  69 #    modulepath = /etc/puppet/modules:/usr/share/puppet/modules
  107 #    templatedir = /var/lib/puppet/templates
  注释掉
  vi /etc/puppet/puppet.conf
  [master]
  certname=master.domain.com//服务端的名字
  D、启动服务
  systemctl start puppetmaster.service
  systemctl enable puppetmaster.service
  F、暂时不用
  ##puppet master --verbose --no-daemonize
  --verbose 显示更多的输出项目
  --no-daemonize 前台运行,并将输出重定向至标准输出
  2、客户端配置
  A、yum配置
  rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm
  yum install puppet -y
  B、hosts配置
  vi /etc/hosts
  172.17.0.2      master.domain.com master
  172.17.0.3      slave.domain.com slave
  C、puppet文件配置
  [agent]
  certname = slave.domain.com
  server = master.domain.com#服务器设置
  report = true
  listen = true#增加监听
  runinterval = 10   #设置同步的间隔时间,单位为秒
  D、启动服务
  systemctl start puppet.service
  systemctl enable puppet.service
  puppet agent --server master.domain.com --noop --test -d -v   # 模拟测试执行,但不做任何操作实际的操作; 可看到创建证书请求文件。
  3、在master上通过验证:
  A、手动授权
  puppet cert --list //列出请求列表
  puppet cert --list --all    //查看所有签发过的证书
  puppet cert --sign slave.domain.com //签名证书
  puppet cert --sign --all //对所有证书进行签名
  puppet cert --revoke slave.puppet.com//证书过期
  puppet cert --clean slave.puppet.com//删除证书
  rm  -rf /var/lib/puppet/ssl///客户端删除证书
  B、自动授权
  cat /etc/puppet/autosign.conf <<EOF
  > *.domain.com
  > EOF
  4、测试效果
  A、服务端
  一定要关闭防火墙和selinux
  vim /etc/puppet/manifests/site.pp
  file{
  "/tmp/test.txt":
  content=>"Hello, puppet test!\n",
  ensure => present,
  mode => 644,
  owner => root,
  group => root,
  }
  B、客户端
  puppet agent --test
  puppet agent      -vt
  三:同步
  1、同步文件
  A、推送/media/hosts 文件,
  [root@master puppet]# cat /media/hosts
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  192.168.0.102 master.jun.com master
  192.168.0.101 client.jun.com client
  192.168.0.104 client2.jun.com client2
  192.168.0.105 client3.jun.com client3
  192.168.0.106 client4.jun.com client4
  B、在服务器端做以下操作
  [root@master ~]# vim /etc/puppet/fileserver.conf
  [files]
  path /media/#同步的目录
  allow *
  C、site.pp
  [root@master ~]# vim /etc/puppet/mainfests/site.pp
  file
  {"/media/hosts":#客户端的目录及文件名
  source => "puppet://master.puppet.com/files/hosts",#同步的文件
  group => root,#用户组修改
  owner => root,#用户修改
  mode => "644"#文件权限
  }
  D、客户端
  puppet agent --test
  2、同步安装包,启停服务
  vim /etc/puppet/manifests/site.pp
  A、装包
  package {
  ["ntp","squid","postfix"]:
  ensure => "installed";
  }
  B、服务启停
  service {
  "httpd":
  ensure => running;
  "vsftpd":
  ensure => stopped;
  }
  3、执行脚本
  先同步文件,再执行
  A、cat ../fileserver.conf
  [files]
  path /media/
  allow *
  B、cat site.pp
  file
  {"/tmp/nodes1.sh":
  source => "puppet://master.puppet.com/files/nodes1.sh",
  group => puppet,
  owner => puppet,
  mode => "777"
  }
  exec
  {"exec-mkdir":
  cwd => "/tmp",
  command => "sh /tmp/nodes1.sh",#执行文件
  user  => puppet,#执行用户
  path => "/usr/loal/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
  }
  4、cron计划任务
  A、脚本
  cron { "cron-shell":
  command => "sh /tmp/test.sh",
  user => "puppet",
  minute => "27",
  hour => "10"
  }
  cron   { ntpdate:
  command => "/usr/sbin/ntpdate 192.168.0.1 && /sbin/clock -w",
  user => root,
  minute => '*/5'
  }
  puppetd  agent   -vt
  5、创建,删除用户
  A、创建不带家目录
  user {"wang":
  uid => 2000,
  gid => 2000,#用户组需要单独创立
  home => "/home/wang",#不会生成家目录
  shell => "/bin/bash"
  }
  B、删除用户(不删家目录)
  user{"test":
  ensure=>"absent",
  }
  C、创建带家目录用户,自定组
  创建组
  group{"sa":
  ensure=>"present",
  gid=>3000,
  }
  创建用户
  user{"test":
  ensure=>"present",
  managehome=>true,
  groups=>sa,
  }
  6、模块的应用
  basemodulepath = /etc/puppet/modules:/usr/share/puppet/modules
  如果不在默认文件路径,
  方法一修改上面路径
  方法二绝对路径导入
  A、基础目录
  cd /etc/puppet/manifests
  cat site.pp
  import "nodes.pp"#倒入模块
  cat nodes.pp
  node "slave.puppet.com" {
  include test::test
  }
  cd /etc/puppet/modules/
  mkdir -p test/{manifests,files,templates}
  cd test/manifests/
  vi init.pp
  class test::test {
  file {"/tmp/sky":
  owner => root,
  group => root,
  ensure => present,
  content => "www.baidu.com test by sky",
  mode => 644,
  }
  }
  7、密钥对的应用
  A、基础讲解
  【puppetsshkey参数】
  alias:别名,通俗的可以理解为小名,主机可能具有多个别名。如果有多个话可以用数组表示。
  ensure:sshkey的基础属性,指定key是否生成,可以设置的值为present,absent。
  key:生成的密钥值,一般是十六进制数字的长字符串。
  name:名称,主机名。
  provider:经常不需要指定,puppet根据相应的操作系统选择相应的provider.
  parsed:为ssh解析和生成已知的host文件。
  target:存储的SSH密钥文件的路径。
  type:key生成的加密类型,通过是ssh-dsa,或者ssh-rsa,备注,dsa也可以用dss来表示。
  user:指定是哪个用户的key。
  B、实验
  ssh_authorized_key{“hostname”:
  ensure=>present,
  type=>“ssh-rsa”,
  key=>“/root/.ssh/id_rsa.pub生成的密钥值”,
  name=>“hostname随意”,
  target=>“/home/sky/.ssh/authorized_keys”,
  user=>‘sky’,
  }

运维网声明 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-544854-1-1.html 上篇帖子: Puppet安装部署篇(一) 下篇帖子: puppet源码搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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