55 Commits

Author SHA1 Message Date
Alexis Deberg
5f4c71ee0f Update swift templates to support swift_extra_ring_files
Change-Id: Ie594f6cdbe332d64d3461d84da730111d0db5cf1
Related-Bug: #1844752
2019-10-24 12:31:43 -04:00
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
Mark Goddard
3488479d06 Fix swift-proxy-server memcached configuration
Currently, swift-proxy config uses hosts in the swift-proxy-server group
to generate the list of memcached servers. However, memcached is
deployed to hosts in the memcached group.

This change fixes the memcached_servers option for swift-proxy to be the
same as other services.

Change-Id: Ib850a1bb2a504ac3e1396846ca3f1d9a30e8fca0
Closes-Bug: #1774313
2019-10-07 09:22:27 +01:00
Scott Solkhon
d463d3f7bf Enable Swift Recon
This commit adds the necessary configuration to the Swift account,
container and object configuration files to enable the Swift recon
cli.

In order to give the object server on each Swift host access to the
recon files, a Docker volume is mounted into each container which
generates them. The volume is then mounted read only into the object
server container. Note that multiple containers append to the same
file. This should not be a problem since Swift uses a lock when
appending.

Change-Id: I343d8f45a78ebc3c11ed0c68fe8bec24f9ea7929
Co-authored-by: Doug Szumski <doug@stackhpc.com>
2019-09-12 11:45:02 +01:00
Scott Solkhon
d72b27f2d1 Add support for Swift S3 API
This feature is disabled by default, and can be enabled by setting
'enable_swift_s3api' to 'true' in globals.yml.

Two middlewares are required for Swift S3 - s3api and s3token. Additionally, we
need to configure the authtoken middleware to delay auth decisions to give
s3token a chance to authorise requests using EC2 credentials.

Change-Id: Ib8e8e3a1c2ab383100f3c60ec58066e588d3b4db
2019-08-14 09:55:35 +00:00
Scott Solkhon
a781c64319 Support separate Swift storage networks
Adds support to seperate Swift access and replication traffic from other storage traffic.

In a deployment where both Ceph and Swift have been deployed,
this changes adds functionalality to support optional seperation
of storage network traffic. This adds two new network interfaces
'swift_storage_interface' and 'swift_replication_interface' which maintain
backwards compatibility.

The Swift access network interface is configured via 'swift_storage_interface',
which defaults to 'storage_interface'. The Swift replication network
interface is configured via 'swift_replication_interface', which
defaults to 'swift_storage_interface'.

If a separate replication network is used, Kolla Ansible now deploys separate
replication servers for the accounts, containers and objects, that listen on
this network. In this case, these services handle only replication traffic, and
the original account-, container- and object- servers only handle storage
user requests.

Change-Id: Ib39e081574e030126f2d08f51de89641ddb0d42e
2019-03-14 14:00:18 +00:00
Jim Rollenhagen
31ed556e67 Allow swift proxy server to use independent hostnames
This allows swift service endpoints to use custom hostnames, and adds the
following variables:

* swift_internal_fqdn
* swift_external_fqdn

These default to the old values of kolla_internal_fqdn or
kolla_external_fqdn.

This also adds a swift_proxy_server_listen_port option, which defaults to
swift_proxy_server_port for backward compatibility.

This option allow the user to differentiate between the port the
service listens on, and the port the service is reachable on. This is
useful for external load balancers which live on the same host as the
service itself.

While we're in here, use the ``internal_protocol`` variable for the swift
endpoint in cinder's swift backup driver configuration, instead of hardcoding
to ``http``.

Change-Id: Ibc01618383c26e16c0067f7f6b9cf5160d968d1e
Implements: blueprint service-hostnames
2019-03-06 15:08:28 -05: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
Zuul
003a6a12b1 Merge "remove uid, gid from rsyncd.conf for swift user" 2018-07-20 08:43:56 +00:00
Zuul
57c9155004 Merge "Added delay_auth_decision config option for swift" 2018-07-18 17:07:01 +00:00
Minho Ban
ecc1e4a6eb remove uid, gid from rsyncd.conf for swift user
The rsync prior to v3.1.0 the uid/gid parameter have no effect at
all if it runs as normal(non-root) user.

Since v3.1.0 these parameter are problematic for normal user
because now rsync, regardless of root or non-root, if the
parameters are given then it just tries to call setgroups() which
is not possible for normal user so errors may occur.

    swift-object-replicator: @ERROR: setgroups failed\u0000
    swift-object-replicator: rsync error: error starting
    client-server protocol (code 5) at main.c(1648)
    [sender=3.1.2]\u0000

Either way, these parameters are not needed for swift-rsync
container.

