This is not possible when running multihost ansible.
Essentially this should've been part of #1476293.
Change-Id: I53baccf5f89e71ce1313524815f928ea04908a05
Partitially-Implements: blueprint ansible-service
If user specifies registry a full image name is constructed by
concatenation of the registry, namespace and image. Currently
concatenation does not include '/' if registry is non-empty but
it should. If registry is empty '/' is not required.
This fix covers both use cases with help of Ansible filter.
Change-Id: I0588dd0da55d777e6caa7eb47d51b2435d38d5e0
Closes-Bug: #1479013
Additionally, make each service optional witha config option allowing
for extreme flexibility should the deployer want to replace a service
with a non-kolla one (the database for example).
Change-Id: I7b644da7cfa7e8e6b6878eb1b1aa97db830504ae
Closes-Bug: #1478509
The original purpose for having an abstract like 'database' rather than
the service name of 'mariadb' has been change. Our direction is different
and this patch reflects consistent naming throughout
Change-Id: I704896191cc5243f9dab2a4cca9120e9dc2ceb2c
Closes-Bug: #1478328
Adds the needed ansible bits to support keepalived
Closes-Bug: #1479934
Change-Id: Iace29b23a0e923b1f5dc9a4f5bc0f88afce3ae62
Partially-Implements: blueprint ansible-service
This commit consists HAProxy ansible bits including config generation,
container deployment and hot reloads.
Closes-Bug: #1477915
Co-Authored-By: Sam Yaple <sam@yaple.net>
Change-Id: Ie93fa68fdb6b2885889c992ff1267d38b68e0cbc
Partially-implements: blueprint ansible-service
This binds rabbitmq, epmd, and the management plugin to a single ip. The
syntax is very tricky, but this is all functional.
Change-Id: Iecbb00f6c4fe3044688ae3258da31b9aabbd1501
Closes-Bug: #1478073
This just fails when not running as root.
Change-Id: Ic3fc55d519c6165df917cf333a38907232fe3ed7
Partitially-Implements: blueprint ansible-service
Closes-bug: #1476293
This makes some changes to init-runonce to allow using Ansible as well as
updating it to use the openstack-client where applicable since the
keystone-client is not usable with keystone v3 api at all.
Change-Id: I6b9d6beb04df7724b1967638e98042ab03221cd1
Closes-Bug: #1477725
neutron-server was not properly using ml2_conf.ini
nova did not have ovs utils, and it had incorrect libvirt permissions
Change-Id: I43d2110d0b5fc1940d887dace95787e1ebbe142d
Partitially-Implements: blueprint ansible-service
The ml2_conf.ini file which sets OpenVswitch as the mechanism driver
was not being copied to the corect place. This patch resolves that
problem.
Change-Id: Ia276916a3183564c9b7d8d6aa9595c384ed99cf6
Closes-Bug: #1477399
The neutron-agents l3 agent requires access to the OVS database via
access to /run. It also needs to have ovs-vsctl binary available in
the container.
Change-Id: I903537b570cd60c9bb1088e9408a5f6ea4988d8f
Closes-Bug: #1477376
Ansible will exec a script in the OVS container to ensure the bridge and
ports are properly setup. The script is idempotent.
Change-Id: I5adca595a4d2ef4edf26c9635cfa5ceb30ca4a59
Closes-Bug: #1466375
Libvirt requires pid_mode to Host to operate on Fedora Hosts. Further
we will need this for libvirt upgrade. I am not entirely sure why
libvirt running with pid=host gets things working, but it definately
has something to do with CentOS's libvirt's integration with systemd.
Nailing down the problem, the interface to the Docker module accepts only
None or "host". There is no way to generate a None type except with !!null
in yml, but this does not work in the jinja2 parser. As a result, one
solution is this conditional. A better long term solution would be for
the Docker module to take some other argument to indicate None that can
be expressed in a string.
Change-Id: I54eb87e8ce8679bbf12f671527280c73e195b2e4
Closes-Bug: #1473270
The commands used to create a temporary file on the localhost were
vulnerable to a symlink attack. Removing the shell module and ensuring
the ansible copy and file module is used will verify this file exists as a
file with the correct permissions and ownership
Change-Id: I829483edf1435e41726ebfe1bc826e0c2e5265e3
Closes-Bug: 1471376
Due to the licensing issues and the modules not existing in upstream
Ansible yet, I have written a simple module to fill the gaps.
This also uses Keystone v2.0 for all create of users, roles and
endpoints. The implementation of Keystone v3 must be discussed after the
new modules arrive.
Partially-Implements: blueprint ansible-service
Change-Id: I389edd56741360dd26fbbc0a982f365ca27ff446
AIO nodes had an address in the gcomm list which would prevent AIO
containers from starting appropriately.
Change-Id: I6db8c831ef9f9c0348748eb9539db326dc0df048
Closes-Bug: #1472481
Additionally fixed bootstrap issue caused by an ansible bug in some
versions of the docker module.
Closes-Bug: #1472270
Change-Id: Ia5a370db5ab7690854afcd63492ba7dbbea29835
Due to a few issue that exist between keystone v3 and v2.0 the endpoint
needs to be created as v2.0. If it is created as v3, v2.0 queries will not
see the endpoint.
https://bugs.launchpad.net/keystone/+bug/1470635
Change-Id: Ie7ff88b8cbb23b3ca149cb6e8d5a18a427d22038
Partially-Implements: blueprint ansible-service
This will switch config-external to using wsgi vs evenlet for keystone.
Partially Implements: blueprint ansible-service
Change-Id: I85a88c813ed36d827916796199dad735b2d44b40
Adds initial support for Rabbitmq in Ansible using the CONFIG_EXTERNAL methods.
Additionally, this refactors some of the Rabbitmq config script to allow for
reuse by CONFIG_EXTERNAL.
Partially Implements: blueprint ansible-service
Change-Id: I1765548f7e4f1258eb8a49e2a23242955f52655d
Adds initial support for Mariadb with Galera replication in Ansible
using the CONFIG_EXTERNAL methods.
Additionally, this refactors some of the Galera config script to allow
for reuse by CONFIG_EXTERNAL.
Partially Implements: blueprint ansible-service
Change-Id: I566fea0376ecca39fc8a5167f9ff9ff434ea7b7e
Add set_configs function that implements the flow from the proposed
ansible-multi spec. Move start.sh to config-internal.sh to preserve existing
behaviour.
config-externall.sh copies the appropriate configs in from the bind'd
location and sets permissions and ownership appropriately.
Partially Implements: blueprint ansible-multi
Change-Id: I53fca0660451087f273fefc3c63e0d8cf1a2c096
This ansible module for docker-compose allows for idempotency. I have
submitted a pull request upstream to ansible-modules-extra to include
this new module. When/if the module is accepted upstream if can be
removed from the local module library.
The two playbooks have been updated to use this module. The database
data container does not support idempotency due to the fact that it
exists instead of sleeps. Therefore each time `docker-compose up` is
called, it will start the container and register a change. The
message-broker does not have this issue and will remain unchanged even
repeatedly running these playbooks.
Due to the use of a special branch of docker-compose provided by sdake,
this module requires at least docker-compose==1.2.0rc1
Change-Id: If1644eaa3bff0c2a007fa2d479a95bea941945f6
This adds a very basic structure to begin supporting ansible in Kolla.
Ansible can support complete idempotency, but wrapping docker-compose
does not allow idempotency at this time. These playbooks will be
extended to compensate for that in future patches.
Change-Id: I1c9e8d32321e2733f5a9b752edf74b4fe90317ed