puppet之模板和类
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之模板和类的更多相关文章
- 20Spring_JdbcTemplatem模板工具类
JdbcTemplate 是Spring提供简化Jdbc开发模板工具类.为了更好的了解整个JdbcTemplate配置数据库连接池的过程,这篇文章不采用配置文件的方式,而是采用最基本的代码 的方式来写 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- C++ - 派生类访问模板基类(templatized base class)命名
派生类访问模板基类(templatized base class)命名 本文地址: http://blog.csdn.net/caroline_wendy/article/details/239936 ...
- PHP模板解析类实例
作者:mckee 这篇文章主要介绍了PHP模板解析类,涉及php针对模板文件的解析与字符串处理的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 <?php class template { ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
- 学习C++模板,类模板
当我们使用向量时,会经常使用形如:vector<int> a的式子.这个表达式就是一个类模板实例化的例子,vector是一个类模板,我们给他传递模板参数(见<>里),然后创建一 ...
- C++复习:函数模板和类模板
前言 C++提供了函数模板(function template).所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表.这个通用函数就称为函数模板.凡是函数体 ...
- 【校招面试 之 C/C++】第2题 函数模板、类模板、特化、偏特化
1.C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样 ...
- C++解析(26):函数模板与类模板
0.目录 1.函数模板 1.1 函数模板与泛型编程 1.2 多参数函数模板 1.3 函数重载遇上函数模板 2.类模板 2.1 类模板 2.2 多参数类模板与特化 2.3 特化的深度分析 3.小结 1. ...
随机推荐
- php array function
说明:不特殊说明都支持php4,5,7 参考:https://www.php.net/manual/zh/ref.array.php is_array ( mixed $var ) : bool ...
- android中如何自动获取短信验证码
package com.loaderman.smsbroadcastreceiver; import java.util.regex.Matcher; import java.util.regex.P ...
- 阶段3 2.Spring_10.Spring中事务控制_5 spring事务控制的代码准备
创建一个工程,只搭建环境不做配置.等配置的时候把这个项目相关的代码再复制到新项目里面 jar包的打包方式 导入包 事务控制也是基于AOP的.所以这里导入aspectjweaver 复制jdbcTemp ...
- kernel function
下面这张图位于第一.二象限内.我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母.我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横.纵坐标是两个特征.显然,在这 ...
- Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default
背景说明 执行<Elasticsearch 权威指南>的示例,在执行聚合查询的时候,报错 Fielddata is disabled on text fields by default. ...
- golang remote debug和docker debug
在编写 Go 代码的时候,因为很多时候都是需要调试服务器上的代码的,作为一个年长的工程师,肯定不能用 log.Printf 来调试问题,所以我选择了 delve 这个工具,通过 delve 我可以像本 ...
- vim开发配置
需求:使用vim开发python,可以进行简单配置 cd 到用户宿主目录下 vim .vimrc 粘贴以下内容: 版本一: set encoding=utf-8"去掉vi的一致性" ...
- Multi-Object-Edit With Django FormSets
I had to write a multi-object edit table the other day for a Django project and as such I dove into ...
- 【Ruby on Rails 学习三】Ruby 基本数据类型(类、类的实例、对象)
数字.文本.范围.符合.True.False.Nil 1为什么是一个类的对象,使用methods方法可以查看一个对象的所有函数(方法) $ irb irb(main)::> => irb( ...
- bat默认以管理员身份运行
在Bat文件内容前插入以下一段代码: @echo off :: BatchGotAdmin :------------------------------------- REM --> Chec ...