《Puppet实战手册》——2.4 使用模块

简介: 模块是将相关的事物进行组合的一种简单方式。例如,一个webserver模块应该包括让一台机器作为Web服务器所必需的一切:Apache的配置文件、虚拟主机模板和一些必要的用来部署它们(Apache的配置文件、虚拟主机模板)的Puppet代码。

本节书摘来自异步社区《Puppet实战手册》一书中的第2章,第2.4节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 使用模块

能够使Puppet配置清单清晰并且易于维护的最重要的方式之一就是将它们组织成模块。

模块是将相关的事物进行组合的一种简单方式。例如,一个webserver模块应该包括让一台机器作为Web服务器所必需的一切:Apache的配置文件、虚拟主机模板和一些必要的用来部署它们(Apache的配置文件、虚拟主机模板)的Puppet代码。

把代码拆分成不同的模块可以使它们更易于复用和共享,这也是组织配置清单的最合理的方式。下例将创建一个模块来管理memcached(一款在Web应用程序中非常常用的内存缓存系统)。

操作步骤
下面这些步骤向读者展示了如何创建一个示例模块。

1. 在Puppet代码仓库中创建下面的这些目录:

ubuntu@cookbook:~/puppet$ mkdir modules/memcached
ubuntu@cookbook:~/puppet$ mkdir modules/memcached/manifests
ubuntu@cookbook:~/puppet$ mkdir modules/memcached/files

2. 参考如下内容创建modules/memcached/manifests/init.pp文件:

# Manage memcached
class memcached {
  package { 'memcached':
   ensure => installed,
 }

 file { '/etc/memcached.conf':
  source  => 'puppet:///modules/memcached/memcached.conf',
  owner   => 'root',
  group   => 'root',
  mode   => '0644',
  require  => Package['memcached'],
 }
 service { 'memcached':
  ensure  => running,
  enable  => true,
  require  => [Package['memcached'],
          File['/etc/memcached.conf']],
 }
}

3. 参考如下内容,创建modules/memcached/files/memcached.conf文件:

-m 64
-p 11211
-u nobody
-l 127.0.0.1

4. 把下面的内容加入nodes.pp文件中:

node 'cookbook' {
 include memcached
}

5. 运行Puppet来检查新配置是否生效:

ubuntu@cookbook:~/puppet$ papply
Notice: /Stage[main]/Memcached/Package[memcached]/ensure:
 created
Notice: /Stage[main]/Memcached/File[/etc/memcached.conf]/content:
 content changed '{md5}58c9e04b29e08c2e9b3094794d3ebd0e'
  to '{md5}9429eff3e3354c0be232a020bcf78f75'
Notice: Finished catalog run in 4.54 seconds

6. 检查memcached服务是否已经运行。

ubuntu@cookbook:~/puppet$ service memcached status
* memcached is running

工作原理
模块具有特定的目录结构。但并非所有这些目录都必须存在。如果它们存在的话,则应该按照这样的结构进行组织。

modules/
   MODULE_NAME/
     files/
     templates/
     manifests/

所有的配置清单文件(那些包含Puppet代码的文件)都要放在配置清单目录中。在上面的例子中,memcached的类被定义在文件manifests/init.pp中,这个文件会在Puppet运行时自动导入。

在memcached类中,引用了memcached.conf文件。

file { '/etc/memcached.conf':
  source => 'puppet:///modules/memcached/memcached.conf',
}

正如读者在关于Puppet的文件服务器以及自定义挂载点那一章所了解的那样,source参数的值告知Puppet要在下面的目录中寻找文件:

MODULEPATH/
   memcached/
     files/
        memcached.conf

更多参考
要尝试学习喜欢“模块”,因为它们会让你的Pupept生涯轻松许多。它们并不复杂。然而,更多的实践和经验将有助于判断配置代码何时应组合成模块,以及如何更好地组织模块结构。这里有一些可以快速进步的技巧。

模板
如果需要在一个模块中使用模板,可将其放置在模块的templates目录,并在代码中引用它,如下所示:

file { '/etc/memcached.conf':
 content => template('memcached/memcached.conf.erb'),
}

Puppet就会在下面的目录中找到它:

MODULEPATH/
   memcached/
     templates/
        memcached.conf.erb

fact、函数、类型和提供者
模块还可以包含自定义的fact、自定义函数、自定义类型和提供者。有关这些内容的更多信息,可参阅第8章。

自动生成模块布局
用户还可以使用puppet module generate命令为新模块生成目录结构,而不是手动创建。更多细节可参阅第8章。

第三方模块
用户可以下载由其他人提供的模块,并像自己创建的模块一样在配置清单中使用它们。欲了解更多关于此方面的信息,可参阅8.10节。

相关文章
|
开发工具 数据安全/隐私保护 git
|
Java 应用服务中间件 Linux
puppet连载九:linux安装jdk、tomcat模块
安装jdk1.8.0_91和tomcat8.0.36 mkdir -p /etc/puppet/modules/linuxjdktomcat/{manifests,templates,files} vi /etc/puppet/modules/linuxjdktomcat/manifests/init.
1078 0
|
MySQL 关系型数据库 Linux
puppet连载10:linux安装percona57/56/55、sysbench、tpcc模块
在服务端/puppet/soft下建my.cnf,内容为https://www.jianshu.com/p/c63fc6c71279 在服务端/puppet/soft下建changemysql57pass.
1073 0
|
Linux 开发工具 git
puppet连载七:linux基础组件安装模块
linux基础组件安装模块linuxbaseinstall 更换源,安装gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf git mkdir -p /etc/puppet...
1073 0
puppet连载六:创建测试模块test
创建测试模块 mkdir -p /etc/puppet/modules/test/{manifests,templates,files} vi /etc/puppet/modules/test/manifests/init.
893 0
|
网络协议 Linux 安全
puppet连载八:linux优化模块
linux优化模块 在服务端先建立文件limits.con vi /puppet/soft/limits.conf soft nofile 102400 hard nofile 102400 soft nproc 102400 hard nproc 102400 保存,退出 在服务端建立文件sysctl.
805 0
|
测试技术
puppet cron 模块
转载:http://blog.51cto.com/ywzhou/1577299 Puppet模块章节环境说明 服务端 | 客户端 操作系统:CentOS 6.
993 0
|
安全 Linux 网络协议
puppet yum模块、配置仓储、mount模块
转载:http://blog.51cto.com/ywzhou/1577335 作用:自动为客户端配置YUM源,为使用yum安装软件包提供便捷。 1、服务端配置yum模块 (1)模块清单 [root@puppet ~]# tree /etc/puppe...
1113 0
|
网络安全
puppet puppet模块、file模块
转载:http://blog.51cto.com/ywzhou/1577356 作用:通过puppet模块自动控制客户端的puppet配置,当需要修改客户端的puppet配置时不用在客户端一一设置。
999 0
|
监控 网络协议 网络架构
puppet host模块
转载:http://blog.51cto.com/ywzhou/1577432作用:自动配置客户端的hosts文件,解决网络内的计算机之间计算机名称解析问题,适用于没有部署DNS服务器的内网环境。
1097 0