puppet连载22:define用法

简介: puppet define 定义对于重复执行的代码,puppet支持用define来定义函数,然后利用变量来实现。class user::login {define admin(uid,uname" :ensure => "present"...

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",
}
}

目录
相关文章
|
3月前
宏#define命令练习2
宏#define命令练习2。
34 12
|
3月前
宏#define命令练习
宏#define命令练习。
33 9
|
3月前
宏#define命令练习3
宏#define命令练习3。
30 6
#define的用法
在程序中扩展#define定义符号和宏时,需要涉及几个步骤。 1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先 被替换。 2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。
145 0
|
8月前
|
Python
IDA3.12版本的python,依旧报错IDAPython: error executing init.py.No module named ‘impRefer to the message win
IDA3.12版本的python,依旧报错IDAPython: error executing init.py.No module named ‘impRefer to the message win
|
监控 Java
|
C++
c/c++ define用法
define,无参宏定义的一般形式为:#define 标识符 字符串 外文名 define 词条范围 计算机专业用语 无参一般形式 #define 标识符 字符串 带参一般形式 #define 宏...
2423 0