首页 > 解决方案 > 设置 puppet 并安装 apache 包问题

问题描述

出于测试目的,我想使用 puppet 在 Ubuntu 16.4 puppet master 上设置 puppet 并部署 apache,而无需使用以下步骤来使用节点:

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

通过运行安装包:

$ dpkg –i puppet5-release-xenial.deb

更新包列表

$ apt-get update

安装傀儡服务器

$ sudo apt-get install puppetserver

在我们的 Puppet 服务器上,安装 puppetlabs-apache 模块:

$ sudo puppet module install puppetlabs-apache

在 manifests 目录中,需要创建一个 init.pp 类 /etc/puppet/modules/apache/manifests/init.pp

class apache2 {
    package {'apache2':
          ensure => 'present',
    }
}

要尝试安装我使用的 apache 包:

$ sudo puppet apply init.pp

然后我得到以下信息:

Notice: Compiled catalog for osboxes.home in environment production in 0.03 seconds
Notice: Finished catalog run in 0.04 seconds

当我检查是否安装了 apache 时,它​​没有。

我哪里错了?

标签: apacheubuntumodulepuppet

解决方案


如果您在正确的模块路径中有 Apache 模块,那么问题是您没有任何代码来包含该模块。

为了简单起见,让我们忘记 Puppet master 上的文件结构等等,只需创建一个文件 apache.pp(将其保存在 /tmp 或您喜欢的任何地方)并为其提供以下内容:

class apache2 {
    package {'apache2':
        ensure => 'present',
    }
}

include apache2

现在尝试:

$ sudo puppet apply apache.pp

您应该会看到 Puppet 安装了 apache2 包。

但是,按照惯例,为了与 Puppet master 正确集成,您现在需要将此内容放置在预期的文件位置。

apache 类(您已经拥有的代码)需要在文件中${modulepath}/apache2/manifests/init.pp

这是为了满足 Puppet 的autoloader您可以在此处了解更多信息。

同时,模块路径在此处记录,它可能会根据 Puppet 的版本以及您设置所有内容的方式而有所不同。

要找出您的模块路径,请尝试:

$ sudo puppet config print modulepath

现在,如果您拥有所有文件,接下来您应该能够以不同的方式包含该类,如下所示:

$ sudo puppet apply -e "include apache2"

一旦你开始工作,就该阅读角色和配置文件模式了。


推荐阅读