Chef Recipe 在一台服务器上运行迁移

Posted

技术标签:

【中文标题】Chef Recipe 在一台服务器上运行迁移【英文标题】:Chef Recipe Run migration on one server 【发布时间】:2015-08-19 12:41:08 【问题描述】:

我有一个在 opsworks 中运行迁移的厨师食谱。它在每台服务器上运行 php artisan migrate --force。有没有办法只在它碰巧到达的第一台服务器上运行一次迁移?我一直有 3 个在线。

【问题讨论】:

【参考方案1】:

简短回答: 添加标签或属性并将其用作执行的守卫。

您仍然可以在多个服务器上执行竞争条件和执行,因为索引在 Chef-server 端每分钟(大约)更新一次。

长答案: 您必须使用某些东西来保持状态,从动物园管理员到任何易于更新的事实来源的任何东西都可以填补这一空白,如果没有关于您的环境的更多详细信息,任何答案都将被认为对回答者来说也是最好的。投票结束主要基于意见。

【讨论】:

【参考方案2】:

您始终可以创建一个新的“实用程序”层(自定义层类型),它只有一个您需要的配方,并且只附加一个实例。

这样,您的主层就拥有了 3 个实例以及其余的配方,其中一个实例也将属于额外层。

您可以通过转到“实例”然后“添加新实例”并单击“现有实例”选项卡将实例附加到图层。唯一的问题是您不能将正在运行的实例附加到层,而是必须停止它,然后附加它,然后重新启动它。

注意:如果您需要在部署后运行此命令,请确保您在“部署”步骤中阅读了正常的部署配方,否则您的配方可能会在厨师运行列表中的顺序不正确。

【讨论】:

以上是关于Chef Recipe 在一台服务器上运行迁移的主要内容,如果未能解决你的问题,请参考以下文章

如何在chef recipe中包含application.properties文件中的属性

php 在一台机器上解析失败,但在另一台机器上解析失败

通过 chef recipe 调用,SQLPLUS 无法识别 Windows 12R2 中的 Oracle_Home 环境变量

使用 Ruby/Chef Recipe for Vagrant 导入 Mysql 数据库

厨师:为啥跳过“include_recipe”步骤中的资源?

如何在 AWS Ops-Work 上从 chef-11.10 迁移到 chef-12?