在使用Kitchen和Chef进行本地开发时,如何模拟OpsWorks特定服务/依赖项?

dav*_*ene 5 amazon-web-services chef-infra berkshelf aws-opsworks test-kitchen

我正在为一些内置的OpsWorks烹饪书编写Chef包装器.我正在使用Berkshelf从他们的github repo中克隆OpsWorks烹饪书.

这是我的Berksfile:

source 'https://supermarket.getchef.com'

metadata

def opsworks_cookbook(name)
  cookbook name, github: 'aws/opsworks-cookbooks', branch: 'release-chef-11.10', rel: name
end

%w(dependencies scm_helper mod_php5_apache2 ssh_users opsworks_agent_monit
   opsworks_java gem_support opsworks_commons opsworks_initial_setup
   opsworks_nodejs opsworks_aws_flow_ruby
   deploy mysql memcached).each do |cb|
  opsworks_cookbook cb
end
Run Code Online (Sandbox Code Playgroud)

我的metadata.rb:

depends 'deploy'
depends 'mysql'
depends 'memcached'
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试覆盖依赖于哈希中的opsworks键的属性时node,我得到一个:

NoMethodError
-------------
undefined method `[]=' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

OpsWorks有一大堆预配方依赖项,可以创建这些键并进行大量设置.我想找到一种方法来拉入这些服务并在我的Kitchen实例上运行它们或者以我可以实际测试我的食谱的方式模拟它们.

有没有办法做到这一点?

cod*_*ger 0

你必须手动完成。您可以向您的 中添加任意属性.kitchen.yml,只需在 OpsWorks 机器上记录您需要的值,然后直接使用它们或将它们调整为可行的测试数据。