当前位置: 首页 > 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的区别与联系
  • [数据结构]链表的实现在PHP中
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 2017-09-12 前端日报
  • android图片蒙层
  • JavaScript 基本功--面试宝典
  • LintCode 31. partitionArray 数组划分
  • MySQL用户中的%到底包不包括localhost?
  • MySQL主从复制读写分离及奇怪的问题
  • Shell编程
  • Vue.js-Day01
  • vue2.0项目引入element-ui
  • 产品三维模型在线预览
  • 从0到1:PostCSS 插件开发最佳实践
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • - 概述 - 《设计模式(极简c++版)》
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 最简单的无缝轮播
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 大数据全解:定义、价值及挑战
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ![CDATA[ ]] 是什么东东
  • # C++之functional库用法整理
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #图像处理
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (算法)Game
  • (转)ORM
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net 路由处理厉害了
  • .NET连接MongoDB数据库实例教程
  • .sdf和.msp文件读取
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • []FET-430SIM508 研究日志 11.3.31