问题标签 [chef-infra]
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.
chef-infra - 与厨师一起供应流浪者
我正在深入研究将我的开发环境迁移到 Vagrant 需要什么,我在使用 chef 处理 VM 配置过程时遇到了一些麻烦。我以前从未使用过 chef 并且该区域的 Vagrant 文档故意弱(超出范围),因此我可以使用手。
我想让它尽可能便携,所以我认为从 URL 加载食谱是有意义的,所以这就是我正在尝试的Vagrantfile
:
我不认为有任何问题我只是误解了某些东西,但我还没有找到一个似乎适合这个 Vagrant 上下文的文档源。
谢谢。
ruby - 使用外部调用设置厨师变量
我正在使用应用程序说明书来部署 java 战争文件。我想做的是从外部位置(在本例中为我们的本地 nexus 存储库)加载 WAR md5。使用 chef 从外部位置加载值(例如运行一些 bash 将字符串输出到 STDOUT 并将该值用于 chef 变量)。
像这样的 bash:
python - 使用 chef Python cookbook 为我的 virtualenv 指定不同的 Python 版本
我正在尝试使用 Chef 在ubuntu 11.10 VM 内使用opscode Python cookbook在节点上安装 virtualenv。特别是,我正在使用应用程序配方为 Django 和 Gunicorn 执行此操作。
python_virtual 资源的默认设置是 python2.6。我试图通过覆盖我的角色文件中的默认属性来指定 python2.7,如下所示:
但是,这不起作用:
在这里覆盖默认值的正确语法是什么?
ruby - Apache 反向 HTTP 代理后面的 Chef API 服务器返回 http 而不是 https 链接
我有一台在机器上运行的厨师服务器(侦听端口 4000),我想通过 SSL 访问它。我已经设置了一个 Apache 反向代理来执行此操作(侦听端口 4001)。Apache 设置看起来像(我的机器名称替换为 www.example.com)
问题是厨师 API 调用返回的 JSON 中的 URL 具有 http 而不是 https。例如,它们看起来像:
代替:
一个示例是在执行 POST 以/sandboxes
创建新沙箱时,该沙箱创建了上面的链接。这会破坏诸如尝试使用刀上传食谱之类的事情。
据我所知,POST 调用的厨师服务器创建方法调用Merb absolute_url辅助方法来生成 URL。/sandboxes
在这一点上,我很困惑如何解决这个问题。我是否需要以某种方式更改我的 Apache 反向代理配置?它是厨师服务器中的配置选项吗?或者是其他东西?
configuration-management - 自动配置管理的性能成本
我第一次学习像 Chef/Puppet/etc 这样的工具,想知道它们与部署在云上的应用程序集成的好坏(或差):
- 当有特定于供应商的 API 以及像 JCloud 这样抽象出这些 API 的框架时,为什么还要使用 Chef?
- 使用这些配置工具是否有性能成本,或者(一旦配置)节点/机器是否像云上的任何其他(非托管)机器一样运行?
- Chef 可以用来配置任何现有的技术,还是提供“支持的供应商/系统”列表?意思是,假设我有一堆由 Chef 配置的 PostgreSQL 服务器。然后第二天,一些疯狂的新 RDBMS 出现了,我想切换到它。我需要等待 Chef “支持”这个新系统,还是 Chef 供应商不可知?
提前致谢!
ruby - Ruby 和 Chef:解析和替换散列中的值
我正在使用 opscode chef 来自动化 MySQL 集群的部署。我想将所需的主机放入 JSON 文件,然后让厨师将这些主机名解析为内部 IP 地址,然后将 IP 地址设置为变量。
我有一个看起来像这样的简单哈希:
我想基本上获取节点键然后遍历哈希中的所有键值获取每个键/值,然后通过返回 ip 地址的搜索函数解析值,然后将值分配给该键。
好吧,这行不通。
单独我可以将主机名解析为 IP 地址,但我真的不明白如何获取每个键和值,解析值,然后用解析的值替换它。
ruby - 是否可以在不运行默认食谱的情况下运行厨师食谱
我的 nginx 食谱中有两个厨师食谱。一个名为 default.rb,另一个名为 sites.rb。当我运行网站食谱时
然后我的默认配方也会运行。我该如何防止这种情况发生?
chef-infra - 如果不满足特定条件,有没有办法中止厨师客户端运行?
考虑一个简单的应用服务器/数据库服务器设置。你想在应用服务器上设置一些值,告诉它数据库服务器在哪里,并且你想在数据库服务器上设置一些权限,只允许来自应用服务器的连接。
搜索(:节点,“角色:数据库服务器”)
和
搜索(:节点,“角色:应用服务器”)
可以从任何一台机器的配方运行中获取所需的信息。但是,如果在您进行搜索时这台服务器不存在怎么办?有没有办法说“不要继续运行”并将其标记为未完成,以便下次在该机器上运行 chef-client 时,它会再试一次?
或者,是否有一些我想念的漂亮厨师服服务于这个用例(“通知”和“订阅”似乎它们几乎是我想要的,除了据我所知,它们只是关心节点内发生的事情)更好?我正在考虑的另一件事是尝试设置一个睡眠/检查循环以有效地暂停一个执行运行,而另一台服务器到达它需要的位置,但该解决方案似乎相当不雅,并且容易出现死锁问题更复杂的设置.
apt - 如何让 Chef 在运行其他食谱之前运行 apt-get update
现在我的 Vagrantfile 中有以下内容:
为了安装添加到我的 recipe_list 的软件,我需要在安装其他软件之前让 VM 发出apt-get 更新。
我的印象是这是“apt”配方的功能之一——它会首先运行更新。
当我做一个流浪的规定时的输出是:
ruby-on-rails - 如何在 rails 应用程序上正确安装 Kissmetrics?
我正在使用安装 KM API 的 Ruby API 方法,但我不确定我是否做得正确。我做的第一件事是将 KM 初始化代码放在我的 init.rb 文件中:
很明显,我用我的 api 密钥替换了 API-KEY。然后它说正确的做法是将数据保存在一个文件中,并每 5 分钟将其作为 cronjob 发送到 KM。我的第一个问题是 - /var/logs/km/ 是保存数据的正确目录吗?我实际上并没有在我的 rails 应用程序中看到该目录。
然后,我使用厨师食谱发送 cron 作业,如下所示:
我也不确定这是否正确。该示例显示了 cron 代码,如下所示:
这就是我在厨师中完成 cron 工作的方式。所以,几个问题:我怎么知道它是否有效?我似乎找不到为 cron 作业存储数据的文件,是我把它放在错误的目录中了吗?我的厨师食谱正确吗?
谢谢!