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

[经验分享] 配置管理工具Puppet 安装和测试(二)

[复制链接]

尚未签到

发表于 2018-8-2 06:06:05 | 显示全部楼层 |阅读模式
  于2017.04.21 从新浪博客搬迁过来
  ----------------------------------------------------------------
  其实我们已经连接了一个client就是在启动客户端的时候),在第一次连接的时候会agent会发起一个证 验证的请求并使用一个私钥来加密连接,puppet使用SSL证书来验证master和client之间的连接,client向master发起证书请求,然后等待master签名并返回证书
  为了完成连接,master需要对证书进行签名:
  puppet cert --list                   显示等待签名的证书
  puppet cert --sign client34.puppet.com      对client34发起的证书进行签名
  puppet cert --sign --all               对所有等待签名的证书进行签名
  可能遇到的问题:
  err: Could not retrieve catalog: Could not find default node or by name whit……..
  虽然agent现在已经连接到了master,并且已经签名也验证了这个会话,但是对于agent来说master上并没有可用的配置,因此收到这条错误提示,为节点添加上可用配置就可以了;
  1.  创建第一个配置
  Puppet将包含配置数据的文件称为清单,puppet清单由许多组件组成:
  资源:独立的配置项
  文件:能发送到agent的真实文件
  模版:能够填充文件的模版文件
  节点:用于指定每一个agent的配置
  类:资源的容器
  定义:资源的组合容器
  这些组件由一个包含变量、条件、数组和其他特性的配置语言保证起来的;
  扩展site.pp文件
  创建第一个agent配置的第一步是定义和扩展stie.pp文件
  vim /etc/puppet/manifests/site.pp
  import 'nodes.pp'
  $puppetserver = 'master.puppet.com'
  #import指令告诉puppet载入一个nodes.pp的文件,也可以载入多个文件,import 'nodes/*' 这样将会载入nodes目录下所有以.pp扩展名的文件
  #$puppetserve 定义一个变量,在这里puppetserve被赋值指定puppet master,并且能够在puppet配置中使用;
  Agent的配置
  首先需要添加一个节点定义
  vim /etc/puppet/manifests/nodes.pp
  node 'client34.puppet.com' {
  include sudo
  package { 'vim': ensure => present }         #也可以为一个节点指定单独的资源
  }
DSC0000.jpg

  include 指令用于指定需要被应用到主机的配置集合,一个节点包含两种配置集合:
  类:资源的容器          模块:一个高级,可移植的资源容易,包含类、定义及其他一些puppet配置
  可以使用多个include指令或者用逗号隔开
  include sudo
  include sshd
  include vim, syslog-ng
  创建第一个模块
  每一个模块都需要一个特定的目录结构和一个叫做init.pp的文件,这个目录结构能够帮助puppet自动载入模块,模块路径可以有puppet.conf中[main]段modulepath配置项设置,默认路径/etc/puppet/modules/和/var/lib/puppet/modules/
  这里我们创建一个sudo的模块
  创建模块结构
  mkdir -p /etc/puppet/modules/sudo/{ files,manifests, templates}
  touch /etc/puppet/modules/sudo/manifests/init.pp
  manifests用于存放init.pp文件和其他配置,init.pp文件是模块的核心,每个模块必须存在;files目录存放属于模块的一部分文件;     templates包含模块可能会用到的任何模版;
  创建sudo模块的init.pp文件
  vim/etc/puppet/modules/sudo/manifests/init.pp
  class sudo {
  package { sudo:
  ensure => present,
  }
  if $operatingsystem == "Ubuntu" {
  package { "sudo-ldap":
  ensurce => present,
  require => Package["sudo"]
  }
  }
  file { "/etc/sudoers":
  owner => "root",
  group => "root",
  mode => 0440,
  source => "puppet://$puppetserver/modules/sudo/etc/sudoers",
  require => Package["sudo"],
  }
  }
DSC0001.jpg

  Sudo模块的init.pp文件包含了一个单独的类,也叫做sudo;类中包含了3个资源:两个软件包和一个文件资源;
  第一个软件包资源使用ensure => present 来确保sudo包已经安装,第二个软件包资源使用if/else语法作为安装sudo-ldap包的条件判断;还有另外两种条件判断语句:case和选择器语法>
  Puppet会检查每一个连接客户端的operatingsystem的值,如果$operatingsystem的fact值是Ubuntu,puppet就会安装sudo-ldap包。
  Sudo类中最后一个资源是一个文件资源 File["/etc/sudoers"]用来管理/etc/sudoers文件,前3个属性指定这个文件的用户和组、权限;下一个属性source允许puppet从puppet文件服务器上获取一个文件并将其发生到客户端,这个属性的值就是puppet文件服务器和所需文件的路径;
  Source的下一部分告诉puppet去那里寻找这个文件,等同于一个网络共享文件,这文件第一部分是modules,表明文件是存放在一个模块下的,接下来指定模块,这里是sudo,最后指定模块内的路径。
  Require是一个元参数,元参数require在资源Package["sudo-ldap"]和Package["sudo"]之间创建了一个依赖关系,在这个例子中,给资源加上require元参数就是高速puppet  Package["sudo-ldap"]依赖于Package["sudo"],因此Package["sudo"]资源一定会首先被执行。
  所有存放在模块中的文件都位于files目录下,这可以认为是模块文件的共享根,在这个例子中我们将要在files中创建etc目录和sudoers文件
  mkdir -p /etc/puppet/modules/sudo/files/etc/
  cp /etc/sudoers /etc/puppet/modules/sudo/files/etc/sudoers
  注意在这里好像得给/etc/puppet/modules/sudo/files/etc/sudoers所有人可读权限
  应用第一个配置
  我们再次允许puppet  agent来观察这一点
  因为我这虚拟机中已经存在/etc/sudoers 这个文件,先将其删除
  Rm –rf /etc/soduers
  puppet agent --server=master.puppet.com --no-daemonize --verbose –onetime
DSC0002.jpg

  可以看到在/etc/又有了sudoers这个文件,这就说明我们agent从master应用成功了。
  或者可以这样来测试应用,让在/tmp下创建一个文件
  vim /etc/puppet/manifests/nodes.pp
  node 'client34.puppet.com' {
  file { "/tmp/agent_test.txt":                       #这是文件路径
  content => "The Is Puppet Test!!",              #这是文件内容
  }
  }
DSC0003.jpg

  在客户端查看效果
DSC0004.jpg

  至此Puppet 就初步的安装和测试连接完成了,我也是第一次接触puppet,目前就安装和测试成功了,其他功能还待探索,如果有什么不正确或者更好的方法请指点!

运维网声明 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-544946-1-1.html 上篇帖子: 配置管理工具Puppet 安装和测试(一) 下篇帖子: 实战Puppet 集中配置管理系统(3)——Puppet dashboard与nginx+passenger安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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