diff --git a/attributes/default.rb b/attributes/default.rb index 9f61889f..95f54e4c 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,68 +1,68 @@ -default[:mysql][:root_pass] = "secrete" +default["mysql"]["root_pass"] = "secrete" -default[:nova][:db] = "nova" -default[:nova][:db_user] = "nova" -default[:nova][:db_passwd] = "nova" -default[:nova][:db_ipaddress] = node[:controller_ipaddress] +default["nova"]["db"] = "nova" +default["nova"]["db_user"] = "nova" +default["nova"]["db_passwd"] = "nova" +default["nova"]["db_ipaddress"] = node["controller_ipaddress"] -default[:rabbit][:ipaddress] = node[:controller_ipaddress] +default["rabbit"]["ipaddress"] = node["controller_ipaddress"] # TODO (cleanup this section) -default[:glance][:db] = "glance" -default[:glance][:db_user] = "glance" -default[:glance][:db_passwd] = "glance" -default[:glance][:api_port] = "9292" -default[:glance][:registry_port] = "9191" -default[:glance][:images] = [ "tty", "natty" ] +default["glance"]["db"] = "glance" +default["glance"]["db_user"] = "glance" +default["glance"]["db_passwd"] = "glance" +default["glance"]["api_port"] = "9292" +default["glance"]["registry_port"] = "9191" +default["glance"]["images"] = [ "tty", "natty" ] -default[:volume][:api_port] = 8776 -default[:volume][:ipaddress] = node[:controller_ipaddress] -default[:volume][:adminURL] = "http://#{default[:controller_ipaddress]}:#{default[:volume][:api_port]}/v1" -default[:volume][:internalURL] = default[:volume][:adminURL] -default[:volume][:publicURL] = default[:volume][:adminURL] +default["volume"]["api_port"] = 8776 +default["volume"]["ipaddress"] = node["controller_ipaddress"] +default["volume"]["adminURL"] = "http://#{default["controller_ipaddress"]}:#{default["volume"]["api_port"]}/v1" +default["volume"]["internalURL"] = default["volume"]["adminURL"] +default["volume"]["publicURL"] = default["volume"]["adminURL"] # TODO (cleanup this section) -default[:keystone][:db] = "keystone" -default[:keystone][:db_user] = "keystone" -default[:keystone][:db_passwd] = "keystone" -default[:keystone][:verbose] = "False" -default[:keystone][:debug] = "False" -default[:keystone][:keystone_host] = node[:controller_ipaddress] -default[:keystone][:service_port] = "5000" -default[:keystone][:admin_port] = "35357" -default[:keystone][:admin_token] = "999888777666" +default["keystone"]["db"] = "keystone" +default["keystone"]["db_user"] = "keystone" +default["keystone"]["db_passwd"] = "keystone" +default["keystone"]["verbose"] = "False" +default["keystone"]["debug"] = "False" +default["keystone"]["keystone_host"] = node["controller_ipaddress"] +default["keystone"]["service_port"] = "5000" +default["keystone"]["admin_port"] = "35357" +default["keystone"]["admin_token"] = "999888777666" # TODO (cleanup this section) -default[:dash][:db] = "dash" -default[:dash][:db_user] = "dash" -default[:dash][:db_passwd] = "dash" +default["dash"]["db"] = "dash" +default["dash"]["db_user"] = "dash" +default["dash"]["db_passwd"] = "dash" -default[:image][:oneiric] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-11.10-server-uec-amd64-multinic.tar.gz" -default[:image][:natty] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-11.04-server-uec-amd64-multinic.tar.gz" -default[:image][:maverick] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-10.10-server-uec-amd64-multinic.tar.gz" -default[:image][:tty] = "http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz" +default["image"]["oneiric"] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-11.10-server-uec-amd64-multinic.tar.gz" +default["image"]["natty"] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-11.04-server-uec-amd64-multinic.tar.gz" +default["image"]["maverick"] = "http://c250663.r63.cf1.rackcdn.com/ubuntu-10.10-server-uec-amd64-multinic.tar.gz" +default["image"]["tty"] = "http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz" -default[:public][:label] = "public" -default[:public][:ipv4_cidr] = "192.168.100.0/24" -default[:public][:num_networks] = "1" -default[:public][:network_size] = "255" -default[:public][:bridge] = "br100" -default[:public][:bridge_dev] = "eth2" -default[:public][:dns1] = "8.8.8.8" -default[:public][:dns2] = "8.8.4.4" +default["public"]["label"] = "public" +default["public"]["ipv4_cidr"] = "192.168.100.0/24" +default["public"]["num_networks"] = "1" +default["public"]["network_size"] = "255" +default["public"]["bridge"] = "br100" +default["public"]["bridge_dev"] = "eth2" +default["public"]["dns1"] = "8.8.8.8" +default["public"]["dns2"] = "8.8.4.4" -default[:private][:label] = "private" -default[:private][:ipv4_cidr] = "192.168.200.0/24" -default[:private][:num_networks] = "1" -default[:private][:network_size] = "255" -default[:private][:bridge] = "br200" -default[:private][:bridge_dev] = "eth3" +default["private"]["label"] = "private" +default["private"]["ipv4_cidr"] = "192.168.200.0/24" +default["private"]["num_networks"] = "1" +default["private"]["network_size"] = "255" +default["private"]["bridge"] = "br200" +default["private"]["bridge_dev"] = "eth3" -default[:controller_ipaddress] = node[:ipaddress] -default[:virt_type] = "kvm" +default["controller_ipaddress"] = node["ipaddress"] +default["virt_type"] = "kvm" -default[:libvirt][:auth_tcp] = "none" -default[:libvirt][:ssh][:private_key] = "-----BEGIN DSA PRIVATE KEY----- +default["libvirt"]["auth_tcp"] = "none" +default["libvirt"]["ssh"]["private_key"] = "-----BEGIN DSA PRIVATE KEY----- MIIBvAIBAAKBgQDUIz3rg0afavOwNeTJL/112U/l4B08kzZVx+QcflxllpW4sn/f c+j+BeQ/sm2oW67vY9O/1GbN3FIN7Um3p0F9ycpfXpEiwk4UYneJtXFNhlu9rSrK hWsEWENoKrCFhZ4Zuu8ads0DCMkU/ErumXMvJZQpSe+8CfguYSMbXvkYhQIVAPzY @@ -74,4 +74,4 @@ CYiYhwoK8RM+z0TNXjBIWXpHwAqX5kFhg/xPySxWS58GePmPOXDbFEYq5FRWTx47 sQqRmVHmlZZ9AhsRfs65g4LlgJyBlWPeZ0xsfShYHKLKg5RrOGn90egCFQCcok5v 1TpUNWQC3NPFkwWHkp1zrg== -----END DSA PRIVATE KEY-----" -default[:libvirt][:ssh][:public_key] = "ssh-dss AAAAB3NzaC1kc3MAAACBANQjPeuDRp9q87A15Mkv/XXZT+XgHTyTNlXH5Bx+XGWWlbiyf99z6P4F5D+ybahbru9j07/UZs3cUg3tSbenQX3Jyl9ekSLCThRid4m1cU2GW72tKsqFawRYQ2gqsIWFnhm67xp2zQMIyRT8Su6Zcy8llClJ77wJ+C5hIxte+RiFAAAAFQD82LMjyqjmt7HLIS6sD7pWReuJ2QAAAIAFjrS6pwVInxqA9jZhmYtOxD86tVtSyfBP5ER5eOpqh9S92UrjeRYbDwjW/0GuH7faYVxi7YvSLO/dm8f3B3Y4SJmcfG1kSiMAsF0owVFsLw8sLYibPfK83ASj5mSBKjkvM/2dJzI78kONvI4kA8SwK0pHGa2HhcFy5jmU8C1OUQAAAIEAtFtXDovPhgvLGhFrRZjBzp3HREWW1tihsWZA4qIFib+Rd+/s3lWGCYiYhwoK8RM+z0TNXjBIWXpHwAqX5kFhg/xPySxWS58GePmPOXDbFEYq5FRWTx47sQqRmVHmlZZ9AhsRfs65g4LlgJyBlWPeZ0xsfShYHKLKg5RrOGn90eg= root@example.com" +default["libvirt"]["ssh"]["public_key"] = "ssh-dss AAAAB3NzaC1kc3MAAACBANQjPeuDRp9q87A15Mkv/XXZT+XgHTyTNlXH5Bx+XGWWlbiyf99z6P4F5D+ybahbru9j07/UZs3cUg3tSbenQX3Jyl9ekSLCThRid4m1cU2GW72tKsqFawRYQ2gqsIWFnhm67xp2zQMIyRT8Su6Zcy8llClJ77wJ+C5hIxte+RiFAAAAFQD82LMjyqjmt7HLIS6sD7pWReuJ2QAAAIAFjrS6pwVInxqA9jZhmYtOxD86tVtSyfBP5ER5eOpqh9S92UrjeRYbDwjW/0GuH7faYVxi7YvSLO/dm8f3B3Y4SJmcfG1kSiMAsF0owVFsLw8sLYibPfK83ASj5mSBKjkvM/2dJzI78kONvI4kA8SwK0pHGa2HhcFy5jmU8C1OUQAAAIEAtFtXDovPhgvLGhFrRZjBzp3HREWW1tihsWZA4qIFib+Rd+/s3lWGCYiYhwoK8RM+z0TNXjBIWXpHwAqX5kFhg/xPySxWS58GePmPOXDbFEYq5FRWTx47sQqRmVHmlZZ9AhsRfs65g4LlgJyBlWPeZ0xsfShYHKLKg5RrOGn90eg= root@example.com" diff --git a/recipes/api-ec2.rb b/recipes/api-ec2.rb index 8ff51453..a629d914 100644 --- a/recipes/api-ec2.rb +++ b/recipes/api-ec2.rb @@ -61,12 +61,12 @@ template "/etc/nova/api-paste.ini" do group "root" mode "0644" variables( - :ip_address => node[:controller_ipaddress], - :component => node[:package_component], - :service_port => node[:keystone][:service_port], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :admin_port => node[:keystone][:admin_port], - :admin_token => node[:keystone][:admin_token] + :ip_address => node["controller_ipaddress"], + :component => node["package_component"], + :service_port => node["keystone"]["service_port"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :admin_port => node["keystone"]["admin_port"], + :admin_token => node["keystone"]["admin_token"] ) notifies :restart, resources(:service => nova_api_ec2_service), :delayed end diff --git a/recipes/api-metadata.rb b/recipes/api-metadata.rb index 72b3f3cb..554b2231 100644 --- a/recipes/api-metadata.rb +++ b/recipes/api-metadata.rb @@ -61,12 +61,12 @@ template "/etc/nova/api-paste.ini" do group "root" mode "0644" variables( - :ip_address => node[:controller_ipaddress], - :component => node[:package_component], - :service_port => node[:keystone][:service_port], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :admin_port => node[:keystone][:admin_port], - :admin_token => node[:keystone][:admin_token] + :ip_address => node["controller_ipaddress"], + :component => node["package_component"], + :service_port => node["keystone"]["service_port"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :admin_port => node["keystone"]["admin_port"], + :admin_token => node["keystone"]["admin_token"] ) notifies :restart, resources(:service => nova_api_metadata_service), :delayed end diff --git a/recipes/api-os-compute.rb b/recipes/api-os-compute.rb index be7f3b8b..0e038699 100644 --- a/recipes/api-os-compute.rb +++ b/recipes/api-os-compute.rb @@ -61,12 +61,12 @@ template "/etc/nova/api-paste.ini" do group "root" mode "0644" variables( - :ip_address => node[:controller_ipaddress], - :component => node[:package_component], - :service_port => node[:keystone][:service_port], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :admin_port => node[:keystone][:admin_port], - :admin_token => node[:keystone][:admin_token] + :ip_address => node["controller_ipaddress"], + :component => node["package_component"], + :service_port => node["keystone"]["service_port"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :admin_port => node["keystone"]["admin_port"], + :admin_token => node["keystone"]["admin_token"] ) notifies :restart, resources(:service => nova_api_os_compute_service), :delayed end diff --git a/recipes/api-os-volume.rb b/recipes/api-os-volume.rb index a4f5ba1b..58c45007 100644 --- a/recipes/api-os-volume.rb +++ b/recipes/api-os-volume.rb @@ -60,12 +60,12 @@ template "/etc/nova/api-paste.ini" do group "root" mode "0644" variables( - :ip_address => node[:controller_ipaddress], - :component => node[:package_component], - :service_port => node[:keystone][:service_port], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :admin_port => node[:keystone][:admin_port], - :admin_token => node[:keystone][:admin_token] + :ip_address => node["controller_ipaddress"], + :component => node["package_component"], + :service_port => node["keystone"]["service_port"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :admin_port => node["keystone"]["admin_port"], + :admin_token => node["keystone"]["admin_token"] ) notifies :restart, resources(:service => nova_api_os_volume_service), :delayed end diff --git a/recipes/api.rb b/recipes/api.rb index a28689ff..9f3ff801 100644 --- a/recipes/api.rb +++ b/recipes/api.rb @@ -60,12 +60,12 @@ template "/etc/nova/api-paste.ini" do group "root" mode "0644" variables( - :ip_address => node[:controller_ipaddress], - :component => node[:package_component], - :service_port => node[:keystone][:service_port], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :admin_port => node[:keystone][:admin_port], - :admin_token => node[:keystone][:admin_token] + :ip_address => node["controller_ipaddress"], + :component => node["package_component"], + :service_port => node["keystone"]["service_port"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :admin_port => node["keystone"]["admin_port"], + :admin_token => node["keystone"]["admin_token"] ) notifies :restart, resources(:service => nova_api_service), :immediately end diff --git a/recipes/compute.rb b/recipes/compute.rb index 8b8681ca..d44fc0b6 100644 --- a/recipes/compute.rb +++ b/recipes/compute.rb @@ -36,9 +36,9 @@ else nova_compute_package = "nova-compute" nova_compute_service = nova_compute_package nova_compute_package_options = "-o Dpkg::Options::='--force-confold' --force-yes" - if node[:virt_type] == "kvm" + if node["virt_type"] == "kvm" nova_compute_package = "nova-compute-kvm" - elsif node[:virt_type] == "qemu" + elsif node["virt_type"] == "qemu" nova_compute_package = "nova-compute-qemu" end end diff --git a/recipes/libvirt.rb b/recipes/libvirt.rb index 61c9ad2c..164f6307 100644 --- a/recipes/libvirt.rb +++ b/recipes/libvirt.rb @@ -20,18 +20,15 @@ package libvirt_package do action :install end -if platform?(%w{fedora}) - # oh fedora... - bash "create libvirtd group" do - cwd "/tmp" - user "root" - code <<-EOH - set -e - set -x - groupadd -f libvirtd - usermod -G libvirtd nova - EOH - end +# oh fedora... +bash "create libvirtd group" do + cwd "/tmp" + user "root" + code <<-EOH + groupadd -f libvirtd + usermod -G libvirtd nova + EOH + only_if { platform?(%w{fedora}) } end service libvirt_service do @@ -54,7 +51,7 @@ template "/var/lib/nova/.ssh/id_dsa.pub" do group "nova" mode "0644" variables( - :public_key => node[:libvirt][:ssh][:public_key] + :public_key => node['libvirt']['ssh']['public_key'] ) end @@ -65,7 +62,7 @@ template "/var/lib/nova/.ssh/id_dsa" do group "nova" mode "0600" variables( - :private_key => node[:libvirt][:ssh][:private_key] + :private_key => node['libvirt']['ssh']['private_key'] ) end @@ -84,7 +81,7 @@ template "/var/lib/nova/.ssh/authorized_keys" do group "nova" mode "0600" variables( - :public_key => node[:libvirt][:ssh][:public_key] + :public_key => node['libvirt']['ssh']['public_key'] ) end @@ -97,7 +94,7 @@ template "/etc/libvirt/libvirtd.conf" do group "root" mode "0644" variables( - :auth_tcp => node[:libvirt][:auth_tcp] + :auth_tcp => node['libvirt']['auth_tcp'] ) notifies :restart, resources(:service => libvirt_service), :immediately end diff --git a/recipes/nova-common.rb b/recipes/nova-common.rb index c16f660e..e56366b5 100644 --- a/recipes/nova-common.rb +++ b/recipes/nova-common.rb @@ -50,17 +50,17 @@ template "/etc/nova/nova.conf" do group "root" mode "0644" variables( - :user => node[:nova][:db_user], - :passwd => node[:nova][:db_passwd], - :ip_address => node[:controller_ipaddress], - :db_name => node[:nova][:db], - :db_ipaddress => node[:nova][:db_ipaddress], - :rabbit_ipaddress => node[:rabbit][:rabbit_ipaddress], - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :glance_api_ipaddress => node[:glance][:api_ipaddress], - :api_port => node[:glance][:api_port], - :ipv4_cidr => node[:public][:ipv4_cidr], - :virt_type => node[:virt_type] + :user => node["nova"]["db_user"], + :passwd => node["nova"]["db_passwd"], + :ip_address => node["controller_ipaddress"], + :db_name => node["nova"]["db"], + :db_ipaddress => node["nova"]["db_ipaddress"], + :rabbit_ipaddress => node["rabbit"]["rabbit_ipaddress"], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :glance_api_ipaddress => node["glance"]["api_ipaddress"], + :api_port => node["glance"]["api_port"], + :ipv4_cidr => node["public"]["ipv4_cidr"], + :virt_type => node["virt_type"] ) end @@ -73,9 +73,9 @@ template "/root/.novarc" do :user => 'admin', :tenant => 'openstack', :password => 'secrete', - :keystone_api_ipaddress => node[:keystone][:api_ipaddress], - :nova_api_ipaddress => node[:nova][:api_ipaddress], - :keystone_service_port => node[:keystone][:service_port], + :keystone_api_ipaddress => node["keystone"]["api_ipaddress"], + :nova_api_ipaddress => node["nova"]["api_ipaddress"], + :keystone_service_port => node["keystone"]["service_port"], :nova_api_version => '1.1', :keystone_region => 'RegionOne', :auth_strategy => 'keystone' diff --git a/recipes/nova-setup.rb b/recipes/nova-setup.rb index 38b4a40d..0a46a6f1 100644 --- a/recipes/nova-setup.rb +++ b/recipes/nova-setup.rb @@ -20,25 +20,25 @@ include_recipe "nova::nova-common" include_recipe "mysql::client" -connection_info = {:host => node[:nova][:db_ipaddress], :username => "root", :password => node['mysql']['server_root_password']} +connection_info = {:host => node["nova"]["db_ipaddress"], :username => "root", :password => node['mysql']['server_root_password']} mysql_database "create nova database" do connection connection_info - database_name node[:nova][:db] + database_name node["nova"]["db"] action :create end -mysql_database_user node[:nova][:db_user] do +mysql_database_user node["nova"]["db_user"] do connection connection_info - password node[:nova][:db_passwd] + password node["nova"]["db_passwd"] action :create end -mysql_database_user node[:nova][:db_user] do +mysql_database_user node["nova"]["db_user"] do connection connection_info - password node[:nova][:db_passwd] - database_name node[:nova][:db] + password node["nova"]["db_passwd"] + database_name node["nova"]["db"] host '%' - privileges [:all] + privileges ["all"] action :grant end @@ -49,21 +49,21 @@ execute "nova-manage db sync" do end execute "nova-manage network create --label=public" do - command "nova-manage network create --multi_host='T' --label=#{node[:public][:label]} --fixed_range_v4=#{node[:public][:ipv4_cidr]} --num_networks=#{node[:public][:num_networks]} --network_size=#{node[:public][:network_size]} --bridge=#{node[:public][:bridge]} --bridge_interface=#{node[:public][:bridge_dev]} --dns1=#{node[:public][:dns1]} --dns2=#{node[:public][:dns2]}" + command "nova-manage network create --multi_host='T' --label=#{node["public"]["label"]} --fixed_range_v4=#{node["public"]["ipv4_cidr"]} --num_networks=#{node["public"]["num_networks"]} --network_size=#{node["public"]["network_size"]} --bridge=#{node["public"]["bridge"]} --bridge_interface=#{node["public"]["bridge_dev"]} --dns1=#{node["public"]["dns1"]} --dns2=#{node["public"]["dns2"]}" action :run - not_if "nova-manage network list | grep #{node[:public][:ipv4_cidr]}" + not_if "nova-manage network list | grep #{node["public"]["ipv4_cidr"]}" end execute "nova-manage network create --label=private" do - command "nova-manage network create --multi_host='T' --label=#{node[:private][:label]} --fixed_range_v4=#{node[:private][:ipv4_cidr]} --num_networks=#{node[:private][:num_networks]} --network_size=#{node[:private][:network_size]} --bridge=#{node[:private][:bridge]} --bridge_interface=#{node[:private][:bridge_dev]}" + command "nova-manage network create --multi_host='T' --label=#{node["private"]["label"]} --fixed_range_v4=#{node["private"]["ipv4_cidr"]} --num_networks=#{node["private"]["num_networks"]} --network_size=#{node["private"]["network_size"]} --bridge=#{node["private"]["bridge"]} --bridge_interface=#{node["private"]["bridge_dev"]}" action :run - not_if "nova-manage network list | grep #{node[:private][:ipv4_cidr]}" + not_if "nova-manage network list | grep #{node["private"]["ipv4_cidr"]}" end -if node.has_key?(:floating) and node[:floating].has_key?(:ipv4_cidr) +if node.has_key?(:floating) and node["floating"].has_key?(:ipv4_cidr) execute "nova-manage floating create" do - command "nova-manage floating create --ip_range=#{node[:floating][:ipv4_cidr]}" + command "nova-manage floating create --ip_range=#{node["floating"]["ipv4_cidr"]}" action :run not_if "nova-manage floating list" end diff --git a/recipes/volume.rb b/recipes/volume.rb index da625fcf..30aa4721 100644 --- a/recipes/volume.rb +++ b/recipes/volume.rb @@ -36,32 +36,32 @@ end # Register Volume Service keystone_register "Register Volume Service" do - auth_host node[:keystone][:api_ipaddress] - auth_port node[:keystone][:admin_port] + auth_host node["keystone"]["api_ipaddress"] + auth_port node["keystone"]["admin_port"] auth_protocol "http" api_ver "/v2.0" - auth_token node[:keystone][:admin_token] + auth_token node["keystone"]["admin_token"] service_name "Volume Service" service_type "volume" service_description "Nova Volume Service" action :create_service end -node[:volume][:adminURL] = "http://#{node[:volume][:ipaddress]}:#{node[:volume][:api_port]}/v1/%(tenant_id)s" -node[:volume][:internalURL] = node[:volume][:adminURL] -node[:volume][:publicURL] = node[:volume][:adminURL] +node["volume"]["adminURL"] = "http://#{node["volume"]["ipaddress"]}:#{node["volume"]["api_port"]}/v1/%(tenant_id)s" +node["volume"]["internalURL"] = node["volume"]["adminURL"] +node["volume"]["publicURL"] = node["volume"]["adminURL"] # Register Image Endpoint keystone_register "Register Volume Endpoint" do - auth_host node[:keystone][:api_ipaddress] - auth_port node[:keystone][:admin_port] + auth_host node["keystone"]["api_ipaddress"] + auth_port node["keystone"]["admin_port"] auth_protocol "http" api_ver "/v2.0" - auth_token node[:keystone][:admin_token] + auth_token node["keystone"]["admin_token"] service_type "volume" endpoint_region "RegionOne" - endpoint_adminurl node[:volume][:adminURL] - endpoint_internalurl node[:volume][:internalURL] - endpoint_publicurl node[:volume][:publicURL] + endpoint_adminurl node["volume"]["adminURL"] + endpoint_internalurl node["volume"]["internalURL"] + endpoint_publicurl node["volume"]["publicURL"] action :create_endpoint end