Chef infra 将变量传递给chef recipes并同步

Chef infra 将变量传递给chef recipes并同步,chef-infra,Chef Infra,因为我是厨师新手,所以需要帮助。第二步是将变量传递给厨师食谱,这样我们就可以在厨师服务器上上传食谱,并自动与厨师客户端同步。 如何将变量传递给chef recipes,以及如何与chef client同步,chef使用变量的属性。您可以在cookbook中设置默认属性。这里有一个例子 我通常在角色中设置运行列表,然后在环境文件中设置覆盖属性 示例环境ruby文件: `name "example_environment" description "example_environmentfile"

因为我是厨师新手,所以需要帮助。第二步是将变量传递给厨师食谱,这样我们就可以在厨师服务器上上传食谱,并自动与厨师客户端同步。
如何将变量传递给chef recipes,以及如何与chef client同步,chef使用变量的属性。您可以在cookbook中设置默认属性。这里有一个例子

我通常在角色中设置运行列表,然后在环境文件中设置覆盖属性

示例环境ruby文件:

`name "example_environment"
description "example_environmentfile"
override_attributes({
    'cookbook1' => {
        'database_password' => "password1",
        'server_password' => "password2"
    }
})`
下面是一个ruby角色的示例:

`name 'example_role'
description 'example role with run list'
run_list(
    'recipe[cookbook1@2.0.9]',
    'recipe[cookbook1::recipe1@2.0.9]',
    'recipe[cookbook2::recipe2]'
)`
在运行列表的第一行中,您可以看到我没有指定菜谱,这将调用cookbook1的默认菜谱。我还在这里指定2.0.9版本的食谱

在运行列表的第二行中,我将其指定为运行recipe1


运行列表的第3行指定从最新版本的cookbook2运行recipe2。

Chef使用属性存储食谱使用的值,有关这些属性的更多信息,请参见此处。如果您有更窄的问题,请更新您的问题,以便我们可以帮助您。我们使用了docs.chef.io/attributes.html…attribute表示带值的变量…这里的问题是我们必须传递不带值的变量,并且值将在运行时传递。实际上,chef不采用这种方式,值应该由菜谱提供,角色或环境,在实际运行之前。当您需要从节点上的文件内容中读取值时,会出现一些边缘情况,但在这种情况下,必须在前面定义值,这样您就可以实现Chef的所有功能,如自动化和幂等性。这种情况就像我们必须通过脚本传递变量,并将其上载到服务器,然后它将根据客户端的需要运行。