Bug 1185652
| Summary: | [RFE] Packstack should support installation over IPv6 addresses | ||
|---|---|---|---|
| Product: | Red Hat OpenStack | Reporter: | Ofer Blaut <oblaut> |
| Component: | openstack-packstack | Assignee: | Martin Magr <mmagr> |
| Status: | CLOSED ERRATA | QA Contact: | Udi Shkalim <ushkalim> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | 6.0 (Juno) | CC: | adahms, aortega, lbezdick, lpeer, mmagr, nyechiel, oblaut, psavage, sathlang, yeylon |
| Target Milestone: | ga | Keywords: | FutureFeature, ZStream |
| Target Release: | 7.0 (Kilo) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Enhancement | |
| Doc Text: |
This feature adds IPv6 support to Packstack, allowing Packstack to use IPv6 address as values in networking-related parameters such as CONFIG_CONTROLLER_HOST, CONFIG_COMPUTE_HOSTS, and CONFIG_NETWORK_HOSTS.
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-08-05 13:19:40 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 1100360, 1210658 | ||
| Bug Blocks: | 1083896 | ||
|
Description
Ofer Blaut
2015-01-25 14:34:44 UTC
Hi,
I'm testing the whole patchset:
git fetch https://review.openstack.org/stackforge/puppet-keystone refs/changes/49/164149/2
git fetch https://review.openstack.org/stackforge/puppet-neutron refs/changes/53/164153/1
curl https://github.com/xbezdick/puppetlabs-mongodb/commit/71b33de332eadd3ccc9f3fc6fd2e21a86201de67.patch
git fetch https://review.openstack.org/stackforge/puppet-heat refs/changes/54/164154/1
git fetch https://review.openstack.org/stackforge/puppet-swift refs/changes/57/164157/1
I'm using a standard allinone answerfile. The only modification being the
ip which uses the ipv6.
I've this issue:
Notice: /Stage[main]/Main/Cinder::Type[iscsi]/Exec[cinder type-create iscsi]/returns: ERROR: Unable to establish connection to http://[fdf8:f53b:82e4::179]:5000/v2.0/tokens
Error: cinder type-create iscsi returned 1 instead of one of [0]
Error: /Stage[main]/Main/Cinder::Type[iscsi]/Exec[cinder type-create iscsi]/returns: change from notrun to 0 failed: cinder type-create iscsi returned 1 instead of one of [0]
Notice: /Stage[main]/Main/Cinder::Type[iscsi]/Cinder::Type_set[lvm]/Exec[cinder type-key iscsi set volume_backend_name=lvm]: Dependency Exec[cinder type-create iscsi] has failures: true
Warning: /Stage[main]/Main/Cinder::Type[iscsi]/Cinder::Type_set[lvm]/Exec[cinder type-key iscsi set volume_backend_name=lvm]: Skipping because of failed dependencies
The problem is that keystone listen on '0.0.0.0', not on '::0', making
connection to the http://[fdf8:f53b:82e4::179]:5000 impossible.
Those patches fix the issue:
=> in packstack
diff --git a/packstack/puppet/templates/keystone.pp b/packstack/puppet/templates/keystone.pp
index 4f59646..3ec138b 100644
--- a/packstack/puppet/templates/keystone.pp
+++ b/packstack/puppet/templates/keystone.pp
@@ -16,6 +16,14 @@ class { 'keystone':
debug => hiera('CONFIG_DEBUG_MODE'),
service_name => $keystone_service_name,
enable_ssl => $keystone_use_ssl,
+ public_bind_host => hiera('CONFIG_IP_VERSION') ? {
+ 'ipv6' => '::0',
+ default => '0.0.0.0',
+ },
+ admin_bind_host => hiera('CONFIG_IP_VERSION') ? {
+ 'ipv6' => '::0',
+ default => '0.0.0.0',
+ },
}
if $keystone_service_name == 'httpd' {
=> in puppet-keystone
diff --git a/keystone/lib/puppet/provider/keystone.rb b/keystone/lib/puppet/provider/keystone.rb
index cc3a1ef..9de5f57 100644
--- a/keystone/lib/puppet/provider/keystone.rb
+++ b/keystone/lib/puppet/provider/keystone.rb
@@ -72,6 +72,8 @@ class Puppet::Provider::Keystone < Puppet::Provider::Openstack
host = keystone_file['DEFAULT']['admin_bind_host'].strip
if host == "0.0.0.0"
host = "127.0.0.1"
+ elsif host == '::0'
+ host = '[::1]'
end
else
host = "127.0.0.1"
Hi,
I notice that the metadata_service is still listening on 0.0.0.0.
This fixes the problem:
diff --git a/packstack/puppet/templates/nova_api.pp b/packstack/puppet/templates/nova_api.pp
index b70f858..4bb4cbf 100644
--- a/packstack/puppet/templates/nova_api.pp
+++ b/packstack/puppet/templates/nova_api.pp
@@ -6,6 +6,7 @@ $bind_host = hiera('CONFIG_IP_VERSION') ? {
}
class { 'nova::api':
api_bind_address => $bind_host,
+ metadata_listen => $bind_host,
enabled => true,
auth_host => hiera('CONFIG_KEYSTONE_HOST_URL'),
admin_password => hiera('CONFIG_NOVA_KS_PW'),
Regards,
In the same vein:
=> ceilometer api:
diff --git a/packstack/puppet/templates/ceilometer.pp b/packstack/puppet/templates/ceilometer.pp
index cd18a6b..947978b 100644
--- a/packstack/puppet/templates/ceilometer.pp
+++ b/packstack/puppet/templates/ceilometer.pp
@@ -48,7 +48,12 @@ class { 'ceilometer::alarm::evaluator':
coordination_url => $coordination_url,
}
+$bind_host = hiera('CONFIG_IP_VERSION') ? {
+ 'ipv6' => '::0',
+ 'ipv4' => '0.0.0.0',
+}
class { 'ceilometer::api':
+ host => $bind_host,
keystone_host => hiera('CONFIG_KEYSTONE_HOST_URL'),
keystone_password => hiera('CONFIG_CEILOMETER_KS_PW'),
}
=> memcache Horizon
diff --git a/packstack/puppet/templates/horizon.pp b/packstack/puppet/templates/horizon.pp
index b55ddbc..e54affa 100644
--- a/packstack/puppet/templates/horizon.pp
+++ b/packstack/puppet/templates/horizon.pp
@@ -14,6 +14,11 @@ $is_django_debug = hiera('CONFIG_DEBUG_MODE') ? {
false => 'False',
}
+$bind_host = hiera('CONFIG_IP_VERSION') ? {
+ 'ipv6' => '::0',
+ 'ipv4' => '0.0.0.0',
+}
+
class {'horizon':
secret_key => hiera('CONFIG_HORIZON_SECRET_KEY'),
keystone_url => "http://${keystone_host}:5000/v2.0",
@@ -68,7 +73,9 @@ if $is_horizon_ssl == true {
}
}
-class { 'memcached': }
+class { 'memcached':
+ listen_ip => $bind_host,
+}
$firewall_port = hiera('CONFIG_HORIZON_PORT')
=> swift proxy
diff --git a/packstack/puppet/templates/swift_proxy.pp b/packstack/puppet/templates/swift_proxy.pp
index d7e1efa..2424c0e 100644
--- a/packstack/puppet/templates/swift_proxy.pp
+++ b/packstack/puppet/templates/swift_proxy.pp
@@ -1,7 +1,14 @@
package { 'curl': ensure => present }
-class { 'memcached': }
+$bind_host = hiera('CONFIG_IP_VERSION') ? {
+ 'ipv6' => '::0',
+ 'ipv4' => '0.0.0.0',
+}
+
+class { 'memcached':
+ listen_ip => $bind_host,
+}
class { 'swift::proxy':
proxy_local_net_ip => hiera('CONFIG_STORAGE_HOST_URL'),
=> nova novnc
=> nova libvirt compute
Hi again, I added some other patches. To simplify I made a clean patch set above the current gerrit patch for packstack: https://github.com/sathlan/packstack/commit/a49416dc132fc4f7aa4078952b4d5e4668e648c1 It's easier to follow. So outside this patch, one need to apply the patch proposed above on keystone/lib/puppet/provider/keystone.rb in the patch https://review.openstack.org/#/c/164149/ Regards, For the keystone patch I made also a patch on github for easier reading: https://github.com/sathlan/puppet-keystone/commit/07cf2e89e30601009ea4bc39e42eb59c1d7d2d86 regards, Merged/commited all the patches on gerrit. packstack now fully supports ipv6 installation but some configurations won't work because some openstack services don't support ipv6 yet. Currently we can deploy IPv6 setup, but IPv6 console will not work due to: https://bugs.launchpad.net/nova/+bug/1456963 The suggested fix of https://bugs.launchpad.net/nova/+bug/1456963 was tested and it works Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2015:1548 |