Corrected OOO issues

This cookbook looks a bit more like RCB due to some difficult to solve
OOO issues.

1. Needed to duplicate the cinder.conf template in each service needing it, due
   to the following reasons:
   a. Having a notifies in common.rb to restart services that were not defined
      yet (but in later recipes) broke the recipe.
   b. Having notifies in common.rb for services that were not installed breaks
      things.
   Due to this very diffuclt issue to solve, felt it was okay to duplicate the
   template rendering.

2. Need to lookup the database password from a mysql server query, like we do
   elsewhere.  Have not tackled this yet.  Hardcoded to see if service would
   finally install.

3. Reformatted a few things to match our other openstack cookbooks.

4. Found a few bugs with endpoints needing '.to_s', or missing @ reference
   in template.
This commit is contained in:
John Dewey 2012-12-06 19:02:05 -08:00
parent f83232976d
commit e88d487928
6 changed files with 139 additions and 58 deletions

View File

@ -24,6 +24,8 @@ class ::Chef::Recipe
include ::Openstack
end
platform_options = node["cinder"]["platform"]
service "cinder-api" do
service_name platform_options["cinder_api_service"]
supports :status => true, :restart => true
@ -31,6 +33,33 @@ service "cinder-api" do
action :enable
end
db_user = node["cinder"]["db"]["username"]
db_pass = node["cinder"]["db"]["password"]
sql_connection = db_uri("cinder", db_user, "cinder")
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
glance_api_role = node["cinder"]["glance_api_chef_role"]
glance = get_settings_by_role glance_api_role, "glance"
glance_api_endpoint = endpoint "image-api"
template "/etc/cinder/cinder.conf" do
source "cinder.conf.erb"
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00644
variables(
:sql_connection => sql_connection,
:rabbit_host => rabbit_info["host"],
:rabbit_port => rabbit_info["port"],
:glance_host => glance_api_endpoint.host,
:glance_port => glance_api_endpoint.port
)
notifies :restart, resources(:service => "cinder-api"), :delayed
end
identity_admin_endpoint = endpoint "identity-admin"
identity_endpoint = endpoint "identity-api"

View File

@ -29,50 +29,3 @@ if node["developer_mode"]
else
node.set_unless["cinder"]["service_pass"] = secure_password
end
platform_options = node["cinder"]["platform"]
platform_options["cinder_api_packages"].each do |pkg|
package pkg do
options platform_options["package_overrides"]
action :upgrade
end
end
directory "/etc/cinder" do
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00700
action :create
end
db_user = node["cinder"]["db"]["username"]
db_pass = node["cinder"]["db"]["password"]
sql_connection = db_uri("volume", db_user, db_pass)
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
glance_api_role = node["cinder"]["glance_api_chef_role"]
glance = get_settings_by_role glance_api_role, "glance"
glance_api_endpoint = endpoint "image-api"
template "/etc/cinder/cinder.conf" do
source "cinder.conf.erb"
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00644
variables(
:sql_connection => sql_connection,
:rabbit_host => rabbit_info["host"],
:rabbit_port => rabbit_info["port"],
:glance_host => glance_api_endpoint.host,
:glance_port => glance_api_endpoint.port
)
notifies :restart, resources(:service => "cinder-api"), :immediately
notifies :restart, resources(:service => "cinder-scheduler"), :immediately
notifies :restart, resources(:service => "cinder-volume"), :immediately
end

View File

@ -30,9 +30,36 @@ platform_options["cinder_scheduler_packages"].each do |pkg|
end
end
db_user = node["cinder"]["db"]["username"]
db_pass = node["cinder"]["db"]["password"]
sql_connection = db_uri("cinder", db_user, "cinder")
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
glance_api_role = node["cinder"]["glance_api_chef_role"]
glance = get_settings_by_role glance_api_role, "glance"
glance_api_endpoint = endpoint "image-api"
service "cinder-scheduler" do
service_name platform_options["cinder_scheduler_service"]
supports :status => true, :restart => true
action [ :enable, :start ]
end
template "/etc/cinder/cinder.conf" do
source "cinder.conf.erb"
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00644
variables(
:sql_connection => sql_connection,
:rabbit_host => rabbit_info["host"],
:rabbit_port => rabbit_info["port"],
:glance_host => glance_api_endpoint.host,
:glance_port => glance_api_endpoint.port
)
notifies :restart, resources(:service => "cinder-scheduler")
end

View File

