5

シェフで環境を使用していますが、環境ごとの実行リストを使用したいと考えています。問題は、私が自分自身を繰り返したくないということです (私が今やっているように)。例:

{
  "name": "myapp",
  "default_attributes": {
  },
  "json_class": "Chef::Role",
  "env_run_lists": {
    "production": [
      # Has less packages because services are spread across specialized nodes
      "role[base]",
      "recipe[mysql::client]",
      "recipe[myapp]"
    ],
    "staging": [
      # Has less packages because services are spread across specialized nodes
      "role[base]",
      "recipe[mysql::client]",
      "recipe[myapp]"
    ],
    "development": [
      "role[base]",
      "recipe[mysql::client]",
      "recipe[myapp]",
      "role[utility]",
      "role[cache]"
    ]
  },
  "run_list": [

  ],
  "description": "The myapp.com core application role",
  "chef_type": "role",
  "override_attributes": {

  }
}

これを繰り返さないようにする方法はありますか?

      "role[base]",
      "recipe[mysql::client]",
      "recipe[myapp]",

環境の実行リストが同期しなくなり、展開が壊れるのを避けたいだけです。

4

2 に答える 2

5

現時点では、いいえ。ロールは純粋に宣言型であり、そのように動的ではありません。これら 3 つの項目を含むロールを作成し、それを環境ごとの実行リストに含めることができます。

于 2012-03-14T03:30:14.127 に答える