服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

我应该使用这个简单的黑客来解决厨师独奏缺乏环境支持的问题吗?

厨师独奏缺乏环境支持似乎颇具争议。 一方面,环境的一个特点就是能够将烹饪书钉到特定的环境,而这对于厨师独奏来说绝对没有意义。 另一方面,我们很多人希望能够在环境级别的属性中进行合并,并在使用Vagrant进行testing时使用环境特定的运行列表。 我想我可能find了一个简单的方法来解决这个问题。 假设我在我的所有环境和angular色中都使用了JSON语法,并且遵循以下约定来设置属性(从最低到最高的优先级): 默认在食谱属性文件中 在angular色文件中默认 在环境文件中覆盖 看起来我可以自己parsing这些文件,并使用-j选项将属性注入到chef-solo中。 例如,我可以在我的Vagrantfile中做这样的事情: chef_env_conf = parse_json("./environments/#{ENV['CHEF_ENVIRONMENT']}.json") chef.json = chef_env_conf["override_attributes"] 由于通过-j选项设置的属性是以正常的优先级应用的 ,所以这可以成为覆盖angular色默认值的另一种方式,并且这可能是在环境未被自动拉入的上下文中所需的全部。 你可以做类似的事情来获得每个环境的运行列表(通过parsingangular色文件): chef_role_conf = parse_json("./roles/#{role}.json") chef.run_list = chef_role_conf["env_run_lists"][ENV['CHEF_ENVIRONMENT']] 我意识到这不是最优雅的黑客,但它似乎可能是一些人可行的解决scheme。 有谁认为这是一个非常糟糕的主意?