41 Commits

Author SHA1 Message Date
Radosław Piliszek
bc053c09c1 Implement IPv6 support in the control plane
Introduce kolla_address filter.
Introduce put_address_in_context filter.

Add AF config to vars.

Address contexts:
- raw (default): <ADDR>
- memcache: inet6:[<ADDR>]
- url: [<ADDR>]

Other changes:

globals.yml - mention just IP in comment

prechecks/port_checks (api_intf) - kolla_address handles validation

3x interface conditional (swift configs: replication/storage)

2x interface variable definition with hostname
(haproxy listens; api intf)

1x interface variable definition with hostname with bifrost exclusion
(baremetal pre-install /etc/hosts; api intf)

neutron's ml2 'overlay_ip_version' set to 6 for IPv6 on tunnel network

basic multinode source CI job for IPv6

prechecks for rabbitmq and qdrouterd use proper NSS database now

MariaDB Galera Cluster WSREP SST mariabackup workaround
(socat and IPv6)

Ceph naming workaround in CI
TODO: probably needs documenting

RabbitMQ IPv6-only proto_dist

Ceph ms switch to IPv6 mode

Remove neutron-server ml2_type_vxlan/vxlan_group setting
as it is not used (let's avoid any confusion)
and could break setups without proper multicast routing
if it started working (also IPv4-only)

haproxy upgrade checks for slaves based on ipv6 addresses

TODO:

ovs-dpdk grabs ipv4 network address (w/ prefix len / submask)
not supported, invalid by default because neutron_external has no address
No idea whether ovs-dpdk works at all atm.

ml2 for xenapi
Xen is not supported too well.
This would require working with XenAPI facts.

rp_filter setting
This would require meddling with ip6tables (there is no sysctl param).
By default nothing is dropped.
Unlikely we really need it.

ironic dnsmasq is configured IPv4-only
dnsmasq needs DHCPv6 options and testing in vivo.

KNOWN ISSUES (beyond us):

One cannot use IPv6 address to reference the image for docker like we
currently do, see: https://github.com/moby/moby/issues/39033
(docker_registry; docker API 400 - invalid reference format)
workaround: use hostname/FQDN

RabbitMQ may fail to bind to IPv6 if hostname resolves also to IPv4.
This is due to old RabbitMQ versions available in images.
IPv4 is preferred by default and may fail in the IPv6-only scenario.
This should be no problem in real life as IPv6-only is indeed IPv6-only.
Also, when new RabbitMQ (3.7.16/3.8+) makes it into images, this will
no longer be relevant as we supply all the necessary config.
See: https://github.com/rabbitmq/rabbitmq-server/pull/1982

For reliable runs, at least Ansible 2.8 is required (2.8.5 confirmed
to work well). Older Ansible versions are known to miss IPv6 addresses
in interface facts. This may affect redeploys, reconfigures and
upgrades which run after VIP address is assigned.
See: https://github.com/ansible/ansible/issues/63227

Bifrost Train does not support IPv6 deployments.
See: https://storyboard.openstack.org/#!/story/2006689

Change-Id: Ia34e6916ea4f99e9522cd2ddde03a0a4776f7e2c
Implements: blueprint ipv6-control-plane
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
2019-10-16 10:24:35 +02:00
wangwei
cd519db139 Support mon and osd to be named with hostname
In the current deployment of ceph, the node name of osd and the name
of mon are both IP, and other daemons use hostname.

This commit adds support for naming mon and osd nodes using hostname,
and does not change the default ip-named way.

Change-Id: I22bef72dcd8fc8bcd391ae30e4643520250fd556
2019-08-05 08:54:01 +00:00
Radosław Piliszek
826f6850d0 ceph: fixes to deployment and upgrade
1) ceph-nfs (ganesha-ceph) - use NFSv4 only
This is recommended upstream.
v3 and UDP require portmapper (aka rpcbind) which we
do not want, except where Ubuntu ganesha version (2.6)
forces it by requiring enabled UDP, see [1].
The issue has been fixed in 2.8, included in CentOS.
Additionally disable v3 helper protocols and kerberos
to avoid meaningless warnings.

