一步一步学会puppet(三)--节点和模板

简介:

这篇主要介绍puppet中需要理解的2个重要概念:节点和模板;

===================================================================

1 节点

   1.1 定义

   1.2 详细说明

   1.3 实例

2 模板

   2.1 定义

   2.2 详细说明

   2.3 模板文件的语法

   2.4 模板文件实例

   2.5 使用模板文件生成实际配置文件

===================================================================


1 节点

1.1 定义

在puppet的master/agent组织结构中,节点配置就是用于指定每一个agent的配置,如可使用的类等;

1.2 详细说明

  • 在master/agent结构中,所有节点清单文件的入口文件为site.pp(在目录下/etc/puppet/manifests,需安装puppet-server程序包);

  • 建议一个节点使用一个清单文件,所有的清单文件都在site.pp中使用import包含进来;

  • 节点的定义和使用方式相似类的使用,即支持继承;

1.3 实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 1.定义通用目的节点
node  'base'  {
     include ntp
     include iptables
     include zabbix_agent
}
node  'node1.magedu.com'  inherits base {  # 节点node1继承基础节点的类
     include nginx
}
# 2.节点名称支持使用正则表达式
node /^node[1234]\.lamp\.com$/ {
}
# 3.定义节点的配置文件规划:
/etc/puppet/manifests/
site.pp
     import  "nginx/*.pp"  # 导入各类应用的节点定义文件
     import  "tomcat/*.pp"
     import  "varnish/*.pp"
base.pp
nginx/
     node1.magedu.com.pp  # 内部类继承于base
tomcat/
varnish/
# 4.使用外部的节点分类器ENC
使用yaml语法,PyYAML
ldap:


2 模板

2.1 定义

模板主要用于服务的配置文件的个性化生成,可根据变量替换进行文件填充;

2.2 详细说明

  • 模板文件一般位于模块的根目录下,如/etc/puppet/modules/nginx/templates;

  • 模板文件的后缀为.erb;

2.3 模板文件的语法

  • <%= Ruby Expression %>:替换为表达式的值,如:<%= @processorcount %>

  • <% ruby code %>:仅执行代码,不做任何替换;常用于条件判断或循环语句、设定变量以及在输出之前对数据进行处理;

  • <%# commit %>:注释;

  • <%%:输出<%;

  • %%>:输出%>;

2.4 模板文件实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
user <%= scope.lookupvar( 'nginx::config::nx_daemon_user' ) %>;
worker_processes <%= worker_processes %>;  # 表达式值替换
error_log  <%= scope.lookupvar( 'nginx::params::nx_logdir' )%> /error .log;
pid        <%= scope.lookupvar( 'nginx::params::nx_pid' )%>;
events {
   worker_connections <%= worker_connections %>;
   <%  if  scope.lookupvar( 'nginx::params::nx_multi_accept' ) ==  'on'  %>multi_accept on;<% end %>  # 执行代码块,作为条件判断依据
}
http {
   include        /etc/nginx/mime .types;
   default_type  application /octet-stream ;
   access_log  <%= scope.lookupvar( 'nginx::params::nx_logdir' )%> /access .log;
   sendfile    <%= scope.lookupvar( 'nginx::params::nx_sendfile' )%>;
   <%  if  scope.lookupvar( 'nginx::params::nx_tcp_nopush' ) ==  'on'  %>
   tcp_nopush  on;
   <% end %>
   keepalive_timeout  <%= scope.lookupvar( 'nginx::params::nx_keepalive_timeout' )%>;
   tcp_nodelay        <%= scope.lookupvar( 'nginx::params::nx_tcp_nodelay' )%>;
   <%  if  scope.lookupvar( 'nginx::params::nx_gzip' ) ==  'on'  %>
   gzip          on;
   gzip_disable  "MSIE [1-6]\.(?!.*SV1)" ;
   <% end %>
   include  /etc/nginx/conf .d/*.conf;
}

2.5 使用模板文件生成实际配置文件

使用模板生成文件时,使用的文件属性为content,实例如下

1
2
3
4
5
6
7
8
9
10
11
12
class nginx {
     package { 'nginx' :
     ensure => present,
     }
     file  { 'nginx.conf' :
         ensure =>  file ,
         content => template( 'nginx/nginx.conf.erb' ),  # 引用模板文件生成文件内容
         path =>  '/etc/nginx/nginx.conf' ,
         require => Package[ 'nginx' ],
         mode =>  '0644' ,
     }
}










本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1413176,如需转载请自行联系原作者
目录
相关文章
|
Perl Shell 网络协议
puppet连载23:使用ENC节点
Puppet 有两种将节点信息存储在外部的方法: 1.使用外部节点分类器 (ENC) 2.使用LDAP服务器分类 主要学习使用ENC(外部节点分类器)。ENC是一种提供Puppet 查询节点数据的基于脚本(SHELL、RUBY、PERL等)集成系统,这个脚本返回类、继承、变量和环境设置,Puppet可用来定义一个节点和配置主机。
1118 0
|
应用服务中间件 Apache nginx
|
Ruby 调度
《Puppet实战手册》——2.6 使用内联模板
任何传递给inline_template函数的字符串的内容都会被当作ERB模板来执行。也就是说,任何在<%=和%>分隔符之间的内容都将作为Ruby代码而执行,而其余的部分将被视为字符串。
1661 0
|
15天前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
37 3