Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1185652

Summary: [RFE] Packstack should support installation over IPv6 addresses
Product: Red Hat OpenStack Reporter: Ofer Blaut <oblaut>
Component: openstack-packstackAssignee: 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: gaKeywords: 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
Description of problem:

Packstack should support installation of services using ONLY ipv6 address

Version-Release number of selected component (if applicable):
openstack-packstack-2014.2-0.14.dev1401.gdd19d48.el7ost.noarch

How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 2 Sofer Athlan-Guyot 2015-03-16 15:48:17 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"

Comment 3 Sofer Athlan-Guyot 2015-03-16 16:15:48 UTC
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,

Comment 4 Sofer Athlan-Guyot 2015-03-16 19:59:21 UTC
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

Comment 5 Sofer Athlan-Guyot 2015-03-16 21:56:46 UTC
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,

Comment 6 Sofer Athlan-Guyot 2015-03-16 23:03:12 UTC
For the keystone patch I made also a patch on github for easier reading:

https://github.com/sathlan/puppet-keystone/commit/07cf2e89e30601009ea4bc39e42eb59c1d7d2d86

regards,

Comment 7 Sofer Athlan-Guyot 2015-03-17 23:54:58 UTC
Merged/commited all the patches on gerrit.

Comment 8 Lukas Bezdicka 2015-04-21 13:06:37 UTC
packstack now fully supports ipv6 installation but some configurations won't work because some openstack services don't support ipv6 yet.

Comment 11 Ofer Blaut 2015-06-08 11:14:55 UTC
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

Comment 14 errata-xmlrpc 2015-08-05 13:19:40 UTC
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