博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
puppet 类、模块
阅读量:6838 次
发布时间:2019-06-26

本文共 3556 字,大约阅读时间需要 11 分钟。

  hot3.png

为了通用目标或目的组织在一起的一个或多个资源叫类

[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]# lsnginx[root@puppet modules]# mkdir -pv nginx/{manifests,files,templates,lib}  #必须包含的文件夹[root@puppet nginx]# cd manifests/[root@puppet manifests]# lsinit.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

你可能感兴趣的文章
钱找上门来了,你做好准备了吗?(采购成熟稳定软件模块、按统一要求修正)...
查看>>
硬盘无法访问由于IO设备错误,无法运行此项请求,里面的资料怎么寻回
查看>>
老友记台词笔记S0101-ijk英语
查看>>
LAMP环境搭建WordPress博客
查看>>
Oracle 数据库 数据文件 表 表空间 用户的关系(转)
查看>>
22.jvm参数优化
查看>>
sqlite 数据类型
查看>>
数据库管理
查看>>
SQL收缩数据库
查看>>
Linux基本防护措施
查看>>
Android 日志级别总结
查看>>
生产环境部署NodeJs最佳实践
查看>>
2t3ik与ddgs挖矿病毒处理
查看>>
基于K8S部署fission函数即服务
查看>>
html备份
查看>>
阿里曾鸣:全球最值钱的互联网公司都做对了什么?
查看>>
千万不要嫁给程序猿,我是认真的
查看>>
刚拿百度offer回来,分享一份刚出炉的百度Java面试真题详解
查看>>
C语言之基本运算及自动类型转换和强制类型转换
查看>>
docker私有仓库管理系统harbor的部署使用
查看>>