puppet工作原理之模块使用
Posted zhangxingeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了puppet工作原理之模块使用相关的知识,希望对你有一定的参考价值。
一、模块介绍
1、什么是模块
通常情况把manifest文件分解成易于理解得结构,例如类文件,配置文件分类存放,并通过某种机制整合使用,这种机制就是模块,有助于结构化、层次化的方式使用puppet,puppet则基于模块自动装载器
从另一个角度来说,模块实际就是按约定的预约定的结构存放了多个我呢见或子目录,目录里的这些文件或子目录必须遵循命令规范
2、模块的命令规范,如下范例
[[email protected] redis]# tree . ├── files │ ├── redis-master.conf │ └── redis-sentinel.conf ├── lib ├── manifests │ ├── init.pp │ ├── master.pp │ └── slave.pp ├── spec ├── templates │ └── redis-slave.conf.erb └── test
MODULE NAME
manifests/:必须存在
init.pp 必须一个类定义,类名称必须与模块名称相同
files/:静态文件
每个文件的访问路径遵循:puppet:///modules/MODULE_NAME/FILE_NAME;
templates
每个文件的访问路径遵循:tempate(‘MOD_NAME/TEMPLATE_FILE_NAME‘);
lib/:插件目录,常用于存储自定义的facts以及自定义类型;
spec/:类似于tests目录,存储lib/目录下插件的使用帮助和范例;
tests/:当前模块的使用帮助或使用范例;
二、制作redis模块
1、创建目录结构
cd /etc/puppet/modoules
mkdir -pv redis/manifests,files,templates,tests,lib,spec
2、创建父类子类文件
父类文件
[[email protected] manifests]# pwd /etc/puppet/modules/redis/manifests [[email protected] manifests]# cat init.pp class redis package‘redis‘: ensure => installed, -> service‘redis‘: ensure => running, enable => true, hasrestart => true, hasstatus => true, require => Package[‘redis‘], [[email protected] manifests]#
创建子类master.pp/slave.pp
[[email protected] manifests]# cat master.pp class redis::master inherits redis file ‘/etc/redis.conf‘: ensure => file, source => ‘puppet:///modules/redis/redis-master.conf‘, owner => ‘redis‘, group => ‘root‘, mode => ‘0640‘, Package[‘redis‘] -> File[‘/etc/redis.conf‘] ~> Service[‘redis‘] [[email protected] manifests]# cat slave.pp class redis::slave($master_ip,$master_port=‘6379‘) inherits redis file ‘/etc/redis.conf‘: ensure => file, content => template(‘redis/redis-slave.conf.erb‘), owner => ‘redis‘, group => ‘root‘, mode => ‘0640‘, Package[‘redis‘] -> File[‘/etc/redis.conf‘] ~> Service[‘redis‘] [[email protected] manifests]#
3、准备文件
模板文件(模板文件就是redis.conf文件加个后缀名,里面可以写一些erb变量)
erb方法请参考官方
cp redis-slave.conf.erb /etc/puppet/modules/redis/templates/redis-slave.conf.erb
这里只修改了一行,redis主从的ip及端口
slaveof <%= @master_ip %> <%= @master_port %>
静态文件
cp redis.conf /etc/puppet/modules/redis/files/redis-master.conf
这里只注销了
#bind 127.0.0.1
4、结构已经完成,看看模块结构
[[email protected] modules]# tree . └── redis ├── files │ ├── redis-master.conf │ └── redis-sentinel.conf ├── lib ├── manifests │ ├── init.pp │ ├── master.pp │ └── slave.pp ├── spec ├── templates │ └── redis-slave.conf.erb └── test
5、测试可以传参的方式调用准备好的模块,也可以类赋值在.pp文件种运行该文件
第一种,puppet apply -v --noop -e "class‘redis::slave‘: master_ip => ‘192.168.216.52‘" #多个参数使用逗号隔开
第二种 ,vim redis-test.pp
class ‘redis::slave‘:
master_ip => ‘192.168.216.52‘ ,
puppet apply -e --noop redis-test.pp
参考学习:自动化运维工具——puppet详解(二)
转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10743387.html
以上是关于puppet工作原理之模块使用的主要内容,如果未能解决你的问题,请参考以下文章