Change-Id: Ia7fe9f06d7a21a55f52b90c2cc1b2498300e6532
Signed-off-by: Minho Ban <mhban@samsung.com>
2018-07-18 09:17:12 +09:00
fan_guiju
420b523f31 Added delay_auth_decision config option for swift
The authtoken config variable delay_auth_decision must be set to True.
The default is False, but that breaks public access, StaticWeb, FormPost,
TempURL, and authenticated capabilities requests (using Discoverability).

Change-Id: I420a95f5f9fda3321a4acfc5846e40294a8bd588
Closes-Bug: #1768795
2018-07-04 23:11:40 -04:00
tone.zhang
cebb77d7e2 Make Swift log_level changeable
The log_level in Swift is fixed to INFO. The patch make it changeable
according to the value of "openstack_logging_debug".

When "openstack_logging_debug" is "False", the log_level is set to
"INFO". It is default value. Otherwise, the log_level is set to
"DEBUG".

Closes-Bug: #1777982

Change-Id: I62f430abd8f332cc2ece56a6733776fa03b10f77
Signed-off-by: tone.zhang <tone.zhang@arm.com>
2018-06-21 14:02:04 +08:00
Vladislav Belogrudov
d5fd744409 Swift configuration misses quotas to pass DefCore
Swift configuration needs container and account quotas to
pass 'OpenStack Powered' certification test suite

Co-Authored-By: Alexander Reunov <alexander.reunov@oracle.com>
Change-Id: I7a31315754cbb46257d3d98379daa39d32205480
Closes-Bug: #1757451
2018-03-21 14:47:00 +00:00
Paul Bourke
859e88ce4c Add tempurl to swift pipeline
This is required for some tempest tests and in turn to achieve 100%
refstack certification for clouds deployed by Kolla. tempurl is default in
Swift[0] but we're missing as we override the pipeline.

[0] https://github.com/openstack/swift/blob/\
    b86bf15a644db4438770801a312fe074a09c91ef/\
    etc/proxy-server.conf-sample#L97

Change-Id: I0e36fcd7a785f878005d51159eb51725c284229c
2017-12-13 12:21:40 +00:00
Zuul
822a3994fd Merge "Update swift templates for rsync_module" 2017-12-07 10:41:28 +00:00
Zuul
7576dcc44c Merge "Update swift for replication issues" 2017-11-29 11:13:41 +00:00
James McCarthy
3245201af1 Update swift for replication issues
There are corresponding image changes to go with these ansible
changes - changes in rsyncd template, and add
environment settings for RSYNC_CONNECT_PROG (i.e. nc)

nc allows for rsync replication to easily target {{ swift_rsync_port }}

update the lock file and chroot settings in template - see bug
for more details.

Change-Id: Ic81b7de8fad8aec9416e4e27e8ffda6d03be293c
Closes-Bug: #1733851
2017-11-24 14:49:38 +00:00
Andrew Smith
fd1d3af0df Add support for hybrid messaging backends
This commit separates the messaging rpc and notify transports in order
to support separate and different oslo.messaging backends

This patch:
* add rpc and notify variables
* update service role conf templates
* add example to globals.yaml
* add release note

Implements: blueprint hybrid-messaging
Change-Id: I34691c2895c8563f1f322f0850ecff98d11b5185
2017-11-22 14:09:40 -05:00
James McCarthy
4cac847f6c Update swift templates for rsync_module
With the current templates, the rsync_module is left as the default value,
which has not {meta} included. Setting sync_module has no effect.

References:
https://github.com/openstack/swift/blob/master/etc/container-server.conf-sample
https://github.com/openstack/swift/blob/master/swift/obj/replicator.py#89

Change these templates to set rsync_module instead.

Change-Id: I14773a09013b90dd2dd68110173eab1d3ccec3de
2017-11-20 18:17:03 +00:00
Vladislav Belogrudov
33513db407 Allow object versioning by default
Object versioning is necessary to pass DefCore test suite,
i.e. allows Kolla version of OpenStack to be certified
as "OpenStack Powered Platform".

Change-Id: Id5003f7fe2aebdeffe1cf7ce1b6177a6bca8f5b6
Co-Authored-By: Alexander Reunov <alexander.reunov@oracle.com>
Closes-Bug: #1729583
2017-11-02 14:48:14 +03:00
Tatsuma Matsuki
03354bc99e Add fluentd enable option
This change adds enable_fluentd option and enables some other log shippers
to be integrated. When enable_fluentd is "no", syslog server is also disabled.
Then, this change also adds syslog parameters to use a syslog server
prepared by users.

