mgjj 发表于 2018-8-2 09:15:49

Linux运维 第五阶段 puppet基础

  Linux运维 第五阶段 puppet基础
  一、相关概念:
  1、puppet基于C/S架构,使用ruby编写,在类UNIX平台上集中配置管理系统,它可以管理配置文件、用户、cron任务、软件包、系统服务。
  2、puppet把系统实体称为资源。
  3、使用协议xmlrpc,xmlrpc是使用https作为传输协议的rpc机制,使用xml文本的方式传输命令和数据。
  4、可有多个master多个client,所有的client都定期(默认30分钟)使用facter工具把client的基本配置信息通过https的xmlrpc协议发送给puppetmaster,puppetmaster-side通过分析client-side主机名,找到该主机的配置代码,继而编译,将编译好的配置代码发回client-side,client执行代码完成配置,并把代码执行情况反馈给puppetmaster。
  5、puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.conf、server.sysconfig、client.sysconfig。
  6、master-side启动脚本中涉及到文件/etc/sysconfig/puppetmaster,可将配置文件/etc/puppet/server.sysconfig复制为/etc/sysconfig/puppetmaster;也可更改启动脚本(:%s#/etc/sysconfig/puppetmaster#/etc/puppet/server.sysconfig#g)。
  7、两种形式:分发(master-side向client-side发送相关配置文件)、提取(client-side向master-side请求信息),本篇使用的是提取方式。
  8、#ll /var/lib/puppet/yaml/node/(可通过查看此目录下各节点中的文件时间,如果时间相关太多证明某个节点出问题了,需要手动处理)
  9、所需软件:facter-1.6.18-8.el6.src.rpm(收集信息工具)、puppet-2.7.26-2.el6.src.rpm
  10、             下载地址:http://fedoraproject.org/wiki/EPEL
  11、             环境:redhat6.4X86_64,准备两台机器,一台服务端一台客户端
  二、安装及使用:
  1、安装
  master-side和agent-side都执行以下语句:
  #service iptablesstop
  #setforce 0
  #ntpdate 192.168.1.222(时间同步,极其重要,集群内的所有机器时间误差控制在秒级以内,否则会出离奇错误)
  #yum -yinstallruby
  #groupadd puppet
  #useradd -gpuppet-s /bin/false-Mpuppet
  #vim /etc/sysconfig/network
  HOSTNAME=master.test.com(服务端执行此句,服务端一定要是完整域名形式)
  #vim /etc/sysconfig/network
  HOSTNAME=agent.test.com(客户端执行此句)
  #rpm -ivh/usr/src/facter-1.6.18-8.el6.src.rpm
  #tar zxvf /root/rpmbuild/SOURCES/facter-1.6.18-8.tar.gz
  #cd/root/rpmbuild/SOURCES/facter-1.6.18
  #ruby install.rb
  #rpm -ivh /usr/src/puppet-2.7.26-2.el6.src.rpm
  #tar zxvf /root/rpmbuild/SOUCES/puppet-2.7.26.tar.gz
  #cd/root/rpmbuild/SOURCES/puppet-2.7.26
  #ruby install.rb
  #mkdir /etc/puppet/
  #mkdir /usr/src/puppet-2.7.26-2/redhat/* /etc/puppet
  #cp /usr/src/puppet-2.7.26-2/auth.conf /etc/puppet/
  #mkdir /etc/puppet/manifests/(master-side创建此目录,agent-side不需创建,此目录在配置文件server.sysconfig中有定义,为简便直接创建就不改配置文件了)
  #cp /etc/puppet/server.int /etc/init.d/puppetmaster(此句在master-side执行,在agent-side则将client.init复制为/etc/init.d/puppetagent)
  #chmod 755/etc/init.d/puppetmaster
  #chkconfig --addpuppetmaster
  #chkconfig --level35puppetmaster on
  #service puppetmasterstart(agent-side启动puppetagent)
  #netstat lnt| grep8140
  2、使用(三步:请求-查询-授权):
  #man puppetd
  #man puppetca
  在agent-side执行:
  #puppetd --test--servermaster.test.com(请求)
  在master-side执行:
  #puppetca -l(查询谁在请求)
  #puppetca -sagetn.test.com(有查询结果再授权)
  #ll /var/lib/puppet/ssl/ca/signed/*(此目录下多了agent.test.com)
  注:若出错,删除以下文件重新执行以上三步:
  #rm -rf/var/lib/puppet/ssl/(agent-side直接将ssl目录删掉)
  #rm -rf /var/lib/puppet/ssl/ca/signed/agent.test.com   (在signed目录下仅将出错的客户端的那条记录删掉)
  3、配置管理:
  以下例子逐个添加,在agent-side请求,查看每个例子对应目录文件是否更新。
  #vim /etc/puppet/manifests/site.pp(仅在master-side编辑,此文件在配置文件server.sysconfig中有定义)
  nodedefault {   (default表示请求的所有agent-side都执行此段中的语句,也可写成单独的agent,例如:node’agent.test.com’,表示仅某一客户端执行如下语句)
  file{“/tmp/test.txt”:(例1:首行用冒号‘:’,之后的多行用逗号或分号分隔,最后一行可以没有,此文件是在agent-side创建的,master-side不需创建此文件)
  content=>”I’m a test puppet\n”, (文件内容)
  }
  file{“/tmp/clearlog.sh”:(例2)
  owner=>”puppet”,(属主)
  group=>”puppet”,(属组)
  mode=>”0777”,(权限)
  content=>”/bin/find/tmp/-name 123*|xargs rm-rf”,(文件内容)
  }
  group{“test”:(例3,管理用户组)
  gid=>999,
  ensure=>present,(present表示创建,absent表示删除)
  }
  user{“test”:    (管理用户)
  name=>”test”,
  uid=>999,
  gid=>999,
  managehome=>true,(创建家目录)
  groups=>[‘puppet’,’root’],(附加组)
  shell=>”/bin/bash”,
  ensure=>present,
  }
  cron{“ntptime”:(例4,计划任务)
  command=>”/usr/sbin/ntpdate 192.168.1.222>/dev/null 2>&1”,
  minute=>’*/10’,
  hour=>[‘2-4’],
  monthday=>[‘2’,’4’],(这三行分别为:分时日,月周用*表示)
  environment=>”PATH=/bin:/usr/bin:/usr/sbin”,(执行命令必须要指定环境变量)
  ensure=>present,
  }
  }
  #service puppetmasterrestart(首次编辑完此文件需要重启服务,之后修改则不需重启)
  #puppetd --test-servermaster.test.com(在agent-side请求,此句可以写成脚本文件,注意/var/lib/puppet/state/lock)
  #ll /tmp/
  #crontab -l(依次查看是否执行成功)
  例5:同步master-side某一目录下的文件到agent-side
  #vim /etc/puppet/fileserver.conf
  添加如下语句:
  
  path/etc/puppet/system_conf/
  allow*
  #service puppetmasterrestart(首次编辑完此文件需要重启服务,之后则不需要)
  #mkdir /etc/puppet/system_conf
  #cp -p/etc/resolv.conf/etc/puppet/system_conf/
  #vim /etc/puppet/system_conf/resolv.conf
  添加语句#test(与agent-side端文件做区别)
  #vim /etc/puppet/manifests/site.pp
  node ‘agent.test.com’{    (仅将此段语句应用于agent客户端)
  ……
  file{“/etc/resolv.conf”:(还可以配置hosts,i18n,yum等系统配置文件)
  mode=>664,(系统文件一定注意文件权限)
  source=>”puppet://master.test.com/system_conf/resolv.conf”,
  }
  }
  4、生产中使用案例:(下一篇详细介绍高级用法)

  本篇是学习《老男孩网络视频》做的笔记。
页: [1]
查看完整版本: Linux运维 第五阶段 puppet基础