运维自动化之锋芒初露puppet class and module 以及 kick功能的实现。

简介:

Class:


    Class是用于通用目标的一组资源,因此,它是命名的代码块,在某位置创建后可以在全局使用。

类似于其他编程语言中的类的功能,puppetClass可以被继承,也可以包含子类。 

使用细节:

1、 类的名称只能以小写字母开头,可以包含数字和下划线。

2、 每个类都会引入一个新的变量scope,在任何时候访问类中的变量时,都得使用其完全限定名称。

3、 在本地scope可以重新为top scope中的变量赋予一个新值。


声明类的两种方式:

Include 类名

Class  {类名:}

类的继承使用案例:

class webserver {

package {'httpd':

        ensure => 'installed',

        }

}


class webserver::proxy inherits webserver {

file {'/etc/httpd/conf/httpd.conf':

        ensure => file,

        source => '/backup/httpd/httpd.conf',

        mode => '0644',

        owner => 'root',

        group => 'tuchao',

        require => Package['httpd'],

     }

service {'httpd':

  ensure => running,


  subscribe => File['/etc/httpd/conf/httpd.conf'],

        }


}

class webserver::dynamic inherits webserver {

file {'/etc/httpd/conf/httpd.conf':

        ensure => file,

        source => '/backup/httpd/httpd-dynamic.conf',

        mode => '0644',

        owner => 'root',

        group => 'tuchao',

        require => Package['httpd'],

     }


service {'httpd':

  ensure => running,

  subscribe => File['/etc/httpd/conf/httpd.conf'],

        }

}


include webserver::dynamic


Modules概述


    到目前为止,资源申报、定义类、声明类等所有功能都只能在一个manifest文件中实现,但这却非最有效的基于puppet管理IT基础架构的方式。实践中,

一般需要把manifest文件分解成易于理解的结构,例如将类文件、配置文件甚至包括后面将提到的模块文件等分类存放,并且通过某种机制在必要时将它们

整合起来。这种机制即“模块”,它有助于以结构化、层次化的方式使用puppet,而puppet则基于“模块自动装载器”完成模块装载。从另一个角度来说,模

块实际上就是一个按约定的、预定义的结构存放了多个文件或子目录的目录,目录里的这些文件或子目录必须遵循其命名规范。

Puppet会按此种规范在特定位置查找所需的模块文件,不过,这些特定目录也可以通过puppet的配置参数modulepath定义。


puppet module list //列出所有的模块

puppet master --genconfig| grep modulepath  //显示模块的查找路径

puppet module search //搜索模块

puppet module install //安装模块


模块布局:

Module Name

manifests .//用于存放清单文件

init.pp

files //用于存放依赖的配置文件

templates //用于存放模块文件

lib //用于存放库文件

tests //用于存放测试样本文件

spec //用于存放各插件使用规范



站点清单:/etc/puppet/manifests/

    site.pp

        node 'FQDN' {

            include class

        }

puppet  master / agent 工作过程:


wKioL1QFMrzjIQiBAAIktxoUtso935.jpg



实验一、配置一个puppet-master 控制agent端安装httpd服务。

Puppet master端配置:

1、安装puppet-server

yum install puppet-server -y

2、生成配置文件

puppet master --genconfig > /etc/puppet/puppet.conf

3、修改pid文件路径

vim /etc/puppet/puppet.conf

pidfile = $rundir/master.pid

rundir = /var/run/puppet


4、创建一个模块

mkdir httpd/{manifests,files,lib,test,spec} -pv

5、创建init.pp文件

cd /etc/puppet/modules/httpd/manifests

vim init.pp

写入以下代码:

class httpd {

package {'httpd':

        ensure => 'installed',

        }

user {'tuchao':

        ensure => present,

        home => '/home/tuchao',

        uid => '601',

        gid => '601',

        shell => "/bin/bash",

        managehome => true,

        require => Group['tuchao']

     }

group {'tuchao':

        ensure => present,

        gid => '601',

      }

}

6、创建需要的类文件

vim httpd_web.pp                                                                                                          

写入以下代码:

class httpd::httpd_web inherits httpd {

file {'/etc/httpd/conf/httpd.conf':

        ensure => file,

        source => 'puppet:///modules/httpd/httpd.conf',

        mode => '0644',

        owner => 'root',

        group => 'tuchao',

        require => Package['httpd'],

     }

service {'httpd':

  ensure => running,


  subscribe => File['/etc/httpd/conf/httpd.conf'],

        }

}

7、创建站点清单文件,定义需要管理的节点。

vim /etc/puppet/manifests/site.pp


node 'server1.tuchao.com' {

include httpd::httpd_web

}

node 'admin1.tuchao.com' {

include httpd::httpd_web

}

node 'admin2.tuchao.com' {

include httpd::httpd_web

}


8、启动puppetmaster

/etc/init.d/puppetmaster  start


puppet-agent端:

1、 安装puppet

yum install puppet -y

2、 修改agent端配置文件,在main段中指定puppet-master主机。

