apache - 设置 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 时,它没有。
我哪里错了?
解决方案
如果您在正确的模块路径中有 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"
一旦你开始工作,就该阅读角色和配置文件模式了。
推荐阅读
- python - UnknownError: OSError: cannot identify image file <_io.BytesIO object at 0x7fc87d222b30> multiprocessing.pool.RemoteTraceback:
- java - spring boot tomcat err_tunnel_connection_failed
- javascript - 过滤器ID与对象内的多个数组删除项目onClick
- grails - 命名(映射)构造函数在 grails.gsp.PageRenderer 中不起作用
- request - 在 Yii2 中从 $request 获取主题标签
- mysql - 没有联合的 MySQL 联合
- xml - python lxml - 将节点从一个文件插入到另一个具有适当结构的文件中
- wordpress - 如何修复多语言网站上的特定 500 内部服务器错误?
- vue.js - 用 Vue 覆盖全局点击处理程序?
- webpack - 将 webpack.config.js 的导出从对象切换到函数导致解析模块失败