ceph-ansible has undergone significant refactoring in their v3
development, adding new required roles such as ceph-defaults and
ceph-config, which are used to provide vars and configuration to
the ceph service roles. These roles must be executed before the
service roles to avoid missing vars[1][2].
During the v3 refactoring, ceph-common was removed as a galaxy-style
role dependency in the service roles meta files[3]. This means we
will need to explicitly execute ceph-common from now on also.
This change adds the defaults and config roles and executes them.
Also some minor cleanup such as alphabetizing the OpenStack roles
list is done.
Also added is an upgrade playbook, reno, and docs to assist in
cleaning up the older galaxy-named ceph common roles which are
no longer galaxy namespaced in our cloning configuration.
[1] http://jenkins-logs.objects-us-dfw-1.cloud.lstn.net/osa-ci/490192/1/21/logs/console.log
[2] https://github.com/ceph/ceph-ansible/issues/1737
[3] https://github.com/ceph/ceph-ansible/pull/1727
Conflicts:
ansible-role-requirements.yml
Change-Id: Ia8c0cb0a23f331fce7914afbfc05ef54ee3ffb0e
(cherry picked from commit a53f1aea96
)
3.4 KiB
Playbooks
This section provides details about the playbooks that are used in
the upgrade process. Within the main scripts
directory there is an upgrade-utilities
directory,
which contains an additional playbooks directory. These playbooks
facilitate the upgrade process.
ansible_fact_cleanup.yml
This playbook calls a script to remove files in the
/etc/openstack_deploy/ansible_facts/
directory.
deploy-config-changes.yml
This playbook backs up the /etc/openstack_deploy
directory before changing the configuration.
The/etc/openstack_deploy
directory is copied once to the
directory.
user-secrets-adjustment.yml
This playbook ensures that the user secrets file is updated based on the example file in the main repository, making it possible to guarantee that all secrets move into the upgraded environment and are generated appropriately. This playbook adds only new secrets, such as those necessary for new services or new settings added to existing services. Values that were set previously are not changed.
pip-conf-removal.yml
The presence of the pip.conf
file locks down all Python
installations to packages on the repo servers. If this file exists on a
repo server or a physical node, it causes a circular dependency issue
and the upgrade fails. This playbook removes the file on all the repo
servers and physical nodes.
ceph-galaxy-removal.yml
The ceph-ansible common roles are no longer namespaced with a
galaxy-style '.' (ie. ceph.ceph-common
is now cloned as
ceph-common
), due to a change in the way upstream meta
dependencies are handled in the ceph roles. The roles will be cloned
according to the new naming, and an upgrade playbook
ceph-galaxy-removal.yml
has been added to clean up the
stale galaxy-named roles.
setup-infrastructure.yml
The playbooks
directory contains the
setup-infrastructure.yml
playbook. The
run-upgrade.sh
script calls the
setup-insfrastructure.yml
playbook with specific arguments
to upgrade MariaDB and RabbitMQ.
For example, to run an upgrade for both components at once, run the following commands:
# openstack-ansible setup-infrastructure.yml -e 'rabbitmq_upgrade=true' \
-e 'galera_upgrade=true'
The rabbitmq_upgrade
variable tells the
rabbitmq_server
role to upgrade RabbitMQ.
Note
The RabbitMQ server role installs patch releases automatically,
regardless of the value of rabbitmq_upgrade
. This variable
controls the upgrade of only the major or minor versions.
Upgrading RabbitMQ in the release is optional. The
run-upgrade.sh
script does not automatically upgrade it. To
upgrade RabbitMQ, insert the rabbitmq_upgrade: true
line
into a file, such as
/etc/openstack_deploy/user_variables.yml
.
The galera_upgrade
variable tells the
galera_server
role to remove the current version of MariaDB
and Galera and upgrade to the 10.x series.
memcached-flush.yml
This playbook sends the flush_all
command to Memcached
with the help of netcat.