2013-12-13 168 views
2

我试图在使用厨师的独立机器上部署OpenStack,其烹饪手册包含在https://github.com/stackforge/openstack-chef-repo中,在此引用为:http://docs.opscode.com/openstack_repository.html。具体来说,我试图设置os-compute-single-controller角色。如何运行OpenStack厨师食谱?

我能够顺利上传食谱。

然而,当我试图运行我无意中发现了这个错误:

Errno::ENOENT 
------------- 
No such file or directory - file not found '/etc/chef/openstack_data_bag_secret' 

Cookbook Trace: 
--------------- 
    /var/chef/cache/cookbooks/openstack-common/libraries/passwords.rb:45:in `secret' 
    /var/chef/cache/cookbooks/openstack-common/libraries/passwords.rb:62:in `db_password' 
    /var/chef/cache/cookbooks/openstack-ops-database/recipes/openstack-db.rb:27:in `from_file' 

Relevant File Content: 
---------------------- 
/var/chef/cache/cookbooks/openstack-common/libraries/passwords.rb: 

38: # That means nova_password will == "nova". 
39: def secret bag_name, index 
40:  if node["openstack"]["developer_mode"] 
41:  return index 
42:  end 
43:  key_path = node["openstack"]["secret"]["key_path"] 
44:  ::Chef::Log.info "Loading encrypted databag #{bag_name}.#{index} using key at #{key_path}" 
45>>  secret = ::Chef::EncryptedDataBagItem.load_secret key_path 
46:  ::Chef::EncryptedDataBagItem.load(bag_name, index, secret)[index] 
47: end 
48: 
49: # Ease-of-use/standardization routine that returns a service password 
50: # for a named OpenStack service. Note that databases are named 
51: # after the OpenStack project nickname, like "nova" or "glance" 
52: def service_password service 
53:  bag = node["openstack"]["secret"]["service_passwords_data_bag"] 
54:  secret bag, service 

我缺少的东西?我不介意写一个配方来填充这个文件,但我不确定它应该包含哪些内容。我无法在这些食谱的文档中找到关于此文件的任何内容。

这是我指定的厨师客户端的配置:

{"run_list":["recipe[apache2]", "role[os-compute-single-controller]"]} 

编辑:

创建一个错误的空文件的结果:invalid zero length secret in '/etc/chef/openstack_data_bag_secret'

This似乎有关,尽管是从一个不同的仓库。但为什么this recipe不在stackforge repository

+0

它不应该是一个空文件。它应该是你在数据包中加密数据的关键。 –

+0

@Ovesh,如果您有任何与此有关的其他问题,请提供反馈。我愿意为任何稍后可能会退出的人改进此问答。 – Konzula

+0

@Konzula,我确实有更多的问题,但没有直接关系到这一点。说实话,我已经能够在回应之前解决数据包问题。我只是希望有更完整的食谱演练。 – Ovesh

回答

1

由于您的日志说错误实际上在食谱中引发:“stackforge/cookbook-openstack-common”,由class.method ::Chef::EncryptedDataBagItem.load_secret

Here's如何生成秘密文件(包含内容),并将其放在应该在的位置。

请记住,您的秘密文件位置(路径)保存在your cookbook attribute file中。变量: node["openstack"]["secret"]["key_path"]因此请注意,此变量与文件的实际位置同步。

+1

或者,您可以设置developer_mode属性并从属性运行(请参阅回购中的示例环境文件),而不是为生产设置创建数据库。 – Karsten