Change-Id: I7c83ef7fe30a6b9ab7385bcee953ad07e96b0a83
Implements: blueprint fluentd-enable-option
2017-09-28 04:36:36 +00:00
Bertrand Lallau
372e991bec Standardize Keystone domain variables
As described here:
https://github.com/openstack/keystone/blob/master/keystone/resource/core.py#L841
https://github.com/openstack/keystone/blob/master/keystone/conf/identity.py#L21

* default project domain name MUST be named 'Default'
* default project domain id MUST be named 'default'
* default project user name MUST be named 'Default'
* default project user id MUST be named 'default'

Change-Id: I610a0416647fdea31bb04889364da5395d8c8d74
2017-07-06 14:34:11 +00:00
Vladislav Belogrudov
0ffa770b83 Always create ResellerAdmin role for Swift
ResellerAdmin role should be created always when Swift is enabled
and not only for Ceilometer. The role is needed for normal users
to get administration rights for their Swift projects and is
required to pass DefCore (OpenStack Powered) certification.

Change-Id: I4faa63b8fae1814e382de2794301248cc0f4a90a
Closes-Bug: #1700729
2017-06-27 12:34:15 +03:00
Jenkins
b378e0e3c0 Merge "Fix invalid literal for int in swift_proxy_server" 2017-06-02 09:34:03 +00: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
shaofeng_cheng
f6ed0d9f7c Fix invalid literal for int in swift_proxy_server
If enable swift and ceilometer.

Swift_proxy_server container start error

ValueError: invalid literal for int() with base 10: '5672driver = messagingv2'

Change-Id: Iff9135bfeece158de1c7159a51286cfe4da25ac4
Closes-Bug: #1691633
2017-05-18 12:02:43 +08:00
shaofeng_cheng
a2568df906 Fix ceilometer meters for swift service
Enable Object Storage meters by ceilometer.
see
https://docs.openstack.org/project-install-guide/telemetry/draft/swift/install-swift-ubuntu.html

Change-Id: Ic80e02eacbe502280e09de6b845c0c7475273d6e
Closes-Bug: #1668826
2017-04-13 10:06:44 +08:00
jangseon ryu
67aee9f8a2 This feature is supporting for workers config in swift servers.
Currently it doesn't work in swift servers such as proxy-server,
object-server, account-server and container-server, in spite of
setting openstack_service_workers config in globals.yml.

Because it's not implement about workers in swift.

Closes-Bug: #1662751

Change-Id: Iae9a12952cd3fe285eed3d8fca2e667a68de15c7
Signed-off-by: jangseon ryu <jangseon.ryu@navercorp.com>
2017-02-03 20:52:10 +00:00
Jenkins
2b37e3b871 Merge "Add fluentd role" 2017-01-24 12:54:12 +00:00
zhubingbing
d3d4a933be Add fluentd role
* add fluentd role
* remove heka configure

Co-Authored-By: yangzb09 <yangzb09@qq.com>

Partially-Implements: blueprint add-fluentd-role

Change-Id: Ica804a99f5bb8b157f406299c5982b7b6283b3e3
2017-01-24 07:44:59 +00:00
Eduardo Gonzalez
a18174b3b4 Unify jinja syntax
Change-Id: I63197f8c5646e44a9a7287e644c904a1e227af23
2017-01-12 10:52:44 +00: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
James McCarthy
66e17f6a4b Swift data transfer should not be using the API Network
The account, container, and object templates were incorrectly
using the api_interface as their bind_ip configuration setting.

Updated these templates to instead use the storage_interface.

Change-Id: I683102096cd6aa3c77a7900f5a1a248cdcddba42
Note: Rings must be generated accordingly.
2016-12-06 21:05:55 +00:00
Eduardo Gonzalez
775d8019b6 Add custom policies in service.json
Include custom policy.json files in service-api.json.j2 files

Change-Id: Ic55bfc6f61131aa72c3497ce8b2282056bcc7f92
Partially-Implements: blueprint custom-policies
2016-12-02 16:22:17 +00:00
James McCarthy
790c6b2a9f Adjust object-replicator heading within object.conf.j2 template.
The swift-object-auditor logs many complaints of missing
object-replicator configuration, as this section is undefined.

Move the header outside of the == 'swift-object-replicator' check,
so other services will get an empty section to stop complaints.

TrivialFix
Closes-Bug: #1637561
Change-Id: I9c8d960b0c31e448afdeaac5f3d38e1be5ff965d
2016-10-28 16:44:14 +01:00
Serguei Bezverkhi
d553514cb7 Configures swift-rsyncd to use non-default port
This PS configures swift-rsyncd process to use non-default port
from the range above 1024.

