当前位置: 首页 > news >正文

puppet连载22:define用法

puppet define 定义

对于重复执行的代码,puppet支持用define来定义函数,然后利用变量来实现。

class user::login {
define admin(uname,uid,gid) { user { "uname" :
ensure => "present",
managehome => 'true',
name => "uname", uid => "uid",
gid => "gid", shell => "/bin/bash", home => "/home/uname",
require => Group["uname"], } group { "uname" :
ensure => "present",
gid => $gid,

}

}
}

define 定义admin的函数,并且定义了几个变量,然后在define中定义所使用的资源,
调用时,先用include包含这个类,然后就可以直接调用这个函数。

class user::user {
include user::login #如果init.pp 包含user::login 这个pp,这里可以不用输入
user::login::admin {'wang':
uname => "wang",
uid => '1000',
gid => '1000',

}
}

事例直接生成gid和uid为1000的为wang的用户名。

puppet 支持使用模版

编写一个模版,需要变量对方使用(%= %) 格式
cat /etc/puppet/modules/apache/templates/vhosts.conf.erb

ServerName <%= domain %>
ServerAdmin admin@<%= domain %>
DocumentRoot <%= docroot %>
ErrorLog logs/<%= error_log %>
CustomLog logs/<%= access_log %> common

调用模版时,在属性上加上template表明使用模版,后面的路径使用相对路径,
apache/vhosts.conf.erb 相当于 /etc/puppet/modules/apache/templates/vhosts.conf.erb
cat vhosts.pp
class apache::vhosts {
define vhost (domain,access_log,error_log,port,$docroot) {
file { "vhosts.conf":
name => "/etc/httpd/conf.d/vhosts.conf",
mode => "0744",
owner => "apache",
group => "apache",
require => Class["apache::install"],
notify => Class["apache::service"],
content => template("apache/vhosts.conf.erb"),
}
}
}

cat wang.pp
class apache::wang {
include apache::vhosts #这里可以不用输入,因为init.pp包含进apache::vhosts
apache::vhosts::vhost { "wang":
domain => "wang",
access_log => "logs/wang_access_log",
error_log => "logs/wang_error_log",
port => "80",
docroot => "/var/www/wang",
}
}

相关文章:

  • Django2.0——请求与响应(下)
  • 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
  • CentOS7配置Kubernetes(K8S)集群
  • Docker在Linux/Windows上运行NetCore文章系列
  • 使用Python将MongoDB数据导到MySQL
  • Rem之自适应js
  • ubuntu16.04下安装postgresql 10.3
  • Groovy与Java集成常见的坑
  • SQLserver视图修改sql
  • Visual Studio Code编写C/C++代码常见问题
  • iOS8 自定义UITabBar (使用popToViewController导致的UITabBarButton重叠的问题)
  • 排序算法(Merge Sort)中的 merge 步
  • BAT集体升级云事业部,这背后都藏着哪些“小心思”?
  • 【福利】BAT架构师分享最全Java架构师学习技能图谱:包含Java编程+网络+设计模式+数据库+分布式等...
  • 电磁波、无线电、802、WLAN及WiFi的区别与联系
  • hexo+github搭建个人博客
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译]Python中的类属性与实例属性的区别
  • 【EOS】Cleos基础
  • 2018一半小结一波
  • Angular4 模板式表单用法以及验证
  • C++入门教程(10):for 语句
  • CentOS从零开始部署Nodejs项目
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6 学习笔记(一)let,const和解构赋值
  • flutter的key在widget list的作用以及必要性
  • Java教程_软件开发基础
  • js操作时间(持续更新)
  • Linux后台研发超实用命令总结
  • Python爬虫--- 1.3 BS4库的解析器
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于 Babel 的 npm 包最小化设置
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 每天一个设计模式之命令模式
  • 微信小程序填坑清单
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • ​TypeScript都不会用,也敢说会前端?
  • # centos7下FFmpeg环境部署记录
  • (2022 CVPR) Unbiased Teacher v2
  • (9)STL算法之逆转旋转
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Git) gitignore基础使用
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (七)c52学习之旅-中断
  • (五)关系数据库标准语言SQL
  • (转)Linux下编译安装log4cxx
  • (转)Oracle存储过程编写经验和优化措施
  • (转)创业家杂志:UCWEB天使第一步
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net程序帮助文档制作
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2