kayobe/ansible/overcloud-host-configure.yml
Mark Goddard cb48f7e5d2 Refactor host configure commands to use a single playbook
Ansible failure handling is different when executing multiple top-level
playbooks (CLI arguments) vs. multiple plays within a top-level
playbook. If any hosts have failed or are unreachable at the end of a
top-level playbook, then ansible-playbook exits non-zero.

In contrast, execution will continue at the end of a mid-playbook play
if there are hosts that have not failed or become unreachable. This is
documented in [1].

Currently, Kayobe executes multiple top-level playbooks, most notably in
the host configure commands where there is a long list of them. This has
implications when working at scale, where failures are more common. If a
host fails at any point, then execution of the command will stop at the
end of the current playbook. This means that the command must be run
again for all hosts. Additionally, if any hosts are unreachable, then
the command is unable to progress at all without removing them from the
inventory.

This change refactors the host configure and host upgrade commands to
use a single top-level playbook.

[1] https://github.com/markgoddard/ansible-experiments/tree/master/14-error-handling

Story: 2009854
Task: 44482

Change-Id: Ia63d66097b10b6ddda30ad693636143f8b1a85e0
2022-02-22 09:22:09 +00:00

27 lines
894 B
YAML

---
- import_playbook: "ssh-known-host.yml"
- import_playbook: "kayobe-ansible-user.yml"
- import_playbook: "proxy.yml"
- import_playbook: "apt.yml"
- import_playbook: "dnf.yml"
- import_playbook: "pip.yml"
- import_playbook: "kayobe-target-venv.yml"
- import_playbook: "wipe-disks.yml"
- import_playbook: "users.yml"
- import_playbook: "dev-tools.yml"
- import_playbook: "disable-selinux.yml"
- import_playbook: "network.yml"
- import_playbook: "firewall.yml"
- import_playbook: "tuned.yml"
- import_playbook: "sysctl.yml"
- import_playbook: "disable-glean.yml"
- import_playbook: "disable-cloud-init.yml"
- import_playbook: "time.yml"
- import_playbook: "mdadm.yml"
- import_playbook: "luks.yml"
- import_playbook: "lvm.yml"
- import_playbook: "docker-devicemapper.yml"
- import_playbook: "kolla-ansible-user.yml"
- import_playbook: "kolla-pip.yml"
- import_playbook: "kolla-target-venv.yml"