2) ceph-nfs (ganesha-ceph) - do not export host dbus
It is not in use. This avoids the temptation to try
handling it on host.

3) Properly handle ceph services deploy and upgrade
Upgrade runs deploy.
The order has been corrected - nfs goes after mds.
Additionally upgrade takes care of rgw for keystone
(for swift emulation).

4) Enhance ceph keyring module with error detection
Now it does not blindly try to create a keyring after
any failure. This used to hide real issue.

5) Retry ceph admin keyring update until cluster works
Reordering deployment caused issue with ceph cluster not being
fully operational before taking actions on it.

6) CI: Remove osd df from collected logs as it may hang CI
Hangs are caused by healthy MON and no healthy MGR.
A descriptive note is left in its place.

7) CI: Add 5s timeout to ceph informational commands
This decreases the timeout from the default 300s.

[1] https://review.opendev.org/669315

Change-Id: I1cf0ad10b80552f503898e723f0c4bd00a38f143
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
2019-08-05 06:26:25 +00:00
Jim Rollenhagen
2e4e60503a Use keystone_*_url var in all configs
We're duplicating code to build the keystone URLs in nearly every
config, where we've already done it in group_vars. Replace the
redundancy with a variable that does the same thing.

Change-Id: I207d77870e2535c1cdcbc5eaf704f0448ac85a7a
2019-03-06 15:08:26 -05:00
wu.chunyang
cdfc0442e9 add debug option to ceph mon or osd start command
when ceph_mon and ceph_osd start failed, add debug option will
print more info. now when ceph_mon and ceph_osd containers start
failed, docker logs ceph_mon print none log

Closes-Bug: #1815707

Change-Id: I3c5086019808a9738714f5279ec74cbb9b7a8587
2019-02-14 11:28:53 +00:00
wu.chunyang
d35f9a4b70 repair ceph_nfs container start failed
when enable ceph_nfs,it deploy failed, because no ganesha config
file, and the 'ganesha.nfs' command need root privilege to run.
i will modify ceph_nfs dockerfile,please review. thanks

https://review.openstack.org/#/c/630510/

Change-Id: I347107bc33733061ad043bffe38ecc1d16770afc
Closes-Bug: #1811581
2019-01-17 23:43:03 +08:00
Jeffrey Zhang
6db3f9f342 Disable ceph osd crush update on start in default
The buggy come from ceph changes[0], which is included since ceph osd
v11.0.0. The `osd crush update on start` logical is moved from
`ceph-osd-prestart.sh` to ceph-osd startup process. So ceph-osd will
create buckets by node hostname automatically. Whereas, kolla is
creating buckets by node ip

For the less confused and ceph upgrade impact, disable `osd crush update
on start` is a better choice

[0] a28b71e3c9

Change-Id: Ibbeac9505c9957319126267dbe6bd7a2cac11f0c
Closes-Bug: #1801662
2018-11-05 15:11:05 +08:00
Xinliang Liu
943e41d2cb Add ResellerAdmin role for ceph-rgw
ResellerAdmin role is used to give users object storage administration role
in their projects.

It is required to pass object storage quotas tests[1] of DefCore (OpenStack
Powered) certification test suite.

[1] tempest.api.object_storage.test_account_quotas*
Related-Bug: #1700729

Change-Id: Id976827aa7da271e54b77476f175f06bd1a00cc8
2018-08-08 14:10:10 +08:00
Zuul
e71df7dbae Merge "Enable rgw_swift_enforce_content_length" 2018-08-02 11:44:03 +00:00
Xinliang Liu
815c6b7589 Enable rgw_swift_enforce_content_length
Currently test_list_containers tempest tests[1] would be failed.
It is becuase accept-ranges header does not exist. See ceph bug[2].

Rgw_swift_enforce_content_length assures Content-Length and
Accept-Ranges in dynamically generated account & container listings.

[1] tempest.api.object_storage.test_account_services.AccountTest.test_list_containers
[2] http://tracker.ceph.com/issues/21554
Related-Bug: #1783456

