ITPub博客

首页 > 自动化运维 > > 自动化运维工具——puppet详解-介绍

自动化运维工具——puppet详解-介绍

作者:zhmw 时间:2020-03-04 17:24:58 0 删除 编辑

正文


一、puppet 介绍

1、puppet是什么

  puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期: 供应(provisioning)、配置(configuration)、联动(orchestration)及报告(reporting)。
  基于puppet ,可实现自动化重复任务、快速部署关键性应用以及在本地或云端完成主动管理变更和快速扩展架构规模等。
  遵循GPL 协议(2.7.0-), 基于ruby语言开发。
  2.7.0 以后使用(Apache 2.0 license)
  对于系统管理员是抽象的,只依赖于ruby与facter。
  能管理多达40 多种资源,例如:file、user、group、host、package、service、cron、exec、yum repo等。

2、puppet的工作机制

1)工作模型

  puppet 通过声明性、基于模型的方法进行IT自动化管理。
  定义:通过puppet 的声明性配置语言定义基础设置配置的目标状态;
  模拟:强制应用改变的配置之前先进行模拟性应用;
  强制:自动、强制部署达成目标状态,纠正任何偏离的配置;
  报告:报告当下状态及目标状态的不同,以及达成目标状态所进行的任何强制性改变;
puppet三层模型
  puppet三层模型如下:

puppet三层模型
 
puppet三层模型

2)工作流程

工作流程
 
工作流程

3)使用模型

  puppet的使用模型分为单机使用模型和master/agent模型,下面我们来看看这两个模型的原理图。
单机使用模型
  实现定义多个manifests --> complier --> catalog --> apply

单机使用模型工作原理
 
单机使用模型工作原理

master/agent模型
  master/agent模型实现的是集中式管理,即 agent 端周期性向 master 端发起请求,请求自己需要的数据。然后在自己的机器上运行,并将结果返回给 master 端。
  架构和工作原理如下:
架构

master/agent模式架构
 
master/agent模式架构

工作原理

master/agent模式工作原理
 
master/agent模式工作原理

3、puppet 名词解释

  • 资源:是puppet的核心,通过资源申报,定义在资源清单中。相当于ansible中的模块,只是抽象的更加彻底。
  • 类:一组资源清单。
  • 模块:包含多个类。相当于ansible中的角色。
  • 站点清单:以主机为核心,应用哪些模块。

二、puppet 资源详解

  接下来,我们就以单机模式来具体介绍一下puppet的各个部分。

1、程序安装及环境

  首先,我们还是来安装一下puppet,puppet的安装可以使用源码安装,也可以使用rpm(官方提供)、epel源、官方提供的yum仓库来安装(通过下载官方提供的rpm包可以指定官方的yum仓库)。
  在这里,我们就是用 yum 安装的方式。

	yum install -y puppet

  安装完成过后,我们可以通过rpm -ql puppet | less来查看一下包中都有一些什么文件。
  其中主配置文件为/etc/puppet/puppet.conf,使用的主程序为/usr/bin/puppet。

2、puppet 资源简介

1)资源抽象

   puppet 从以下三个维度来对资源完成抽象:

  1. 相似的资源被抽象成同一种资源**“类型”** ,如程序包资源、用户资源及服务资源等;
  2. 将资源属性或状态的描述与其实现方式剥离开来,如仅说明安装一个程序包而不用关心其具体是通过yum、pkgadd、ports或是其它方式实现;
  3. 仅描述资源的目标状态,也即期望其实现的结果,而不是其具体过程,如“确定nginx 运行起来” 而不是具体描述为“运行nginx命令将其启动起来”;

  这三个也被称作puppet 的资源抽象层(RAL)
  RAL 由type( 类型) 和provider( 提供者,即不同OS 上的特定实现)组成。
  

2)资源定义

  资源定义通过向资源类型的属性赋值来实现,可称为资源类型实例化;
  定义了资源实例的文件即清单,manifest;
  定义资源的语法如下:

type {'title':
	attribute1 	=> value1,
	atrribute2	=> value2,
	……
}

  注意:type必须使用小写字符;title是一个字符串,在同一类型中必须惟一;每一个属性之间需要用“,”隔开,最后一个“,”可省略。
  例如,可以同时有名为nginx 的“service”资源和“package”资源,但在“package” 类型的资源中只能有一个名为“nginx”的资源。

3)资源属性中的三个特殊属性:

  • Namevar:可简称为name;
  • ensure:资源的目标状态;
  • Provider:指明资源的管理接口;

3、常用资源总结

1)查看资源
  我们可以使用puppet describe来打印有关Puppet资源类型,提供者和元参数的帮助。使用语法如下:

puppet describe [-h|--help] [-s|--short] [-p|--providers] [-l|--list] [-m|--meta] [type]
	-l:列出所有资源类型;
	-s:显示指定类型的简要帮助信息;
	-m:显示指定类型的元参数,一般与-s一同使用;

2)group:管理系统上的用户组。
  查看使用帮助信息:

enter description here
 
group使用帮助
属性:
	name:组名,可以省略,如果省略,将继承title的值;
	gid:GID;
	system:是否为系统组,true OR false;
	ensure:目标状态,present/absent;
	members:成员用户;

  简单举例如下:

vim group.pp
	group{'mygrp':
        name => 'mygrp',
        ensure => present,
        gid => 2000,
	}

  我们可以来运行一下:

enter description here
 
运行写好的group资源

  
3)user:管理系统上的用户。
  查看使用帮助信息:

enter description here
 
user使用帮助
属性:
	name:用户名,可以省略,如果省略,将继承title的值;
	uid: UID;
	gid:基本组ID;
	groups:附加组,不能包含基本组;
	comment:注释; 
	expiry:过期时间 ;
	home:用户的家目录; 
	shell:默认shell类型;
	system:是否为系统用户 ;
	ensure:present/absent;
	password:加密后的密码串; 

  简单举例如下:

vim user1.pp
	user{'keerr':
        ensure => present,
        system => false,
        comment => 'Test User',
        shell => '/bin/tcsh',
        home => '/data/keerr',
        managehome => true,
        groups => 'mygrp',
        uid => 3000,
	}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69901620/viewspace-3138218/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-12-04

  • 博文量
    295
  • 访问量
    9529