[自动化]Puppet服务安装和部署

puppet简介

puppet是一种基于ruby语言开发的Lnux、Unix、windows平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。

puppet依赖于C/S(客户端/服务器)的部署架构。它需要在puppet服务器上安装puppet-server软件包(以下简称master),在需要管理的目标主机上安装puppet客户端软件(以下简称client)。

为了保证安全,master和client之间是基于SSL和证书的,只有经过master证书认证的client才可以与master通信。

puppet工作原理

  • 1、客户端puppet调用fast探测出主机的一些变量,如主机名、内存大小、IP地址等。Puppet把这些信息使用SSL连接发送给服务器端;
  • 2、服务器端的puppetmaster通过fast工具分析检测客户端的主机名,然后找到项目的主配置文件manifest里面对应的node配置,并对该部分内容进行解析,fast发送过来的信息可以作为变量处理,node牵扯到的代码才被解析,没牵扯到的不解析,解析分为语法检查,如果语法没错,继续解析,解析结果生成一个结果‘伪代码’,然后把‘伪代码’发给客户端;
  • 3、客户端收到‘伪代码’并且执行,客户端把执行结果发给服务器;
  • 4、服务器端把客户端的执行结果写入日志。

实验:

使用四台服务器模拟搭建Puppet环境,具体拓扑图如下:

1.安装NTP Server

由于Puppet需要使用SSL证书,依赖时间同步,所有需要搭建NTP服务器。

(1)关闭所有服务器的防火墙和安全性策略

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

(2)yum安装NTP并修改配置文件

yum install ntp -y    #安装ntp  

vi /etc/ntp.conf
                            #24行添加两行记录
    server 127.127.26.0
    fudge 127.127.26.0 stratum 8

(3)启动ntp服务

service ntpd start    #启动ntp服务
chkconfig ntpd on

