在Chef中设置“实用程序”资源的最佳方法是什么

问题描述 投票:0回答:1

某些背景

  1. 我正在使用Vagrant和Chef-zero;厨师服务器不属于我等式
  2. 我有两个角色:baseinfrastructure,还有两个食谱:aptphpbase角色的目的是进行一些基本的供应和程序包管理,并从github克隆存储库等。apt食谱有一个食谱,update_upgrade.rb运行execute资源以有效地调用[ C0],apt updateapt upgrade
  3. apt-get autoremove角色通过infrastructure食谱设置了PHP。稍后会再介绍,但它可以很好地说明我的需求。
  4. php食谱有两个配方:phpadd_repository.rbinstall.rb配方运行add_repository资源,将execute存储库添加到ondrej/phpapt配方遍历软件包列表,以便从添加的存储库安装php。这是对实用程序的需求所在。

症结所在,在添加PHP存储库之后,在安装其软件包之前,我需要运行install。实现此目标的最佳方法是什么?

我尝试过的

[最初,我将apt updateadd_repository资源合并到一个install配方中,并计划使用install将我的include_recipe apt::update_upgrade食谱的apt资源插入该配方中。但是,在仔细阅读厨师文档和这篇方便的文章:execute之后,似乎Should I use include_recipe or add the recipe to run_list?不会立即在其放置的位置运行。该文章中的建议是使用运行列表来指示配方的精确执行,而厨师文档确实建议按照列出的顺序执行配方。

这导致我将php资源分解为include_recipeadd_repository,并对install使用以下角色运行列表:

infrastructure

我的"run_list": [ "recipe[php::add_repository]", "recipe[apt::update_upgrade]", "recipe[php::install]" ] 食谱的php具有metadata.rb,并且Chef不会出错。但是,它也不会在depends apt之后触发update_upgrade配方。相反,add_repository配方在install之后运行,这会导致错误。

所有这些使我假设角色运行列表也以类似于add_repository的阶段执行。这个准确吗?

我的结论

如果这些假设是正确的,那么似乎似乎唯一可以肯定的更新新存储库的方法就是将include_recipe食谱中的execute资源复制到我的`php食谱中。我内心的干燥主义者对此大声尖叫。因此存在实用程序配方/资源的问题。

ruby chef
1个回答
0
投票

最佳做法是将适当的厨师资源与apt结合使用。

由于使用的是notification,请使用适当的apt资源,例如apt(以确保apt信息库是最新的),apt_update(使用apt来操作软件包,apt_update(用于添加apt储存库),并尝试避免使用apt_package资源来完成所有操作-这将利用厨师的独有优势(您可能希望阅读apt_package

每个厨师资源,可以通知和/或订阅通知。但是按顺序写入资源时,可能不需要使用它。

[如果您的这些建议不能正确引导您,请在您遇到问题的地方发布相关代码段,我会尽力帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.