Change-Id: I7c37c548a5185a2ffac789383fe012619e401131
Closes-Bug: #1573137
2016-04-21 12:54:30 -04:00
SamYaple
d4535b6dc3 Add memcached_servers to keystone_auth section
The in-process cache for keystone tokens has been deprecated due to
"incosistent results and high memory usage" with the expectation we
switch to memcached_servers if we want to stay performant.

Add memcache_servers [cache] section to the appropriate servers as the
[DEFAULT]\memcache_servers options was deprecated.

TrivialFix
Related-Id: Ied2b88c8cefe5655a88d0c2f334de04e588fa75a

Change-Id: Ic971bdddc0be3338b15924f7cc0f97d4a3ad2440
2016-03-19 21:53:03 +00:00
SamYaple
d3cfb2052a Change kolla_internal_address variable
Due to poor planning on our variable names we have a situation where
we have "internal_address" which must be a VIP, but "external_address"
which should be a DNS name. Now with two vips "external_vip_address"
is a new variable.

This corrects that issue by deprecating kolla_internal_address and
replacing it with 4 nicely named variables.

kolla_internal_vip_address
kolla_internal_fqdn
kolla_external_vip_address
kolla_external_fqdn

The default behaviour will remain the same, and the way the variable
inheritance is setup the kolla_internal_address variable can still be
set in globals.yml and propogate out to these 4 new variables like it
normally would, but all reference to kolla_internal_address has been
completely removed.

Change-Id: I4556dcdbf4d91a8d2751981ef9c64bad44a719e5
Partially-Implements: blueprint ssl-kolla
2016-02-26 20:00:09 +00:00
Éric Lemoine
e6a9b9627a Fix Swift logging
Swift uses Syslog, but it uses a custom log format.  So this commit
adds a specific Heka decoder for Swift.

It also increases the log level from "warning" to "info" to make
Swift more verbose.  Note that "info" is the default log level in
Swift.

And it disables the Heka configuration for Swift when "enable_swift"
is set to "no".  This prevents Heka from creating 15 empty Swift log
files in the logs volume.

Partially implements: blueprint heka

Change-Id: If7a7d0707e71be2957178e2d45b5de51b788232e
2016-02-22 08:53:20 -08:00
Éric Lemoine
88633684a1 Make Heka collect Swift logs
Partially implements: blueprint heka
Change-Id: I893a0c4a4cab9d4d98821634ddd2ff67015c4e3f
2016-02-19 21:56:05 +00:00
Dave McCowan
1cedf77f19 Use variables to specify http or https when constructing URLs
To allow for TLS to protect the service endpoints, the protocol
in the URLs for the endpoints will be either http or https.

This patch removes the hardcoded values of http and replaces them
with variables that can be adjusted accordingly in future patches.

Change-Id: Ibca6f8aac09c65115d1ac9957410e7f81ac7671e
Partially-implements: blueprint ssl-kolla
2016-02-15 09:48:58 -05:00
Wanlong Gao
181b4947dd Use auth_type instead of deprecated auth_plugin
TrivialFix

Change-Id: I33924d6de43126ff8523883eebce703c976f9a1a
2016-01-16 07:44:14 +08:00
Jenkins
027e70f9a2 Merge "Simplify config creation" 2015-12-23 13:19:08 +00:00
SamYaple
ed82afa8e9 Simplify config creation
Convert config creation from a playbook to an action_plugin. This
reduces the complexity and confusion while retaining the same augment
structure and flexibility.

This allows us to remove the 0-byte files as requirements. They will
still be used if they are present (this means we require additional
documentation around them).

DocImpact
Closes-Bug: #1528430
Change-Id: I2c789f6be9f195c7771ca093a6d59499564b4740
2015-12-22 04:28:53 +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
Michal Rostecki
febcb600f1 Source installation in virtualenv
Use virtualenv for installation of OpenStack projects and
dependencies to avoid conflicts with Python libraries installed
by non-OpenStack binary packages.

Change-Id: I21ecd673b2e93335b1d3dd4e279e940c9d694c3c
Implements: blueprint virtualenv
2015-11-27 10:22:17 +01:00
Paul Bourke
71fbf63c88 Swift JSON files looking for rings in the wrong place
For Swift, the *.json.j2 templates are looking under
{{ container_config_directory }} whereas they need to be looking in the
common location for swift which is /var/lib/kolla/swift

Change-Id: I6f0dcbc9a705b36d1d98275ba9ebc56404fe882d
backport: liberty
Closes-Bug: #1504210
2015-10-08 17:08:56 +00: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
Michal Jastrzebski
16341f1eec Swift logging to rsyslog
Configure swift to use rsyslog container as logging mechanism

Change-Id: Idef2904976651e8f5bc36d406259d9dc487949dd
Implements: bp logging-container
2015-09-25 00:51:26 +02:00