- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Chef 比较陌生,所以我可能会遗漏一些非常基本的东西。经过大量搜索后,我没有找到我需要的东西,所以这里是:
在 Chef 中,我的角色相互冲突。我需要某种类型的所有服务器都具有 roleA,但具有 roleB 的服务器除外。
我能想到的最好的描述方式是举个例子:
系统日志 1、系统日志 2
web1, web2, web3
db1,db2
邮件 1,邮件 2
此环境中的每台服务器(数十台)都有一个名为 syslog_client 的角色,但 syslog1 和 syslog2 除外,它们需要具有 syslog_server 角色。
syslog-server 和 syslog-client 角色冲突,因为它们对相同软件的配置不同。
这些是角色而不是配方,因为它们实际上包含多个配方。
我想到了做这样的事情:
角色/base.rb:
name "base"
description "base configuration"
override_attributes(
)
default_attributes(
)
run_list(
"recipe[one]",
"recipe[two]",
"recipe[three]",
"role[uno]"
)
unless node[:roles].include?('syslog_server')
run_list('role[syslog_client]')
end
问题是此时节点对象不存在。我考虑过将它移到 Recipe 中,但我也想不出一个好的方法。我能够在基本配方中使用它:
unless node[:roles].include?('syslog_server')
node[:roles]+=['syslog_client']
end
这会将 syslog_client 添加到角色属性(或未正确添加),但它从未实际运行 syslog_client 角色。
我考虑过将 syslog_client 移动到一个独立的配方而不是一个角色中,并将角色属性移动到环境中。这会起作用,因为这样我就可以调用 include_recipe "syslog::client"
。问题是我们几乎所有的 Recipe 都是根据角色分配的(而不是其他 Recipe ),我担心进行此更改会造成难以跟踪的一次性。除此之外,正如我已经提到的,这些实际上是几个 Recipe ,因此将它们作为一个 Recipe 添加并不理想。
我目前工作的环境中有许多不同的服务器类型/角色,向它们添加角色[syslog_client] 是可行的,但并不理想。有多个人在做这件事,似乎有人会忘记将配方添加到新角色。
在理想情况下,像我的第一个解决方案这样的事情是可能的,因为这使我们能够尽可能保持环境的一致性。不过,我对其他选择持开放态度。
总而言之,我认为我需要有人告诉我如何:
如果我遗漏了有关 Chef 设置的任何有用信息,请告诉我。
免责声明:上面的示例实际上是我实际尝试实现的一个非常简化的版本。我什至没有使用 syslog,但它所服务的公司非常注重安全性,不会对公开发布其环境的详细信息感到满意。如果我遗漏了任何内容并且需要添加更多信息,我会尽可能详细地说明。
最佳答案
扩展上面所说的创建两个角色的问题是什么。客户端和服务器
客户端角色包括基础角色和客户端功能。通过在所有其他角色中用此角色替换对“base”的引用,它将应用于所有服务器。这意味着这些角色仍然有基础,但也有客户。
服务器是一个独立的角色,只适用于那些服务器并且有基础,然后是服务器角色?
这样,客户端和服务器都可以应用基本角色,而无需复制基本角色的定义。您仍然根据需要管理该基本角色,但在创建角色时使用聚合?
创建新角色时,用户不会首先添加 base,而是添加 syslog_client 角色,这也为他们提供了 base。
对我来说,这就像 Chef 插入您创建角色的方式。我们拥有的是适用于所有服务器的 1 个角色,一些角色适用于 1 个子类型的服务器,但不适用于其他服务器。这样一来,我们的叶子角色(如被应用的角色)实际上由 4 或 5 个其他角色组成。以无需内部逻辑即可共享的方式建模是常见的吗?
另一种选择是将客户端配方添加到每个节点,第一个执行步骤是检查节点角色,如果它说服务器只是基本上跳过配方执行?哪个与您要用于添加配方的逻辑相同,但它会存在于配方中并控制执行?
unless node[:roles].include?('syslog_server')
#Do your client install
end
关于conflict - 管理 Chef 中相互冲突的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642092/
我有一套用于配置 Web 和 SQL 服务器的说明书,它们目前在我们的持续部署管道中使用。我希望开发人员能够使用相同的 Recipe 来设置他们的本地开发环境,而无需在 Chef 服务器上注册每台开发
我是 Chef 的新手,并且已经成功配置了我的三个节点 - 工作站、客户端和服务器。 Chef 文档提到了一个 Chef “repo”,其内容看起来与 Chef 服务器非常相似。两者有什么区别,或者它
我正在使用Solo Solo并尝试为Oh My Zsh安装食谱!这导致这个麻烦的错误: Failed to read the private key /etc/chef/client.pem: Err
我正在使用 Vagrant 和 Chef-solo 来测试我的食谱,但我有一个需要厨师服务器的特定食谱(它使用搜索)。我希望我的默认配方如下所示: include_recipe 'some_recip
我在计算机上设置了一个 Chef 客户端,以便使用 learnchef.com 提供的实验室进行练习。 我现在如何将我的 Chef 客户指向我们的内部 Chef 服务器(我们有 2 个非生产和生产服务
我有一个现有的 Chef 服务器设置,其中注册了大约 300 个节点。现在我想转移到另一个具有更新版本的 Chef 服务器。但是我不确定如何将所有节点和其他数据从较旧的 Chef 服务器迁移到较新的服
我正在将我的 Recipe 从 Chef 版本 12.11.18 升级到 13.6.4。某些版本 13 的特定说明在 Chef 版本 12 中不起作用,反之亦然。我现有的服务器仍然使用 Chef Cl
我正在测试一本食谱,其中一个 LWRP 似乎不包含我期望的属性。我需要查看在节点上设置的属性列表。有没有办法在 Vagrant 厨师独奏节点中做到这一点? 我用 kitchen converge它使用
我已经将 Chef 文件从我的 Chef 服务器复制到本地客户端节点,在 ~/.chef 下,我在 ~/.chef/environments 下有所有环境,例如development.rb, prod
对厨师来说完全陌生......我们曾经从 ppa 存储库安装 elasticsearch 但现在我想从头开始构建它(存储库不再更新)每次我更改我的 attributes/default.rb 中的版本
olr以下情况我该如何处理? /etc/init.d/chef-server-webui start * Starting chef-server-webui ~ In 15468 ...fa
尝试在我的 Oracle Linux Box 上安装 Chef。完全按照以下说明进行操作后,我到达了以下位置: 运行 Chef 独奏: (在网址中): http://wiki.opscode.com/
很明显,每个环境都使用一个策略组(如开发、暂存或生产,如 they do here)。然而,当涉及到处理一些与环境相关的属性时,例如名称或种子地址,与旧的角色/环境布局相比,使用策略文件处理起来非常棘
我有一本安装 nginx 并安装自定义 nginx.conf 文件的 Chef Recipe 。基本上就是 Opscode 上的 Cookbook,使用 cookbook_file 来安装文件。 如果
试图在谷歌云引擎上引导一个节点,但我所有的尝试都以失败告终代码 knife bootstrap ipaddress -x raid -i ~/.ssh/google_compute_engine --
我需要创建一个所有者为“testuser”的目录树。 但是,如果我指定“/foo/bar/baz”,则只有在“testuser”、“/foo”和“/foo/bar”下创建的“baz”归“root”用户
也许我错过了文档中的某些内容,但是在阅读了在多个地方定义时使用属性的顺序后,我不明白 中的属性设置的位置节点级别 进入等式 在可以设置和覆盖属性的 1 到 15 个级别中,它提到了配方、环境、角色、属
如何通过厨师将多个成员添加到组中? 我这样试过,但它失败了。 group "git" do action :modify members "foo, bar" append true en
Chef-如何获取命令输出到Ruby变量 我有以下情况,我在grep中获取文件 command "ls /filder1 | grep .txt" grep提供文件名/文件名的输出(如果存在)。 我想
我一直在尝试使用本指南在我的 CentOS 6.5 机器上安装 Chef 服务器 (chef-server-core-12.1.0-1.el6.x86_64.rpm):http://docs.chef
我是一名优秀的程序员,十分优秀!