@ -24,17 +24,55 @@ class ::Chef::Recipe
include ::Openstack
end
platform_options = node["cinder"]["platform"]
platform_options["cinder_api_packages"].each do |pkg|
package pkg do
options platform_options["package_overrides"]
action :upgrade
end
end
execute "cinder-manage db sync" do
command "cinder-manage db sync"
not_if "cinder-manage db version && test $(cinder-manage db version) -gt 0"
action :nothing
end
db_user = node["cinder"]["db"]["username"]
db_pass = node["cinder"]["db"]["password"]
sql_connection = db_uri("cinder", db_user, "cinder")
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
glance_api_role = node["cinder"]["glance_api_chef_role"]
glance = get_settings_by_role glance_api_role, "glance"
glance_api_endpoint = endpoint "image-api"
template "/etc/cinder/cinder.conf" do
source "cinder.conf.erb"
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00644
variables(
:sql_connection => sql_connection,
:rabbit_host => rabbit_info["host"],
:rabbit_port => rabbit_info["port"],
:glance_host => glance_api_endpoint.host,
:glance_port => glance_api_endpoint.port
)
notifies :run, resources(:execute => "cinder-manage db sync"), :immediately
end
identity_admin_endpoint = endpoint "identity-admin"
keystone_service_role = node["cinder"]["keystone_service_chef_role"]
keystone = get_settings_by_role keystone_service_role, "keystone"
api_endpoint = endpoint "volume-api"
execute "cinder-manage db sync" do
command "cinder-manage db sync"
action :run
not_if "cinder-manage db version && test $(cinder-manage db version) -gt 0"
end
keystone_register "Register Cinder Volume Service" do
auth_host identity_admin_endpoint.host
auth_port identity_admin_endpoint.port.to_s
@ -48,12 +86,13 @@ keystone_register "Register Cinder Volume Service" do
endpoint_adminurl api_endpoint.to_s
endpoint_internalurl api_endpoint.to_s
endpoint_publicurl api_endpoint.to_s
action :create_service
end
keystone_register "Register Cinder Volume Endpoint" do
auth_host identity_admin_endpoint.host
auth_port identity_admin_endpoint.port
auth_port identity_admin_endpoint.port.to_s
auth_protocol identity_admin_endpoint.scheme
api_ver identity_admin_endpoint.path
auth_token keystone["admin_token"]
@ -64,5 +103,6 @@ keystone_register "Register Cinder Volume Endpoint" do
endpoint_adminurl api_endpoint.to_s
endpoint_internalurl api_endpoint.to_s
endpoint_publicurl api_endpoint.to_s
action :create_endpoint
end

View File

@ -24,32 +24,64 @@ platform_options = node["cinder"]["platform"]
platform_options["cinder_volume_packages"].each do |pkg|
package pkg do
action :upgrade
options platform_options["package_overrides"]
action :upgrade
end
end
platform_options["cinder_iscsitarget_packages"].each do |pkg|
package pkg do
action :upgrade
options platform_options["package_overrides"]
action :upgrade
end
end
db_user = node["cinder"]["db"]["username"]
db_pass = node["cinder"]["db"]["password"]
sql_connection = db_uri("cinder", db_user, "cinder")
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
glance_api_role = node["cinder"]["glance_api_chef_role"]
glance = get_settings_by_role glance_api_role, "glance"
glance_api_endpoint = endpoint "image-api"
service "cinder-volume" do
service_name platform_options["cinder_volume_service"]
supports :status => true, :restart => true
action [ :enable, :start ]
end
template "/etc/cinder/cinder.conf" do
source "cinder.conf.erb"
group node["cinder"]["group"]
owner node["cinder"]["user"]
mode 00644
variables(
:sql_connection => sql_connection,
:rabbit_host => rabbit_info["host"],
:rabbit_port => rabbit_info["port"],
:glance_host => glance_api_endpoint.host,
:glance_port => glance_api_endpoint.port
)
notifies :restart, resources(:service => "cinder-volume")
end
service "iscsitarget" do
service_name platform_options["cinder_iscsitarget_service"]
supports :status => true, :restart => true
action :enable
end
template "/etc/tgt/targets.conf" do
source "targets.conf.erb"
mode 00600
mode 00600
notifies :restart, resources(:service => "iscsitarget"), :immediately
end

View File

@ -52,7 +52,7 @@ paste.filter_factory = cinder.api.middleware.auth:CinderKeystoneContext.factory
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
service_host = <%= @identity_endpoint.host %>
service_port = <%= @identity_endpoint.port %>
service_protocol = <%= identity_endpoint.scheme %>
service_protocol = <%= @identity_endpoint.scheme %>
auth_host = <%= @identity_admin_endpoint.host %>
auth_port = <%= @identity_admin_endpoint.port %>
auth_protocol = <%= @identity_admin_endpoint.scheme %>