首页 技术 正文
技术 2022年11月21日
0 收藏 378 点赞 4,766 浏览 2527 个字

一、模块介绍

  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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,031
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,520
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,368
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,148
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859