Change-Id: I9b5fcc361f0bc0e521302d2df1974aabf6f4a7e7
2018-08-02 16:56:30 +08:00
Xinliang Liu
d37d050e60 Allow object versioning for ceph-rgw
Object versioning test[1] is required for RefStack test suite.
Swift has enabled it by default[2].
It is also needed for ceph-rgw.

[1]
tempest.api.object_storage.test_object_version.ContainerTest.test_versioned_container
[2] https://review.openstack.org/#/c/517281/

Related-Bug: #1729583
Change-Id: If89636f77d87bab75e8e7bcf16cc784e83184bc6
2018-07-30 16:45:40 +08:00
tone.zhang
2ce46e4767 Improve ceph-rgw compatibility with Swift API in Kolla-ansible
By default ceph-rgw is not completely comaptible with Swift API,
because of the restriction for Swift INFO API.[0]

The patch improve ceph-rgw compatibility with Swift API. It is
controlled by the option "ceph_rgw_compatibility" in
ansible/group_vars/all.yml.

After changing the option, run the "reconfigure" command to enable.

Closes-Bug: #1783456

[0] https://github.com/ceph/ceph/pull/17967

Change-Id: Ibf3eb52280e197965caef08a44ae226c4f884cb5
Signed-off-by: tone.zhang <tone.zhang@arm.com>
2018-07-25 18:09:23 +08:00
wu.chunyang
8cf67e9a87 Fix the ceph-mgr connect to cluster failed
For luminous, the ceph_mgr service provide the
dashborad for ceph, and it need connect to cluster,
but now it failed to connect ceph cluster due to
ceph.client.admin.keyring missing, this ps to fix it.

Co-Authored-By: chenqiaomin <chen.qiaomin@99cloud.net>
Closes-Bug: #1768462

Change-Id: Idb24661bc5674780db390220ca02e22975490663
2018-05-02 16:44:18 +08:00
caowei
0bc83d06f3 Implement ceph-nfs service
Change-Id: Ia909c62158acbec9d1dd926d45c66ac36e6b4244
Depends-On: I06325d4601128a0b5a2235370fa44012427c29e3
Implements: blueprint ceph-nfs-ganesha
2018-01-19 20:48:43 +08:00
Jeffrey Zhang
d11ba606d8 Implement ceph fs
Implements: blueprint cephfs
Change-Id: I5bf14a668a9e8976a18aa28a5bbfe586690bbd31
2018-01-13 13:44:17 +08:00
Jeffrey Zhang
8acb775548 Implement ceph-mgr service
ceph-mgr service is mandatory in ceph luminous

Depends-On: I875f84012a92d4f8b9dcb212d917cf61167270b8
Change-Id: I9418bf40a4bc3dcfc07c8b2eae17cb5779f5b444
Implements: blueprint ceph-luminous
2017-12-08 12:46:43 +08:00
Jeffrey Zhang
1cf116cd6c Use a separate user for ceph-rgw rather than keystone admin user
If not, change admin user password will break ceph rgw service.

Change-Id: Ia872f6f1aa2d9917d3f5851e0edcffed61e71355
Closes-Bug: #1705929
2017-07-27 16:41:41 +08:00
Jeffrey Zhang
cacf08f0a6 Remove all kolla-kubernetes configurations
kolla-kubernetes is using its own configuration generation[0], so it is
time for kolla-ansible to remove the related code to simplify the
logical.

[0] https://github.com/openstack/kolla-kubernetes/tree/master/ansible

Change-Id: I7bb0b7fe3b8eea906613e936d5e9d19f4f2e80bb
Implements: blueprint clean-k8s-config
2017-07-18 22:00:58 +08:00
Bertrand Lallau
afdd11b9a2 Generalize api_interface_address variable usage
Useful api_interface_address variable has been define here:
https://github.com/openstack/kolla-ansible/blob/master/ansible/group_vars/all.yml#L57
In order to simplify codebase we must use it as much as possible.

