puppet工作原理之模块使用
一、模块介绍
1、什么是模块
通常情况把manifest文件分解成易于理解得结构,例如类文件,配置文件分类存放,并通过某种机制整合使用,这种机制就是模块,有助于结构化、层次化的方式使用puppet,puppet则基于模块自动装载器
从另一个角度来说,模块实际就是按约定的预约定的结构存放了多个我呢见或子目录,目录里的这些文件或子目录必须遵循命令规范
2、模块的命令规范,如下范例
[root@web1 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、创建父类子类文件
父类文件
[root@web1 manifests]# pwd
/etc/puppet/modules/redis/manifests
[root@web1 manifests]# cat init.pp
class redis {
package{'redis':
ensure => installed,
} -> service{'redis':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
require => Package['redis'],
}
}
[root@web1 manifests]#
创建子类master.pp/slave.pp
[root@web1 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 => '',
} Package['redis'] -> File['/etc/redis.conf'] ~> Service['redis']
}
[root@web1 manifests]# cat slave.pp
class redis::slave($master_ip,$master_port='') inherits redis {
file {'/etc/redis.conf':
ensure => file,
content => template('redis/redis-slave.conf.erb'),
owner => 'redis',
group => 'root',
mode => '',
} Package['redis'] -> File['/etc/redis.conf'] ~> Service['redis']
}
[root@web1 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、结构已经完成,看看模块结构
[root@web1 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工作原理之模块使用的更多相关文章
- puppet工作原理及部署redis主从篇
一.简介 1.国际惯例什么是puppet puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统 ...
- puppet 工作原理
Puppet的工作细节分成如下几个步骤: 1.客户端puppetd调用facter,facter会探测出这台主机的一些变量如主机名.内存大小.IP地址等.然后puppetd把这些信息发送到服务器端. ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- Nginx工作原理和优化、漏洞
1. Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...
- Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...
- Wifi模块的工作原理
http://www.wifitop1.com/news/content-98.html 在无线网络领域里面,无线wifi是最火的名词.对于串口wifi模块的工作是什么呢?串口wifi模块又有什么功能 ...
- 4G模块是什么 4G模块的工作原理
4G模块是什么 4G模块,又叫4G传输模块.4G通信模块.4G LTE模块.它是一种硬件加载到指定频段,软件支持标准的LTE协议,且软硬件高度集成模组化的产品,具有兼容性好.通信速度快.通信数据量大. ...
- 什么是4G模块 4G模块的工作原理及特点
什么是4G模块 4G模块,也被叫做4G通信模块或4G DTU模块,他是物联网行业具有4G通信功能的一种产品,通过4G模块,我们可以实现工业设备数据通过无线4G网络传输到远端控制中心,并从控制中心通过4 ...
- puppet完全攻略(一)puppet应用原理及安装部署
puppet完全攻略(一)puppet应用原理及安装部署 2012-06-06 18:27:56 标签:puppet puppet应用原理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出 ...
随机推荐
- Vue-CLI 标准开发工具-快速准备环境和创建项目
https://cli.vuejs.org/zh/ 淘宝镜像安装: npm install -g cnpm --registry=https://registry.npm.taobao.org 2.x ...
- Oracle列信息表 all_tab_columns中的data_length和data_precision字段区别
Oracle列信息表 all_tab_columns中的data_length和data_precision字段区别 区别: 这两个属性都属于user_tab_columns视图,他们的含义:1,da ...
- Java基础 return 退出main方法的示例
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- ZingChart line 折线图表数据设置
根据 x 坐标和 y 坐标一一对应进行设置 (x,y) { "type": "line", "series":[ {,],[,],[,],[ ...
- Spring cloud微服务安全实战-3-14章节小结
认证:一个httpBasic 一个是用户名密码的认证 授权:数据库内判断的r就是读 w就是写 ,ACL 获取用户信息的这段逻辑,实际上着也是安全机制的一种.防止越权,当前只能看到自己的信息. Spri ...
- mysql存储过程中declare 和set 定义变量的区别
declare为对变量进行声明,声明必须制定变量的数据类型,只能写在过程的前面set是对变量赋值,可以放在过程的任何地方对没有declare声明过的变量赋值,该变量必须以加上@号,否则会报错 DECL ...
- 毫无PS痕迹 你的第一本Photoshop书 完整版
毫无PS痕迹 你的第一本Photoshop书 目录 <毫无PS痕迹-你的本Photoshop书>全书分为四大部分: 第1.2章讲解色彩和图像的原理与基础知识要点. 第3至11章全面讲解了使 ...
- Mac或者linux系统自动加载python tab补全功能
因为mac OS属于类unix系统,所以基本和linux系统使用相差不大,只是用户登陆时自动执行环境变量文件的区别 mac系统: ShanedeMBP:login_api shane$ vi ~/.b ...
- window下安装docker
下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 1,.双击安装DockerTool ...
- Top 10 Machine Learning Algorithms For Beginners
Linear Regression Logistic regression KNN Classification Support Vector Machine (SVM) Decision Trees ...