puppet之模板和类

不同节点布置资源

vim /etc/puppet/manifests/site.pp
1 import "nodes/*.pp"

建立节点文件

mkdir /etc/puppet/manifests/nodes

编写http模块

mkdir -p /etc/puppet/modules/httpd/{files,manifests,templates}

httpd的部署包括下载软件包,配置,开启服务

1)加载httpd模块读取的文件

[root@server0 manifests]# cat init.pp
class httpd {
include httpd::install,httpd::config,httpd::service
}

2)安装模块

[root@server0 manifests]# cat install.pp
class httpd::install {
package {
"httpd":
ensure=>present
}
}

3)配置部分

[root@server0 manifests]# cat config.pp
class httpd::config {
file {
"/etc/httpd/conf/httpd.conf":
source=>"puppet:///modules/httpd/httpd.conf",
require=>Class["httpd::install"],
notify=>Class["httpd::service"]
}
}

4服务管理:

[root@server0 manifests]# cat service.pp
class httpd::service {
service {
"httpd":
ensure=>running
}
}

让server4执行此模块:

vim /etc/puppet/manifests/nodes/server3.pp
1 node 'server4.example.com' {
2 include httpd
3 }

模板应用,稍后详解:

虚拟主机配置:文件存放在templates目录中加,以*.erb结尾

vim /etc/puppet/modules/httpd/templates/vhost.erb
1 <VirtualHost *:80>
2 ServerName <%= domainname %>
3 DocumentRoot /var/www/<%= domainname %>
4 ErrorLog logs/<%= domainname %>_error.log
5 CustomLog logs/<%= domainname %>_access.log common
6 </VirtualHost>

注意上传的配置文件:

vim /etc/puppet/modules/httpd/files/httpd.conf
136 Listen 80
990 NameVirtualHost *:80 ##使用虚拟主机所要打开的参数
vim /etc/puppet/modules/httpd/manifests/init.pp
1 class httpd {
2 include httpd::install,httpd::config,httpd::service
3 }
4 define httpd::vhost($domainname) {
5 file {
6 "/etc/httpd/conf.d/${domainname}_vhost.conf":
7 content => template("httpd/vhost.erb"),
8 require => Class["httpd::install"],
9 notify => Class["httpd::service"]
10 }
11 file {
12 "/var/www/$domainname":
13 ensure => directory
14 }
15 file {
16 "/var/www/$domainname/index.html":
17 content => $domainname
18 }
19 }

将模块添加到server3节点上:

 vim /etc/puppet/manifests/nodes/server3.pp
1 node 'server3.example.com' {
2 include httpd
3 httpd::vhost {
4 'server3.example.com':
5 domainname => "server3.example.com"
6 }
7 httpd::vhost {
8 'www.example.com':
9 domainname => "www.example.com"
10 }
11 }

模板解析:

Erb模板语法:

<%= %> 直接替换成表达式

<% %> 包括条件循环

<%% or %%> 等同于<% or %>分别进行

创佳一个vhost.conf.erb模板文件,模板文件中定义变量为$port

[root@server0 templates]# cat vhost.conf.erb
server {
listen $port;
server_name -;
location /nginx_status {
stub_status on;
access_log off;
} }

在声明这个模板的时候,需要在资源中使用content,

[root@server0 manifests]# cat vhost.pp
define nginx::vhost ($port) {
file {
'vhost.conf':
path=>'/etc/nginx/config/vhosts/vhost.conf',
ensure=>file,
require=>Package['nginx'],
content=>template('nginx/vhost.conf.erb') } }

Puppet会查找nginx模块下template目录中的vhost.conf.erb(/etc/puppet/modules/nginx/templates/vhost.conf.erb)文件。

puppet之模板和类的更多相关文章

  1. 20Spring_JdbcTemplatem模板工具类

    JdbcTemplate 是Spring提供简化Jdbc开发模板工具类.为了更好的了解整个JdbcTemplate配置数据库连接池的过程,这篇文章不采用配置文件的方式,而是采用最基本的代码 的方式来写 ...

  2. [Reprint] C++函数模板与类模板实例解析

    这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下   本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...

  3. C++ - 派生类访问模板基类(templatized base class)命名

    派生类访问模板基类(templatized base class)命名 本文地址: http://blog.csdn.net/caroline_wendy/article/details/239936 ...

  4. PHP模板解析类实例

    作者:mckee 这篇文章主要介绍了PHP模板解析类,涉及php针对模板文件的解析与字符串处理的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 <?php class template { ...

  5. C++_进阶之函数模板_类模板

     C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...

  6. 学习C++模板,类模板

    当我们使用向量时,会经常使用形如:vector<int> a的式子.这个表达式就是一个类模板实例化的例子,vector是一个类模板,我们给他传递模板参数(见<>里),然后创建一 ...

  7. C++复习:函数模板和类模板

    前言 C++提供了函数模板(function template).所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表.这个通用函数就称为函数模板.凡是函数体 ...

  8. 【校招面试 之 C/C++】第2题 函数模板、类模板、特化、偏特化

    1.C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样 ...

  9. C++解析(26):函数模板与类模板

    0.目录 1.函数模板 1.1 函数模板与泛型编程 1.2 多参数函数模板 1.3 函数重载遇上函数模板 2.类模板 2.1 类模板 2.2 多参数类模板与特化 2.3 特化的深度分析 3.小结 1. ...

随机推荐

  1. 常用javaScript小常识

    javascript数据类型强制转换 一.转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身.将无意义的后导 ...

  2. 服务器被攻击后当作矿机,高WIO

    __ 矿机特点:    操作系统反应慢. wio 非常高,一般轻松达到50%,甚至达到100%. 在/root/ 下存在 .ddg 隐藏路径.路径中有nnnn.db 二进制文件. /tmp ./usr ...

  3. 【flask】环境配置-python-dotenv的使用

    [自动发现程序实例] 一般来说,在执行flask run命令运行程序前,我们需要提供程序实例所在模块的位置 . Flask会自动探测程序实例,自动探测存在下面这些规则: 从当前目录寻找app.py和w ...

  4. 【6】font-size 字体属性

    font-style                         --  字体风格 font-variant                      -- 小型大写字母文本 font-weigh ...

  5. JavaScript日常学习5

    JavaScript字符串属性和方法 eg :var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";      var sln = txt.length; ...

  6. 阶段3 2.Spring_05.基于XML的IOC的案例1_2 基于XML的IOC的案例-编写spring的Ioc配置

    首先配置service对象,配置完Service对象就是注入dao对象. 但是现在没有dao对象,那就需要先配置dao对象.dao配置好以后.上线dao的注入就可以通过refs对象来注入这个dao了 ...

  7. linux LVM分区查看dm设备

    linux LVM分区查看dm设备 在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目. Device:            tps    kB_read/s   ...

  8. Stream parallel并行流的思考

    1.并行流并不一定能提高效率,就和多线程并不能提高线程的效率一样 因为引入并行流会引起额外的开销,就像线程的频繁上下文切换会导致额外的性能开销一样,当数据在多个cpu中的处理时间小于内核之间的传输时间 ...

  9. activiti随笔记录

    核心组件介绍 关键对象 1.      Deployment:流程部署对象,部署一个流程时创建. 2.      ProcessDefinitions:流程定义,部署成功后自动创建. 3.       ...

  10. js 数组去重方法总结

    var arr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, ...