Change-Id: I18fec19bf69e05a22a4142a9cd1165eccd022455
2017-05-23 08:35:15 +00:00
Jeffrey Zhang
2947a95c29 Fix ceph log location
There are to parameter for ceph-mon/ceph-osd/radosgw, "-f" and "-d".

    -d run in foreground, log to stderr.
    -f run in foreground, log to usual location.

When log tin stderr, docker engine will collect the logs. It is useless
and we should write the log into file only. Then stop writing log to
stderr.

ceph-mon log location is controlled by "mon cluster log file".

Change-Id: I7883a4316420bc2bf4c772cb7248b663359f54b7
Closes-Bug: #1677237
2017-03-29 21:33:31 +08:00
Vladislav Belogrudov
25fcdfb986 Use default user group consistently
Default user group should be set much earlier in deployment
and should be used consistently accross all projects.

Change-Id: Id399f9ddebc903bb9c3eeb5a0ff6f33ca6d6828c
Closes-Bug: #1650501
2016-12-19 11:43:23 +03:00
junbo
d4f4134e35 Integrate ceph-rgw with keystone
this patch change ceph-rgw configuration and add object-store endpoint.

Co-Authored-By: zhubingbing <zhubingbing10@gmail.com>

Change-Id: I3ae4171c69bec52846c92a5e5618c12cf36d4409
Implements: blueprint radosgw-keystone-integration
2016-12-15 08:05:11 +00:00
Kevin Fox
08146dc3b6 Allow genconfig to work with kolla-kubernetes and ceph
TrivialFix

Change-Id: If3b975710425a88f5cc8df016a009e5e5b413ca5
2016-09-19 17:02:24 -07:00
Michal (inc0) Jastrzebski
0a50cb8889 Change ceph version to Jewel
This patch changes version of ceph from hammer to jewel. Also removed
versionlock as it seems we don't use it in ubuntu, and actually might be
risky if we miss security patch on ceph.

Change-Id: Ib8f88c2f914a4b635e59a509fa0194605eb73165
Implements: blueprint upgrade-ceph-to-jewel
2016-09-09 14:30:36 +00:00
Bartłomiej Daca
94410d23cd Change rgw frontend interface
Change the rgw frontend interface (from storage_interface to
api_interface) to make it consistent with the one specified in the
haproxy configuration.

Closes-Bug: #1603885
Change-Id: I8537f05575382faeac3ab915feaaad4af9b29565
2016-07-18 14:06:14 +02:00
Dave Walker (Daviey)
d5d04587f1 Revert "Fix radosgw 'rgw frontends' param"
The original commit changes ceph-rgw to listen on all
addresses (0.0.0.0:6780), which means that it listens on
both the storage_interface address and the VIP.

This makes it incompatible with having HAProxy on the same
host.

This reverts commit 819ae24b50ffda74e5b3a72f4c26321e7c9696cb.

Change-Id: I6cba31cc942a0be9f65d2f4847c8c2bc364a9c1e
Closes-Bug: 1596229
Signed-off-by: Dave Walker (Daviey) <email@daviey.com>
2016-06-25 23:19:26 +01:00
Jenkins
3f2a5bdadc Merge "Add a cluster_network interface when we use ceph" 2016-05-17 19:21:57 +00:00
weiyu
b071bb22c9 Add a cluster_network interface when we use ceph
Because of the consideration of security and performance, ceph community
recommend the use of two separate network public networks and cluster
networks. refer:
http://docs.ceph.com/docs/master/rados/configuration/network-config-ref/

DocImpact
Closes-Bug: #1582095
Change-Id: I8cb0e14f86c859820fbbb8af8f94ac8155338e13
2016-05-17 14:09:36 +08:00
Mauricio Lima
1a2fe93a95 Make Heka collect Ceph logs
Change-Id: Ibaa5f8ba600afafa111d2ef204ee9192b8babdfc
Closes-Bug: #1570529
2016-05-05 13:26:44 -04:00
Carlos Cesario
819ae24b50 Fix radosgw 'rgw frontends' param
Fix 'rgw frontends' param on ceph-rgw container.
After apply this patch the service starts
http://paste.openstack.org/show/495786/

