为什么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 类、模块相关推荐

  1. 【转】实现多行toolTips的类模块

    注:本文转自CSDN论坛 这里有一个类模块,就是用来实现多行   toolTips   的.          Option   Explicit             '============= ...

  2. vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用

    VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...

  3. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记(8):常用模块之系统类模块(二)user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.此处我们介绍一些user模块的 ...

  4. VB中窗体模块、标准模块、类模块的区别

    VB的代码存储在模块中.在VB中提供了三种类型的模块:窗体模块.标准模块和类模块. 简单的应用程序可以只有一个窗体,所用的程序都驻留在窗体模块中,而当应用程序庞大复杂时,就要另外附加窗体.最终可能有几 ...

  5. VB中什么是类,类模块有什么作用

    一.什么是类? 用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式.类是面向对象编程的核心. VB最为人垢病的是它的面向对象特性.实际上VB是一种基于对象的开发工具.在VB中 ...

  6. 计算机模块的概念,用户定义类模块概念-计算机二级-Access

    本节课讲解[VBA - 用户定义类模块概念]同学们可以在下方评论区进行留言. 那我们开始今天的教程吧. 1.用户定义类模块由其属性和属性过程.方法及时间封装构成,"属性和属性过程" ...

  7. 一个关机的VB类模块

    一个关机的VB类模块 'APIs WHICH HANDLES SHUTDOWN / RESTART / LOGOFF ETC.. Option Explicit Private Declare Fun ...

  8. 511遇见易语言注册调用乐玩插件类模块封装

    乐玩插件 是乐玩网络科技工作室在业余时间开发的一款安全,绿色,可靠的免费产品:功能强大,这里主要针对易语言对乐玩插件的调用,图色,窗口,字库的制作调用,后台的绑定,及判断,最后通过4种方法实现多线程多 ...

  9. VBA 类模块理解和使用总结

    目 录 VBA 类模块理解和使用总结 一.类的概念 二.类的定义 三.类详细定义 关于封装 关于多态 关于异常 关于自定义事件 四.结论: VBA 类模块理解和使用总结 一.类的概念 记得有人总结,V ...

  10. Excel宏(VBA)类模块的创建与调用

    Excel宏VBA类模块的创建与调用 1 类模块的介绍 2 为什么要使用类模块 3 如何创建类模块 4 如何调用类模块 5 代码 1 类模块的介绍 2 为什么要使用类模块 3 如何创建类模块 类模块的 ...

最新文章

  1. 64位Fedora运行32位C++程序中int精度溢出处理
  2. ORA-12545: Connect failed because target host or object does not exist
  3. 针对集合中的某个字段对集合中的对象进行排序
  4. 通过Xshell上传下载文件
  5. [我研究]Behavior Based Software Theft Detection - Hawk
  6. python写的程序怎么打包成exe_python--- 如何将自己的程序打包成exe ?
  7. 爱上Foobar2000抛弃winamp一周年纪念日
  8. Sitecore8.2 GeoIP - 在8.2的引擎盖下发生了什么?
  9. 流应用– 移动互联网营销新利器
  10. 使用STL标准模板库实现的个人通讯录
  11. JAVA开源B2C系统
  12. 软件工程导论---软件测试(集成测试、单元测试、验收测试、系统测试)
  13. flutter 使用阿里图标
  14. 无法打开包括文件:“afxcontrolbars.h”: 的解决方案
  15. 斐波那契查找(黄金分割法查找)Java实现。
  16. java 对象和List 里面的对象判断属性是不是为空
  17. 自动驾驶层次测试体系(单元测试/集成测试/SIL/HIL/VIL/RIL/LABCAR/实车等)
  18. C和C++混合编程(error C2059: syntax error : 'string')
  19. 【Python】Python下载及安装(windows系统)
  20. QtMath:通用数学函数

热门文章

  1. Flink1.4.0中反序列化及序列化类变化
  2. 重新格式化NameNode后,DataNode启动不起来问题解决
  3. stopImmediatePropagation函数和stopPropagation函数的区别
  4. CentOS7中MariaDB重置密码
  5. ubuntu 安装SSH并设置免密码登录
  6. python 作业4
  7. Hibernate的DetachedCriteria使用(含Criteria)
  8. SicilyRails
  9. 如何消费WCF Data Services定义的服务操作
  10. 生成工具-CodeSmith-享受编程的乐趣(三)(转载)