get nova-common working with osops-utils
This commit is contained in:
@@ -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
|
||||
platform_options["common_packages"].each do |pkg|
|
||||
package pkg do
|
||||
action :upgrade
|
||||
options nova_common_package_options
|
||||
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
|
||||
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 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
|
||||
|
||||
# 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"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user