Closes-Bug: #1576817
Change-Id: I434ca2a72c035f457bd50ef5de20e62f89974e0c
2016-05-02 08:32:04 -03:00
SamYaple
f4175f04d7 Fix 'optional' config.json values
These values are optional only when the services are not enabled.

If the file does not exist we should not warn, but rather inform.

Ceph-mon is an exception here since its bootstrap process means
the files may or may not exist initially.

TrivialFix

Change-Id: Ic02bece76d480e99deecf612036f37abb5604135
2016-03-19 23:01:27 +00:00
SamYaple
8e3cc9ae1e Compact ceph-mon files
Long running clusters will see there monitor files grow to large sizes

TrivialFix

Change-Id: Id7961514895cc0a797e1dd30bf29a18d7137ea42
2016-03-13 16:38:14 +00:00
SamYaple
7b6fbdf41d Remove storage_hostname
This was an attempt to get storage_interface to work properly but that
work will not be completed and functional this cycle. There are design
topics that need to be discussed about it that were brought to light
by the RAX gate failing for it.

TrivialFix

Change-Id: I65579f9e0e0dcf3fa51c0ea031ff474145457c40
2016-03-09 12:08:15 +00:00
SamYaple
1e2dfad50b Switch ceph to use storage network
Ceph was not properly using storage network.

TrivialFix

Change-Id: Ibf3da5d19cd2ca874d251b455a7eb856154fc3f7
2016-02-24 17:19:52 +00:00
SamYaple
33f3e1d8ca Update ceph-mon keyrings
Since the fetch script fetched _all_ keyrings from the ceph-mon
container, the ceph-mon container must contain all keyrings. This
setup works AIO but was broken on multinode because the ceph-mon
container did not have the radosgw keyring. This issue affects every
multinode install regardless of using the radosgw or not.

TrivialFix

Change-Id: Ie416de1a5275862da6d77ef0dd174e85e499fc0f
2016-01-28 17:47:30 +00:00
Andrey Shestakov
1a368c9134 Add RadosGW container
Implements blueprint radosgw-container

Change-Id: Idc88a67a0979be626d3eaa9b2b9a527010aa2006
2015-12-29 12:49:03 +00:00
OTSUKA, Yuanying
903c7d4c3f Fix retrieving api_interface
In heterogeneous environment, api_interfaces are different each other.
So we should specify it from hostvars.

Implements: bp configure-network-interface
Change-Id: Id15d70bfb9ebb62a64a3847a6b77407efb171dbe
2015-12-16 15:55:11 +09:00
Sam Yaple
94162bd08f Bring Kolla inline with FHS
This brings Kolla images inline with FHS and should make finding
locations of things more consistent and reliable with the linux world
at large.

Change-Id: Iece5b4da4bace0fb8b1f41a65ab2c852ec73e6f8
Closes-Bug: #1485742
2015-10-06 03:30:53 +00:00
Sam Yaple
5223965b61 Fix ceph after config-external removal
Change-Id: I46dc2f02dda8219878eee3755b0891f4c3450682
Partially-Implements: blueprint replace-config-external
2015-09-29 08:39:43 +00:00
Sam Yaple
83d195249e Convert ceph to json
Remove ceph debug info and unused partuuid

Change-Id: Ifbe9890979ee666d7e43a04376f36c41ae2d8add
Implements: blueprint ceph-container
Partially-Implements: blueprint replace-config-external
2015-09-28 10:35:52 +00:00
Sam Yaple
c86e66c9dc Ceph Ansible support
Add the initial playbooks for making ceph and ansible play nice
together.

This does not include all of the openstack changes to make things like
nova, glance, and cinder work. This will simply build the ceph cluster
and thats it. The next patchset will do the OpenStack integration.

DocImpact
Change-Id: Ie1697dde5f92e833652933a80f0004f31b641330
Partially-Implements: blueprint ceph-container
2015-09-24 12:33:43 +00:00