Puppet部署与应用

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”:

       ensure =>present,

     }

}

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":

 ensure => present,

 owner => "root",

 group => "root",

 mode => "0600",

 source => "puppet://$puppetserver/modules/ssh/ssh/sshd_config",

 require => Class["ssh::install"],

 notify => Class["ssh::service"],

}

}

说明:

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 {

  service {"sshd":

          ensure => running,

          hasstatus => true,

          hasrestart => true,

          enable => true,

          require => Class["ssh::config"]

          }

}

5:创建模块主配置文件init.pp(该文件用来调用其他几个配置文件)

[root@master ~]# vi /etc/puppet/modules/ssh/manifests/init.pp

class ssh{

  include ssh::install,ssh::config,ssh::service

}

[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’{

  include ssh

}

node ‘client137.test.cn’{

  include ssh

}

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 \查看端口的变化

猜你喜欢

转载自blog.csdn.net/Ex_xsr456/article/details/106216045