diff --git a/recipes/api.rb b/recipes/api.rb index c57a3ab..78330cf 100644 --- a/recipes/api.rb +++ b/recipes/api.rb @@ -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" diff --git a/recipes/common.rb b/recipes/common.rb index 36d7408..df30497 100644 --- a/recipes/common.rb +++ b/recipes/common.rb @@ -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 diff --git a/recipes/scheduler.rb b/recipes/scheduler.rb index 8884cf6..7c36325 100644 --- a/recipes/scheduler.rb +++ b/recipes/scheduler.rb @@ -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 diff --git a/recipes/setup.rb b/recipes/setup.rb index 7cd36de..8bc906e 100644 --- a/recipes/setup.rb +++ b/recipes/setup.rb @@ -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 diff --git a/recipes/volume.rb b/recipes/volume.rb index c2118b9..6fd711b 100644 --- a/recipes/volume.rb +++ b/recipes/volume.rb @@ -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 diff --git a/templates/default/api-paste.ini.erb b/templates/default/api-paste.ini.erb index 97d7701..9728b88 100644 --- a/templates/default/api-paste.ini.erb +++ b/templates/default/api-paste.ini.erb @@ -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 %>