问题标签 [chef-recipe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cron - 厨师 - 重复食谱执行
首先,厨师可以(并且这是一种好习惯)在特定的角色上以指定的时间间隔运行食谱吗?
我有一个管理用户帐户和 ssh 身份的 ruby 脚本,它目前每小时在一个 cron 上运行,出于显而易见的原因,我想把它变成一个 Chef 食谱(我希望它在所有机器上都存在)。
我可以看到两种方法:
将脚本转换为模板,配方只需将模板渲染到给定路径,然后注册一个 cronjob
或者
将脚本分解为资源、提供者等,并让 Chef 每小时运行一次。
想法?
django - chef-solo from_file 出错了 bash /tmp/chef-script 返回 1,预期为 0
我在 chef-solo 食谱上出现了这个错误,我是新手,所以我并没有真正得到这个错误或如何修复它......听起来仍然像找不到文件或目录,创建......
这是显示错误的配方。
amazon-ec2 - 厨师不会从食谱/食谱安装
我认为我在使用 Chef 部署应用程序时缺少一些基本知识。
我从 opscode repo 中克隆了一堆食谱。我进行了更改并适当地削减了它们。一切都已配置,因此我可以使用 bash 脚本生成 EC2 实例,但它不执行任何 Chef 安装。
在角色/base.rb 我有我想要安装的所有应用程序:
我 ssh 到实例并执行以下操作sudo chef-client
:
我等了一会儿,仍然没有安装任何东西。我是否需要action: install
为每个配方 default.rb 明确声明?我很混乱。
environment-variables - 如何使用 Chef 配方设置环境变量?
如何使用 Chef 配方设置环境变量?
我需要使用 Chef 配方设置环境变量。你能提供一个例子来说明如何做到这一点吗?
ruby - 如何设置对在 Chef 加载食谱时不存在的 Ruby 库的依赖关系?
设想:
- 配方1:下载档案,提取它们。提供一个 CLI,它也定义了一个 Ruby 库。
- Recipe2:利用上述库中的 Ruby API。
在 recipe1/recipes/default.rb 中:
在 recipe2/recipes/default.rb 中:
但是,在加载食谱时,Chef 会宣布:
在所有配方都在运行过程中后,如何声明/启用 Ruby 库?
chef-infra - Chef模板中的节点名称?
我一直在试图弄清楚如何将节点的名称 ( knife bootstrap -N
) 放入模板中。我尝试了十几种不同的想法,但还没有找到任何可行的方法。有谁知道如何从厨师食谱中访问这个?
另外——有没有办法列出厨师食谱可用的所有变量?
chef-infra - 厨师:not_if not_working
如果用户在服务器上还没有密钥,我想运行 ssh-copy-id ,所以我在执行块中有一个 not_if 指令。我已经验证 not_if 命令返回 0,但执行块仍然运行。
有任何想法吗?
chef-infra - 如何在厨师食谱中转换以下 shell 命令?
如何在厨师食谱中转换以下 shell 命令?
安装
为 nginx 创建一个 Upstart 文件
须藤 vim /etc/init/nginx.conf
重启虚拟机
验证 nginx 运行
ruby - Chef 没有运行 apt (apt-get update) 配方。Apt 返回 100
在 vagrant、mac os x 10.7.2 上运行 Ubuntu 11.04。运行厨师服务器。
尝试安装 postgresql 社区厨师配方时,我收到以下错误,即使我的基本角色看起来像这样(我添加了 apt 配方以尝试更新 apt-get):
尝试做厨师跑步:
如果我从服务器内部手动执行 $sudo apt-get update,则再次运行 chef-client install postgres 没有问题。关于为什么 apt 配方没有运行的任何想法?(我也知道它没有运行,因为 apt-get 的时间戳文件不是在 ubuntu 中创建的)。任何帮助将非常感激。
chef-infra - 如果不满足特定条件,有没有办法中止厨师客户端运行?
考虑一个简单的应用服务器/数据库服务器设置。你想在应用服务器上设置一些值,告诉它数据库服务器在哪里,并且你想在数据库服务器上设置一些权限,只允许来自应用服务器的连接。
搜索(:节点,“角色:数据库服务器”)
和
搜索(:节点,“角色:应用服务器”)
可以从任何一台机器的配方运行中获取所需的信息。但是,如果在您进行搜索时这台服务器不存在怎么办?有没有办法说“不要继续运行”并将其标记为未完成,以便下次在该机器上运行 chef-client 时,它会再试一次?
或者,是否有一些我想念的漂亮厨师服服务于这个用例(“通知”和“订阅”似乎它们几乎是我想要的,除了据我所知,它们只是关心节点内发生的事情)更好?我正在考虑的另一件事是尝试设置一个睡眠/检查循环以有效地暂停一个执行运行,而另一台服务器到达它需要的位置,但该解决方案似乎相当不雅,并且容易出现死锁问题更复杂的设置.