管理 Apache 服务
Apache 是一款流行的 web 服务器,然而对于其配置者来说并不轻松。 Puppet 可以在一定程度上缓解配置者因管理 Apache 服务器所带来的痛苦。
操作步骤
如果 Apache 模块还不存在就创建它:
# mkdir /etc/puppet/modules/apache # mkdir /etc/puppet/modules/apache/templates # mkdir /etc/puppet/modules/apache/manifests
使用如下内容创建 /etc/puppet/modules/apache/manifests/init.pp 文件:
class apache { package { "apache2-mpm-prefork": ensure => installed } service { "apache2": enable => true, ensure => running, require => Package["apache2-mpm-prefork"], } file { "/etc/apache2/logs": ensure => directory, require => Package["apache2-mpm-prefork"], } file { "/etc/apache2/conf.d/name-based-vhosts.conf": content => "NameVirtualHost *:80", require => Package["apache2-mpm-prefork"], notify => Service["apache2"], } }
在一个节点中添加如下代码:
include apache
运行 Puppet:
# puppet agent --test info: Retrieving plugin info: Caching catalog for cookbook.bitfieldconsulting.com info: Applying configuration version '1309189590' notice: /Stage[main]/Apache/Package[apache2-mpm-prefork]/ensure: ensure changed 'purged' to 'present' notice: /Stage[main]/Apache/File[/etc/apache2/logs]/ensure: created notice: /Stage[main]/Apache/File[/etc/apache2/conf.d/name-basedvhosts. conf]/ensure: defined content as '{md5}78465aacbd01eb537b94 1b21ae0af8b8' info: /Stage[main]/Apache/File[/etc/apache2/conf.d/name-basedvhosts. conf]: Scheduling refresh of Service[apache2] notice: Finished catalog run in 39.45 seconds
更多用法
在下一节中,我们将看到如何为 Apache 定义虚拟主机的内容。 然而你可能会发现,你需要为整个 Apache 服务器(包括虚拟主机)提供特殊的配置选项。 你可以使用 Puppet 通过部署 apache2.conf 来配置这些选项, 但是将配置片段放在 /etc/apache2/conf.d 目录中会更加整洁清晰。 例如,你可以在 init.pp 中添加如下代码:
define snippet() {
file { "/etc/apache2/conf.d/${name}":
source => "puppet:///modules/apache/${name}",
notify => Service["apache2"],
}
}
并在节点上包含如下的代码片段:
apache::snippet { "site-specific.conf": }