(4)查看同步状态`

ntpstat   #查看同步状态

2.安装Puppet Master

(1)规划主机名

vi /etc/hostname
   master.test.cn     #修改相应的主机名

vi /etc/hosts  #添加
192.168.26.131   master.test.cn
192.168.26.132   client1.test.cn
192.168.26.133   client2.test.cn

然后重启,将安全性策略再关一下

setenforce 0

(2)搭建NTP客户端服务

yum install ntp -y
service ntpd start  #启动ntp服务
ntpdate 192.168.26.130 (NTPserver地址)

(3)安装puppet控制端

yum install -y epel-replease  #安装epel源
yum install -y puppet-server   #yum安装puppet服务端

(4)启动Puppet主程序

systemctl enable puppetmaster.service
systemctl start puppetmaster.service

3.安装Puppet client(client1 client2配置一样)

(1)规划主机名

vi /etc/hostname
   client1.test.cn     #修改相应的主机名

vi /etc/hosts  #添加
192.168.26.131   master.test.cn
192.168.26.132   client1.test.cn
192.168.26.133   client2.test.cn

然后重启,将安全性策略再关一下

setenforce 0

(2)搭建NTP客户端服务

yum install ntp -y
service ntpd start  #启动ntp服务
ntpdate 192.168.26.130 (NTPserver地址)

(3)安装puppet控制端

yum install -y epel-replease  #安装epel源
yum install -y puppet   #yum安装puppet控制端

(4)编辑puppet配置文件

 vi /etc/puppet/puppet.conf
    [main]
    server = master.test.cn
    ......


(5)client端申请证书

puppet agent --server=master.test.cn --no-daemonize --verbose     #两个client端执行命令一样 

执行完会有如下提示:

Info: Creating a new SSL key for client2.test.cn
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for client2.test.cn
Info: Certificate Request fingerprint (SHA256): 9E:E6:4D:3F:5B:03:D2:72:08:FF:0B:E7:92:48:45:FA:B7:2C:89:B5:12:CB:EC:8F:2E:50:B4:02:5F:4C:DF:17
Info: Caching certificate for ca

等待一会儿按ctrl+c组合键结束

4.回到Puppet Master端查看申请信息

(1)查看申请证书的客户端

puppet cert list

(2)将未申请的客户端进行授权

  puppet cert sign --all


(3)通过目录查看已经申请注册的客户端

 ll /var/lib/puppet/ssl/ca/signed/ 

5.批量修改客户端ssh端口

master端配置:

(1)创建ssh模块,模块下面有3个文件:manifests、templates和files

mkdir -p /etc/puppet/modules/ssh/{manifests,templates,files}   #模块信息
mkdir /etc/puppet/manifests/nodes          #节点信息
mkdir /etc/puppet/modules/ssh/files/ssh  #模块的文件发布目录
chown -R puppet /etc/puppet/modules/    #修改权限

(2)创建模块配置文件install.pp

vi /etc/puppet/modules/ssh/manifests/install.pp  #新建文件(首先确定客户端安装ssh服务)

class ssh::install{
package{"openssh":
        ensure => present,
        }
}

(3)创建模块配置文件config.pp

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"],  #调用install.pp确定ssh已安装
        notify => Class["ssh::service"],   #如果config.pp发生变化,则通知service.pp
        }
}

(4)创建模块配置文件service.pp

vi /etc/puppet/modules/ssh/manifests/service.pp   #新建server模块文件
class ssh::service {
        service {"sshd":
                ensure=>running,  #确定ssh已运行
                hasstatus=>true,  #puppet服务支持status命令
                hasrestart=>true, #puppet服务支持restart命令
                enable=>true,    #服务器是否开机启动
                require=>Class["ssh::config"]  #确认config.pp调用
        }
}

(5)创建模块主配置文件init.pp

vi /etc/puppet/modules/ssh/manifests/init.pp   #新建模块主配置文件
class ssh{
        include ssh::install,ssh::config,ssh::service  #将以上配置文件加载进去
}

此时/etc/puppet/modules/ssh/manifests目录下有四个文件:

(6)建立服务端ssh统一维护文件
将服务端ssh配置文件sshd_config复制到模块默认路径

cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/
chown -R puppet /etc/puppet/modules/ssh/files/ssh/sshd_config  #修改权限

(7)创建测试节点配置文件,并将ssh加载进去

vi /etc/puppet/manifests/nodes/ssh.pp
node ‘client1.test.cn‘ {
        include ssh
}
node ‘client2.test.cn‘ {
        include ssh
}

(8)将测试节点载入puppet,创建站点文件site.pp

vi /etc/puppet/manifests/site.pp  //将测试节点载入puppet//
import "nodes/ssh.pp"

(9)修改服务端维护的sshd_cofig配置文件

vi /etc/puppet/modules/ssh/files/ssh/sshd_config  #修改19行
Port 9922

(10)重新启动puppet

systemctl restart puppetmaster

下面就是介绍客户端怎么获取到服务器端的资源的方式:

(1)一般在小规模自动化集群中,客户端主动拉取

puppet agent -t 


在客户端查看/etc/ssh/sshd_config的内容

查看服务器ssh服务是否重启,端口是否生效

(2)当大规模部署时,采用服务器推送

client端(192.168.26.133)为例:

1)修改配置文件

vi /etc/puppet/puppet.conf #最后一行添加监听8139端口
listen = true
vi /etc/puppet/auth.conf   #最后一行添加允许任何服务器推送
allow *

2)启动puppet客户端

systemctl start puppetagent

在客户端查看/etc/ssh/sshd_config的端口内容

查看服务器ssh服务是否重启,端口是否生效

master端:

3)修改服务端维护的sshd_cofig配置文件

vi /etc/puppet/modules/ssh/files/ssh/sshd_config  #修改19行
Port 8822

4)开始往客户端推送

puppet kick client2.test.cn  


在客户端查看/etc/ssh/sshd_config的内容

在客户端查看ssh服务是否重启,端口是否生效

原文地址:http://blog.51cto.com/11134648/2161486

时间: 2024-10-29 00:52:46

[自动化]Puppet服务安装和部署的相关文章

Linux puppet的安装配置部署

一.puppet简介 puppet是一个为实现数据中心自动化管理而设计的配置管理软件,能够管理IT基础设施的整个生命周期:供应(provisioning)配置(configuration).联动(orchestration)及报告(reporting).puppet基于C/S架构,类似于zabbiz,有master与agent节点之分.它是一个开源的(谈不上真正的开源,因为有商业版与社区版之分).新一代的.集中化的配置管理工具,由ruby语言研发,它拥有自己的配置语言(PCL,puppet co

Puppet自动化高可用集群部署

前言:随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster响应很慢,压力大,解析缓慢,有什么优化的方案吗?可以使用Puppetmaster配置多端口,结合Nginx web代理,这样puppetmaster承受能力至少可以提升10倍以上. 一.安装配置mongrel服务: 要使用puppet多端口配置,需要指定mongrel类型,默认没有安装,需要安装.在Puppetmaster服务器端执行如下命令(前提是已经安装了对应版本的

puppet初始化安装和配置(puppet自动化系列1)

一.服务器规划 以下均直接yum安装最新版. 服务器操作系统为centos6.2 Puppetmaster1 10.168.32.116 puppstmaster1.jq.com Puppetmaster2 10.168.32.117 puppetmaster2.jq.com Puppet1 10.168.32.120 ag1.jq.com Puppet2 10.168.32.121 ag2.jq.com Puppetca1 10.168.32.118 puppetca1.jq.com Pupp

C#(VS2008)服务编写-安装和部署

1.创建一个空白解决方案. 2.在解决方案下面添加两个Windows服务:WXSmsGuardNew(保护服务),WXSmsMainNew(主服务). 3.第一个服务作为保护服务,服务上添加两个控件:System.Timers.Timer和System.ServiceProcess.ServiceController 由于System.Timers.Timer不会显示在工具栏中无法直接拖到服务中,故而我们找到服务设计器页面WXSmsGuardNew.Designer.cs,将手动构造System

使用docker部署一个直接可用的puppet服务端

思路: 在一个docker环境,直接拉下来笔者的镜像,直接启动一个可用的容器即可. 此镜像提供一个直接可用的 puppet服务端(foreman/activemq/mcollective-client); 说明: 此镜像笔者已经上传的灵雀云上,详细文档可参考 本文 和 笔者github 以及 灵雀云镜像 地址. 文件直接由笔者github的markdown直接复制如下: ###################################################### docker-f

java自动化测试成长日记-之CVS客户端和服务端安装和部署1:CVS服务端的配置和基本使用

CVS服务端的配置和基本使用 在做java自动化测试集成环境搭建的时候,无论怎样,你都会选择一个源代码管理工具,如:SVN,CVS,VSS等:但如果你使用Eclipse工具,建议你使用CVS源代码管理工具,因为它本身就自带了CVS客户端插件,可以直接使用(具体使用情况,可参考:java自动化测试成长日记-之CVS客户端和服务端安装和部署2:CVS客户端的配置和基本使用章节): 首先,你需要下载:cvsnt-2.5.03.2151安装包.msi,服务端安装软件(可在百度里面搜索找到,相应的资源).

Openstack 安装部署指南翻译系列 之 Keystone服务安装(Identity)

OpenStack系统由分开安装的几个关键服务组成.这些服务可根据其他云需求一起工作,包括计算(Compute),身份(Identity),网络(Networking),镜像(Image),块存储(Block Storage),对象存储(Object Storage),计量(Telemetry),编排(Orchestration)和数据库(Database)服务.可以单独安装任何这些项目,并将其配置为独立的或连接的实体. 本节介绍如何在控制器节点上安装和配置OpenStack Identity服

Openstack 安装部署指南翻译系列 之 Glance服务安装(Image)

1.1.1.1. ance服务安装(Image) 1.1.1.1.1. 镜像服务概述 镜像服务(Glance)使用户能够发现,注册和检索虚拟机镜像.它提供了一个 REST API,可让您查询虚拟机镜像元数据并检索实际镜像.可以存储通过Image Service在各种位置(从简单的文件系统到像OpenStack Object Storage这样的对象存储系统)提供的虚拟机镜像. 重要:为了简单起见,本指南介绍如何配置Image服务以使用file后端,后端上传并存储在托管Image服务的控制器节点上

Openstack 安装部署指南翻译系列 之 Manila服务安装(Share Storage)

1.1.1.1. Manila服务安装(Share Storage) 1.1.1.1.1. 服务概述 OpenStack共享文件系统服务(manila)为虚拟机提供文件存储.共享文件系统服务提供了一个管理和配置文件共享的集合.该服务还支持共享类型的管理以及支持共享快照,前提是需要驱动程序支持. 共享文件系统服务由以下组件组成: manila-api 验证请求并将其路由到共享文件系统服务的WSGI应用程序. manila-data 一个独立的服务,其目的是处理数据操作,如复制,共享迁移或备份. m