# # Cookbook Name:: nova # Recipe:: common # # Copyright 2009, Rackspace Hosting, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # platform_options = node["nova"]["platform"] platform_options["common_packages"].each do |pkg| package pkg do action :upgrade options platform_options["package_overrides"] end end directory "/etc/nova" do action :create owner "nova" group "nova" mode "0755" end mysql_info = get_settings_by_role("mysql-master", "mysql") rabbit_info = get_settings_by_role("rabbitmq-server", "rabbitmq") nova_setup_info = get_settings_by_recipe("nova\\:\\:nova-setup", "nova") keystone = get_settings_by_role("keystone", "keystone") # find the node attribute endpoint settings for the server holding a given role ks_admin_endpoint = get_access_endpoint("keystone", "keystone", "admin-api") ks_service_endpoint = get_access_endpoint("keystone", "keystone", "service-api") xvpvnc_endpoint = get_access_endpoint("nova-vncproxy", "nova", "xvpvnc") novnc_endpoint = get_access_endpoint("nova-vncproxy", "nova", "novnc") glance_endpoint = get_access_endpoint("glance-api", "glance", "api") nova_api_endpoint = get_access_endpoint("nova-api-os-compute", "nova", "api") ec2_public_endpoint = get_access_endpoint("nova-api-ec2", "nova", "ec2-public") # TODO: need to re-evaluate this for accuracy template "/etc/nova/nova.conf" do source "nova.conf.erb" owner "root" group "root" mode "0644" variables( "db_ipaddress" => mysql_info["bind_address"], "user" => node["nova"]["db"]["username"], "passwd" => nova_setup_info["db"]["password"], "db_name" => node["nova"]["db"]["name"], "vncserver_listen" => novnc_endpoint["host"], "vncserver_proxyclient_address" => novnc_endpoint["host"], "novncproxy_base_url" => novnc_endpoint["uri"], "xvpvncproxy_bind_host" => xvpvnc_endpoint["host"], "xvpvncproxy_bind_port" => xvpvnc_endpoint["port"], "xvpvncproxy_base_url" => xvpvnc_endpoint["uri"], "rabbit_ipaddress" => rabbit_info["ipaddress"], "keystone_api_ipaddress" => ks_admin_endpoint["host"], "keystone_service_port" => ks_service_endpoint["port"], "glance_api_ipaddress" => glance_endpoint["host"], "api_port" => glance_endpoint["host"], "virt_type" => node["nova"]["libvirt"]["virt_type"] ) end # TODO: need to re-evaluate this for accuracy template "/root/.novarc" do source "novarc.erb" owner "root" group "root" mode "0600" variables( "user" => keystone["admin_user"], "tenant" => keystone["users"][keystone["admin_user"]]["default_tenant"], "password" => keystone["users"][keystone["admin_user"]]["password"], "keystone_api_ipaddress" => ks_service_endpoint["host"], "keystone_service_port" => ks_service_endpoint["port"], "nova_api_ipaddress" => nova_api_endpoint["host"], "nova_api_version" => "1.1", "keystone_region" => node["nova"]["compute"]["region"], "auth_strategy" => "keystone", "ec2_url" => ec2_public_endpoint["uri"], "ec2_access_key" => node["credentials"]["EC2"]["admin"]["access"], "ec2_secret_key" => node["credentials"]["EC2"]["admin"]["secret"] ) end