vim /etc/puppet/puppet.conf

server = server1.tuchao.com

3、 启动puppet服务

service puppet start


这时agent会发送证书签署请求给master,我们来到puppet master 端签署证书。

puppet cert list

puppet cert sign --all

wKioL1QFL8bRsCyEAAJF0E5p9oI643.jpg

再来到agent端查看

wKiom1QFL-2xIqSKAANkw5hN8Jg211.jpg

注:如果过程中出现问题可以打开debug模式查看详细信息,便于排错。

puppet agent --verbose --no-daemonize --debug


puppet kick 功能实现


    puppet客户端默认每30分钟跟服务器通讯一次,我们可以修改puppetmaster端配置文件中的runinterval指令的值。但是有时,我们希望服务端能给客户端紧急推送一些任务,于是就有了puppet kickpuppet 2.6以前叫puppetrun)。


编辑客户端/etc/puppet/puppet.conf

[agent]后面添加   

listen = true  //这个是让puppet监听8139端口 


编辑或新建文件/etc/puppet/namespaceauth.conf,包含下面内容

allow *.magedu.com 

 

编辑文件auth.conf

path /run 

auth any

method save 

allow puppet.magedu.com    


来到master端执行 puppet kick -a --host=admin2.tuchao.com 即可完成推送。 


故障总结:


    下面总结一个小问题,如果一个已经与puppet master端完成证书签署的节点更换了主机名,出现无法连接puppet-master开启debug模式报如下错误:

wKioL1QFMWTDux3aAALkW7HTwoU865.jpg

根据上面的提示,我们在master端执行:

puppet cert clean admin2.tuchao.com  //清除原主机名相对应的证书。

在agent端执行:

rm -f /var/lib/puppet/ssl/certs/admin2.tuchao.com.pem

puppet agent -t

只后再重启puppet即可重新完成交互公私钥对,完成证书签署。



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1547732


相关文章
|
3月前
|
存储 运维 数据可视化
运维过程记录工具深度解析:从原理到实操,一文掌握核心功能与应用场景
运维过程记录是保障系统稳定的关键,缺失记录会导致问题难定位、重复发生及协作低效。通过自动化工具实现操作实时记录、集中管理与可回溯分析,可大幅提升故障排查、安全审计与团队协作效率。未来,记录工具将更智能,助力运维向高效、可控、可预测方向演进。
|
2月前
|
测试技术
自动化测试登录后的功能
在自动化测试的时候,往往许多功能需要登录以后才可以进行操作的,在这里我介绍一种方法,在登录以后将Cookies信息存入本地文件,在测试登录以后操作的时候再从本地文件把信息调出来存入Cookies
57 4
|
4月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
453 3
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
271 4
|
5月前
|
运维 监控 Linux
WGCLOUD运维平台的分布式计划任务功能介绍
WGCLOUD是一款免费开源的运维监控平台,支持主机与服务器性能监控,具备实时告警和自愈功能。本文重点介绍其计划任务功能模块,可统一管理Linux和Windows主机的定时任务。相比手动配置crontab或Windows任务计划,WGCLOUD提供直观界面,通过添加cron表达式、执行指令或脚本并选择主机,即可轻松完成任务设置,大幅提升多主机任务管理效率。
|
运维 Linux Apache
Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例
【10月更文挑战第8天】本文介绍了Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例。Puppet通过定义资源状态和关系,确保系统配置始终如一,支持高效管理基础设施。文章详细讲解了Puppet的安装步骤、配置方法及DSL语言示例,帮助读者快速掌握Puppet的使用技巧。
775 2
|
10月前
|
弹性计算 Ubuntu Linux
阿里云系统运维管理OOS一键安装宝塔面板,这个功能太牛了!
宝塔面板是实用的服务器管理工具,支持多种操作系统(如Ubuntu、CentOS等)。通过阿里云OOS可一键安装。安装前提包括ECS实例运行中且有公网,安全组需开放8888端口。安装步骤简单,进入ECS控制台选择预装应用并确认下单,完成后在控制台查看详情和登录信息。最后验证安装结果,确保能成功访问宝塔面板URL。
514 82
|
8月前
|
运维 供应链 前端开发
中小医院云HIS系统源码,系统融合HIS与EMR功能,采用B/S架构与SaaS模式,快速交付并简化运维
这是一套专为中小医院和乡镇卫生院设计的云HIS系统源码,基于云端部署,采用B/S架构与SaaS模式,快速交付并简化运维。系统融合HIS与EMR功能,涵盖门诊挂号、预约管理、一体化电子病历、医生护士工作站、收费财务、药品进销存及统计分析等模块。技术栈包括前端Angular+Nginx,后端Java+Spring系列框架,数据库使用MySQL+MyCat。该系统实现患者管理、医嘱处理、费用结算、药品管控等核心业务全流程数字化,助力医疗机构提升效率和服务质量。
444 4
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
810 56

热门文章

最新文章

推荐镜像

更多