puppet 类、模块
为什么80%的码农都做不了架构师?>>>
为了通用目标或目的组织在一起的一个或多个资源叫类
[root@puppet manifests]# cat test.pp
class nginx { #定义类名package {'nginx': #定义资源ensure => present,}service {'nginx':ensure => true,require => Package['nginx'],}
}
include nginx #声明类
#class {'nginx'} #这种方式也可以声明类
执行
puppet apply test.pp -v -d
一个带传参的类
[root@puppet manifests]# cat test1.pp
$webserver = $operatingsystem ? { /^(?i-mx:redhat|centos|fedora)/ => 'httpd',/^(?i-mx:ubuntu|debian)/ => 'apache2',
}class httpd ($pkgname='apache2') {package {"$pkgname":ensure=>present,}service {"$pkgname":ensure=>true,require=>Package["$pkgname"],}
}class {'httpd':pkgname => $webserver ,
}
执行
puppet apply test1.pp -v -d
类的继承
[root@puppet manifests]# cat test2.pp
class nginx {package {"nginx":ensure=>present,}
}class nginx::rproxy inherits nginx {file {'/etc/nginx/nginx.conf':ensure=>file,source=>'/tmp/nginx/nginx.rproxy.conf',notify=>Service['nginx'],}service {'nginx':ensure=>true,}}class nginx::web inherits nginx {file {'/ect/nginx/nginx.conf':ensure=>file,source=>'/tmp/nginx/nginx.web.conf',notify=>Service['nginx'],}service {'nginx':ensure=>true,}
}class {'nginx::rproxy'} 或者导入
[root@puppet manifests]# cat node.pp
import "/etc/puppet/manifests/test2.pp"
include nginx::rproxy
执行
puppet apply node.pp -v -d
模块
[root@puppet puppet]# cd modules/ #创建nginx模块
[root@puppet modules]# ls
nginx
[root@puppet modules]# mkdir -pv nginx/{manifests,files,templates,lib} #必须包含的文件夹
[root@puppet nginx]# cd manifests/
[root@puppet manifests]# ls
init.pp nginx.rproxy.pp nginx.web.pp #init.pp 必须包含的文件 声明类
[root@puppet manifests]# cat init.pp nginx.rproxy.pp nginx.web.pp #查看3个文件内容 都是刚才定义的类
class nginx {package {"nginx":ensure=>file,}
}
class nginx::rproxy inherits nginx {file {'/etc/nginx/nginx.conf':ensure=>file,source=>'puppet:///modules/nginx/nginx.rproxy.conf', #这个路径不需要files目录 会自动找notify=>Service['nginx'],}service {'nginx':ensure=>true,}}
class nginx::web inherits nginx {file {'/ect/nginx/nginx.conf':ensure=>file,source=>'puppet:///modules/nginx/nginx.web.conf',notify=>Service['nginx'],}service {'nginx':ensure=>true,}
}[root@puppet files]# cp /tmp/nginx/nginx.* . #copy 文件到files 依赖或者额外的配置文件都要放到files
[root@puppet files]# ls
nginx.rproxy.conf nginx.web.conf
单独
[root@puppet manifests]# cat init.pp
class nginx {package {"nginx":ensure=>present,}file {'/etc/nginx/nginx.conf':ensure=>file,source=>'puppet:///modules/nginx/nginx.web.conf',}service {'nginx':ensure=>true,}}测试
[root@puppet manifests]# puppet apply -e 'include nginx' -v -d
一个网络模型下的模块
class jdk{ #声明类名 将相应的rpm包文件 放到模块路径下的files目录里file {'/opt/jdk-8u45-linux-x64.rpm':source=>'puppet:///modules/jdk/jdk-8u45-linux-x64.rpm',group=>'root',owner=>'root',}file{'/etc/profile.d/java.sh':# ensure=>present,source=>'puppet:///modules/jdk/java.sh',group=>'root',owner=>'root',}exec {'install':cwd=>'/opt',path=>'/usr/local/bin:/usr/bin:/bin:',command=>'rpm -ivh jdk-8u45-linux-x64.rpm',creates=>'/usr/java/jdk1.8.0_45/bin/java',subscribe=>File['/opt/jdk-8u45-linux-x64.rpm'],require=>File['/opt/jdk-8u45-linux-x64.rpm'],}exec {'sh':cwd=>'/etc/profile.d/',creates=>'/etc/profile.d/java.sh',path=>'/usr/local/bin:/usr/bin:/bin',command=>'sh java.sh',require=>File['/etc/profile.d/java.sh'],}
}
然后在site.pp里面声明
node 'agent.cc.com'{include jdk
}
转载于:https://my.oschina.net/kcw/blog/469984
puppet 类、模块相关推荐
- 【转】实现多行toolTips的类模块
注:本文转自CSDN论坛 这里有一个类模块,就是用来实现多行 toolTips 的. Option Explicit '============= ...
- vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用
VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记(8):常用模块之系统类模块(二)user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.此处我们介绍一些user模块的 ...
- VB中窗体模块、标准模块、类模块的区别
VB的代码存储在模块中.在VB中提供了三种类型的模块:窗体模块.标准模块和类模块. 简单的应用程序可以只有一个窗体,所用的程序都驻留在窗体模块中,而当应用程序庞大复杂时,就要另外附加窗体.最终可能有几 ...
- VB中什么是类,类模块有什么作用
一.什么是类? 用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式.类是面向对象编程的核心. VB最为人垢病的是它的面向对象特性.实际上VB是一种基于对象的开发工具.在VB中 ...
- 计算机模块的概念,用户定义类模块概念-计算机二级-Access
本节课讲解[VBA - 用户定义类模块概念]同学们可以在下方评论区进行留言. 那我们开始今天的教程吧. 1.用户定义类模块由其属性和属性过程.方法及时间封装构成,"属性和属性过程" ...
- 一个关机的VB类模块
一个关机的VB类模块 'APIs WHICH HANDLES SHUTDOWN / RESTART / LOGOFF ETC.. Option Explicit Private Declare Fun ...
- 511遇见易语言注册调用乐玩插件类模块封装
乐玩插件 是乐玩网络科技工作室在业余时间开发的一款安全,绿色,可靠的免费产品:功能强大,这里主要针对易语言对乐玩插件的调用,图色,窗口,字库的制作调用,后台的绑定,及判断,最后通过4种方法实现多线程多 ...
- VBA 类模块理解和使用总结
目 录 VBA 类模块理解和使用总结 一.类的概念 二.类的定义 三.类详细定义 关于封装 关于多态 关于异常 关于自定义事件 四.结论: VBA 类模块理解和使用总结 一.类的概念 记得有人总结,V ...
- Excel宏(VBA)类模块的创建与调用
Excel宏VBA类模块的创建与调用 1 类模块的介绍 2 为什么要使用类模块 3 如何创建类模块 4 如何调用类模块 5 代码 1 类模块的介绍 2 为什么要使用类模块 3 如何创建类模块 类模块的 ...
最新文章
- 64位Fedora运行32位C++程序中int精度溢出处理
- ORA-12545: Connect failed because target host or object does not exist
- 针对集合中的某个字段对集合中的对象进行排序
- 通过Xshell上传下载文件
- [我研究]Behavior Based Software Theft Detection - Hawk
- python写的程序怎么打包成exe_python--- 如何将自己的程序打包成exe ?
- 爱上Foobar2000抛弃winamp一周年纪念日
- Sitecore8.2 GeoIP - 在8.2的引擎盖下发生了什么?
- 流应用– 移动互联网营销新利器
- 使用STL标准模板库实现的个人通讯录
- JAVA开源B2C系统
- 软件工程导论---软件测试(集成测试、单元测试、验收测试、系统测试)
- flutter 使用阿里图标
- 无法打开包括文件:“afxcontrolbars.h”: 的解决方案
- 斐波那契查找(黄金分割法查找)Java实现。
- java 对象和List 里面的对象判断属性是不是为空
- 自动驾驶层次测试体系(单元测试/集成测试/SIL/HIL/VIL/RIL/LABCAR/实车等)
- C和C++混合编程(error C2059: syntax error : 'string')
- 【Python】Python下载及安装(windows系统)
- QtMath:通用数学函数