get nova-common working with osops-utils

This commit is contained in:
rpedde
2012-05-23 14:31:57 -05:00
parent 8666ecf0ca
commit 4602fb014a

View File

@@ -7,9 +7,9 @@
# 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.
@@ -17,104 +17,35 @@
# limitations under the License.
#
# Distribution specific settings go here
if platform?(%w{fedora})
# Fedora
nova_common_package = "openstack-nova"
nova_common_package_options = ""
include_recipe "selinux::disabled"
else
# All Others (right now Debian and Ubuntu)
nova_common_package = "nova-common"
nova_common_package_options = "-o Dpkg::Options::='--force-confold' --force-yes"
end
platform_options = node["nova"]["platform"]
package nova_common_package do
action :upgrade
options nova_common_package_options
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
owner "nova"
group "nova"
mode "0755"
not_if do
File.exists?("/etc/nova")
end
end
if Chef::Config[:solo]
Chef::Log.warn("This recipe uses search. Chef Solo does not support search.")
else
# Lookup mysql ip address
mysql_server, something, arbitary_value = Chef::Search::Query.new.search(:node, "roles:mysql-master AND chef_environment:#{node.chef_environment}")
if mysql_server.length > 0
Chef::Log.info("nova::nova-common/mysql: using search")
db_ip_address = mysql_server[0]['mysql']['bind_address']
else
Chef::Log.info("nova::nova-common/mysql: NOT using search")
db_ip_address = node['mysql']['bind_address']
end
# Lookup rabbit ip address
rabbit, something, arbitary_value = Chef::Search::Query.new.search(:node, "roles:rabbitmq-server AND chef_environment:#{node.chef_environment}")
if rabbit.length > 0
Chef::Log.info("nova::nova-common/rabbitmq: using search")
rabbit_ip_address = rabbit[0]['ipaddress']
else
Chef::Log.info("nova::nova-common/rabbitmq: NOT using search")
rabbit_ip_address = node['ipaddress']
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")
# Lookup keystone api ip address
keystone, start, arbitary_value = Chef::Search::Query.new.search(:node, "roles:keystone AND chef_environment:#{node.chef_environment}")
if keystone.length > 0
Chef::Log.info("nova::nova-common/keystone: using search")
keystone_admin_user = keystone[0]['keystone']['admin_user']
keystone_admin_password = keystone[0]['keystone']['users'][keystone_admin_user]['password']
keystone_admin_tenantname = keystone[0]['keystone']['users'][keystone_admin_user]['default_tenant']
keystone_api_ip = keystone[0]['keystone']['api_ipaddress']
keystone_service_port = keystone[0]['keystone']['service_port']
else
Chef::Log.info("nova::nova-common/keystone: NOT using search")
keystone_admin_user = node['keystone']['admin_user']
keystone_admin_password = node['keystone']['users'][keystone_admin_user]['password']
keystone_admin_tenantname = node['keystone']['users'][keystone_admin_user]['default_tenant']
keystone_api_ip = node['keystone']['api_ipaddress']
keystone_service_port = node['keystone']['service_port']
end
# Lookup nova db information
nova = search(:node, "recipes:nova\\:\\:nova-setup AND chef_environment:#{node.chef_environment}")
if nova.length > 0
nova_db_password = nova[0]['nova']['db']['password']
else
nova_db_password = node['nova']['db']['password']
end
# Lookup glance api ip address
glance, something, arbitary_value = Chef::Search::Query.new.search(:node, "roles:glance-api AND chef_environment:#{node.chef_environment}")
if glance.length > 0
Chef::Log.info("nova::nova-common/glance: using search")
glance_api_ip = glance[0]['glance']['api']['ip_address']
glance_api_port = glance[0]['glance']['api']['port']
else
Chef::Log.info("nova::nova-common/glance: NOT using search")
glance_api_ip = node['glance']['api']['ip_address']
glance_api_port = node['glance']['api']['port']
end
# Lookup nova-vncproxy ip address
vncproxy = search(:node, "roles:nova-vncproxy AND chef_environment:#{node.chef_environment}")
if vncproxy.length > 0
xvpvncproxy_base_url = vncproxy[0]["nova"]["xvpvnc"]["proxy_base_url"]
novncproxy_base_url = vncproxy[0]["nova"]["novnc"]["proxy_base_url"]
else
xvpvncproxy_base_url = node["nova"]["xvpvnc"]["proxy_base_url"]
novncproxy_base_url = node["nova"]["novnc"]["proxy_base_url"]
end
end
# 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
@@ -123,22 +54,22 @@ template "/etc/nova/nova.conf" do
group "root"
mode "0644"
variables(
:db_ipaddress => db_ip_address,
:user => node["nova"]["db"]["username"],
:passwd => nova_db_password,
:db_name => node["nova"]["db"]["name"],
"vncserver_listen" => node["nova"]["libvirt"]["vncserver_listen"],
"xvpvncproxy_bind_host" => node["nova"]["xvpvnc"]["proxy_bind_host"],
"xvpvncproxy_bind_port" => node["nova"]["xvpvnc"]["proxy_bind_port"],
"xvpvncproxy_base_url" => xvpvncproxy_base_url,
"novncproxy_base_url" => novncproxy_base_url,
"vncserver_proxyclient_address" => node["nova"]["libvirt"]["vncserver_proxyclient_address"],
:rabbit_ipaddress => rabbit_ip_address,
"keystone_api_ipaddress" => keystone_api_ip,
"keystone_service_port" => keystone_service_port,
:glance_api_ipaddress => glance_api_ip,
:api_port => glance_api_port,
:virt_type => node["nova"]["libvirt"]["virt_type"]
"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
@@ -149,16 +80,16 @@ template "/root/.novarc" do
group "root"
mode "0600"
variables(
"user" => keystone_admin_user,
"tenant" => keystone_admin_tenantname,
"password" => keystone_admin_password,
"keystone_api_ipaddress" => keystone_api_ip,
"keystone_service_port" => keystone_service_port,
"nova_api_ipaddress" => node["ipaddress"],
"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" => node["nova"]["ec2"]["publicURL"],
"ec2_url" => ec2_public_endpoint["uri"],
"ec2_access_key" => node["credentials"]["EC2"]["admin"]["access"],
"ec2_secret_key" => node["credentials"]["EC2"]["admin"]["secret"]
)