puppet部署与应用 实验名称: Puppet部署与应用 实验目的: 熟悉puppet工作原理 进行puppet部署与应用 实验环境: 将所需软件拷贝至各个主机的/usr/src目录中 四:实验思路: 搭建puppetmaster 搭建puppetclient 案例的实施 测试 实验过程 在使用puppet作为配置管理工具的同时,facter是一个非常有用的系统盘点工具,这个工具可以通过一些预先设定好变量定位一台主机,比如可以通过变量lsbdistrelease便可以知道当前系统的版本号,在整个自动化运维过程中,由于系统应用的多样性,更多需要通过应用的名称、角色的名称进行标示,这样就需要自定义一些fact并赋值到每个节点上去,相当于给节点打上标签。 一:搭建NTP服务器 1:设置IP地址 2:设置yum源 3:在NTP Server上搭建NTP服务 [root@localhost ~]# yum -y install ntp [root@localhost ~]# vi /etc/ntp.conf server 127.127.1.0 fudge 127.127.1.0 stratum 8 [root@localhost ~]# service ntpd start [root@localhost ~]# chkconfig ntpd on [root@localhost ~]# service iptables stop 注意:若能保证各服务器的时间一致,本案例可以不用设置NTP服务,本文灰色部分就可以不做 一:搭建puppetmaster(centos6.5) 1:设置ip地址 2:设置yum源 3:规划服务器主机名 [root@localhost 桌面]# vi /etc/sysconfig/network HOSTNAME=master.test.cn [root@localhost 桌面]# vi /etc/hosts 192.168.1.131 master.test.cn 192.168.1.132 client.test.cn 192.168.1.137 client137.test.cn [root@localhost 桌面]# hostname master.test.cn [root@localhost 桌面]# bash 4:在puppetmaster上配置为ntp客户端 [root@master 桌面]# yum -y install ntp [root@master 桌面]# ntpdate 192.168.1.200 5:安装compat-readline和ruby(要按照顺序安装) ruby是一个安装软件的工具,puppet和facter需要用此工具来安装 [root@master 桌面]# cd /usr/src [root@master src]# rpm -ivh compat-readline5-5.2-17.1.el6.x86_64.rpm [root@master src]# rpm -ivh ruby-*.rpm [root@master src]# ruby -v 查看ruby版本 6:安装puppet和facter [root@master src]# useradd -s /sbin/nologin puppet [root@master src]# tar zxf facter-1.7.1.tar.gz [root@master src]# cd facter-1.7.1 [root@master facter-1.7.1]# ruby install.rb [root@master facter-1.7.1]# cd … [root@master src]# tar zxf puppet-2.7.21.tar.gz [root@master src]# cd puppet-2.7.21 [root@master puppet-2.7.21]# ruby install.rb [root@master puppet-2.7.21]# cp conf/redhat/fileserver.conf /etc/puppet 定义文件存放的路径 [root@master puppet-2.7.21]# cp conf/redhat/puppet.conf /etc/puppet puppet的主配置文件 [root@master puppet-2.7.21]# cp conf/redhat/server.init /etc/init.d/puppetmaster [root@master puppet-2.7.21]# chmod +x /etc/init.d/puppetmaster [root@master puppet-2.7.21]# mkdir /etc/puppet/manifests 用于保存服务端程序清单的目录 [root@master puppet-2.7.21]# mkdir /etc/puppet/modules 模块目录 [root@master puppet-2.7.21]# service iptables stop [root@master puppet-2.7.21]# chkconfig iptables off [root@master puppet-2.7.21]# vi /etc/puppet/puppet.conf 在[main]标题最后添加 modulepath=/etc/puppet/modules:/usr/share/puppet/modules server = master.test.cn certname = master.test.cn pluginsync = false 关闭模块中的插件功能 8:启动puppet [root@master puppet-2.7.21]# /etc/init.d/puppetmaster start 二:搭建puppetclient(centos6.5)(两个客户端的配置一样,除了ip) 1:设置ip地址 2:设置yum源 3:规划服务器的主机名 [root@localhost 桌面]# vi /etc/sysconfig/network 修改: HOSTNAME=client.test.cn [root@localhost 桌面]# vi /etc/hosts 添加: 192.168.1.131 master.test.cn 192.168.1.132 client.test.cn 192.168.1.137 client137.test.cn [root@localhost 桌面]# hostname client.test.cn [root@localhost 桌面]# bash [root@client 桌面]# ping master.test.cn 4:配置ntp时间同步 [root@client 桌面]# yum -y install ntp [root@client 桌面]# ntpdate 192.168.1.200 5:安装compat和ruby [root@client 桌面]# cd /usr/src [root@client src]# rpm -ivh compat-readline5-5.2-17.1.el6.x86_64.rpm [root@client src]# rpm -ivh ruby-*.rpm [root@client src]# ruby -v 6:安装puppet和facter [root@client src]# useradd -s /sbin/nologin puppet [root@client src]# tar zxf facter-1.7.1.tar.gz [root@client src]# cd facter-1.7.1 [root@client facter-1.7.1]# ruby install.rb [root@client facter-1.7.1]# cd … [root@client src]# tar zxf puppet-2.7.21.tar.gz [root@client src]# cd puppet-2.7.21 [root@client puppet-2.7.21]# ruby install.rb [root@client puppet-2.7.21]# cp conf/redhat/puppet.conf /etc/puppet [root@client puppet-2.7.21]# cp conf/redhat/client.init /etc/init.d/puppetclient [root@client puppet-2.7.21]# chmod +x /etc/init.d/puppetclient [root@client puppet-2.7.21]# service iptables stop [root@client puppet-2.7.21]# chkconfig iptables off [root@client puppet-2.7.21]# vi /etc/puppet/puppet.conf 在[main]的末尾添加 server=master.test.cn pluginsync = false 7: 在client上测试连接(会一直处于连接状态,在master端进行注册并可以在master上看到后可一按ctrl+c中断) [root@client puppet-2.7.21]# puppet agent –server=master.test.cn –no-daemonize –verbose –verbose:运行的时候显示信息 –no-daemonize:以非守护进程的方式运行 8:在master上查看申请注册的客户端 [root@master puppet-2.7.21]# puppet cert –list “client.test.cn” (C0:85:9A:55:E4:EA:80:5C:41:D3:C1:AA:9E:21:31:3E) 9:在master上对未注册的客户端进行注册 [root@master puppet-2.7.21]# puppet cert sign –all [root@master puppet-2.7.21]# ll /var/lib/puppet/ssl/ca/signed/ 查看注册的客户端 总用量 8 -rw-r—–. 1 puppet puppet 1907 11月 17 08:56 client.test.cn.pem -rw-r—–. 1 puppet puppet 1976 11月 16 22:52 master.test.cn.pem 三:应用实例 批量修改ssh端口号(将ssh的22号端口改为9922端口,防止黑客的攻击) 1):master服务器端的设置 1:在master端创建所需的目录 [root@master ~]# mkdir -p /etc/puppet/modules/ssh/manifests [root@master ~]# mkdir -p /etc/puppet/modules/ssh/templates [root@master ~]# mkdir -p /etc/puppet/modules/ssh/files [root@master ~]# mkdir /etc/puppet/manifests/nodes [root@master ~]# mkdir /etc/puppet/modules/ssh/files/ssh [root@master ~]# chown -R puppet /etc/puppet/modules/ [root@master ~]# ll /etc/puppet/modules/ssh/ 总用量 12 drwxr-xr-x. 3 puppet root 4096 11月 17 09:05 files drwxr-xr-x. 2 puppet root 4096 11月 17 09:03 manifests drwxr-xr-x. 2 puppet root 4096 11月 17 09:03 templates 各目录说明: 本案例要同步ssh的配置文件,故在/etc/puppet/modules/下创建了ssh目录用以保存ssh模块相关文件。 Manifests目录:包含一个init.pp的文件,导入模块时要从该文件开始执行,所以可以将所有的代码写到init.pp中,也可以分成多个pp文件分别调用。 Files目录:文件发布目录,待分发的文件存放其中。 Templates目录:该文件夹中存储着常用程序的模板文件,通常为空 Nodes目录:定义节点的目录,告诉master都有哪些节点 2:创建模块配置文件install.pp(用以判断客户端是否安装了ssh服务) [root@master ~]# vi /etc/puppet/modules/ssh/manifests/install.pp 输入: class ssh::install { package { “openssh-server”: } package:检查指定的包 ensure:这个参数指定是否创建、删除文件或者目录或软件包,其中present会检查是否存在,不存在就会创建。 3:创建模块配置文件config.pp(定义需要同步的文件及其相关属性,要调用install.pp文件判断ssh是否安装) [root@master ~]# vi /etc/puppet/modules/ssh/manifests/config.pp class ssh::config{ file{“/etc/ssh/sshd_config”: } 说明: File:指定客户端ssh配置文件的路径 Source:服务器端ssh配置文件的路径(此路径不是该服务安装目录的路径,而是puppet存放该服务模块的路径) 这里有个地方比较特别,文件路径是/etc/puppet/modules/ssh/files/ssh/sshd_config”,写成puppet规则时files会被省略,需要将其路径写成puppet://$puppetserver/modules/ssh/ssh/sshd_config或puppet:///modules/ssh/ssh/sshd_config,其中第一个ssh表示的是ssh模块的files目录。路径要从puppet后开始写,不要写完整的路径,直接从模块开始写,并且files目录不写,这叫文件托管。 4:创建模块配置文件service.pp(用来定义ssh服务的启动,它要调用config.pp文件判断是否同步了新的ssh配置文件) [root@master ~]# vi /etc/puppet/modules/ssh/manifests/service.pp class ssh::service { } 5:创建模块主配置文件init.pp(该文件用来调用其他几个配置文件) [root@master ~]# vi /etc/puppet/modules/ssh/manifests/init.pp class ssh{ } [root@master ~]# ll /etc/puppet/modules/ssh/manifests/ 总用量 16 -rw-r–r–. 1 root root 287 11月 17 09:22 config.pp -rw-r–r–. 1 root root 65 11月 17 09:28 init.pp -rw-r–r–. 1 root root 99 11月 17 09:21 install.pp -rw-r–r–. 1 root root 239 11月 17 09:25 service.pp 6:建立服务器端ssh统一维护文件 [root@master ~]# cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/ [root@master ~]# chown puppet /etc/puppet/modules/ssh/files/ssh/sshd_config 7:创建测试节点配置文件,并将ssh加载进去 [root@master ~]# vi /etc/puppet/manifests/nodes/ssh.pp node ‘client.test.cn’{ } node ‘client137.test.cn’{ } 8:将测试节点载入puppet [root@master ~]# vi /etc/puppet/manifests/site.pp import “nodes/ssh.pp” 9:修改服务器端维护的sshd_config配置文件 [root@master ~]# vi /etc/puppet/modules/ssh/files/ssh/sshd_config 修改: Port 9922 注意去掉注释符 10:重启puppet [root@master ~]# /etc/init.d/puppetmaster restart 服务端 [root@client ~]# /etc/init.d/puppetclient restart 客户端 2):client客户端主动拉取 在client上配置 [root@client 桌面]# puppet agent -t [root@client 桌面]# vi /etc/ssh/sshd_config 查看端口 [root@client 桌面]# netstat -tunlp | grep ssh 3):服务器推送同步 1:在client137上上 [root@client 桌面]# vi /etc/puppet/puppet.conf 最后一行添加 listen=true [root@client 桌面]# vi /etc/puppet/auth.conf 最后一行添加 allow * [root@client 桌面]# /etc/init.d/puppetclient restart 2:在master端 [root@master ~]# vi /etc/puppet/modules/ssh/files/ssh/sshd_config 重新修改一个端口号 [root@master 桌面]# puppet kick client137.test.cn 不能同步重启一下puppetmaster 3:在client137上 [root@client 桌面]# vi /etc/ssh/sshd_config 查看端口的变化
ensure =>present, }
ensure => present, owner => "root", group => "root", mode => "0600", source => "puppet://$puppetserver/modules/ssh/ssh/sshd_config", require => Class["ssh::install"], notify => Class["ssh::service"], }
service {"sshd": ensure => running, hasstatus => true, hasrestart => true, enable => true, require => Class["ssh::config"] }
include ssh::install,ssh::config,ssh::service
include ssh
include ssh
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算