Skip to content

Commit

Permalink
Cleanup role and playbook for tripleo services
Browse files Browse the repository at this point in the history
Tests and docs included

Signed-off-by: Jiri Podivin <[email protected]>
  • Loading branch information
jpodivin committed May 6, 2024
1 parent 85586df commit 0385b43
Show file tree
Hide file tree
Showing 15 changed files with 290 additions and 0 deletions.
10 changes: 10 additions & 0 deletions docs/source/playbooks/tripleo_cleanup.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
==========================
Playbook - tripleo_cleanup
==========================

Stops and disables all tripleo services running on target hosts.
Heuristic based on systemd unit name pattern matching is used to determine
which services should be stopped and disabled.

.. literalinclude:: ../../../playbooks/tripleo_cleanup.yml
:language: YAML
13 changes: 13 additions & 0 deletions docs/source/roles/role-edpm_tripleo_cleanup.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
================================
Role - edpm_tripleo_cleanup
================================

Role stops and disables all systemd units enumerated to it.
If the role doesn't recieve list of services, it will instead stop and disable
all units containing string "tripleo" in their name.

This way we can effectivelly prevent any leftovers of original tripleo based
deployment from interfering with post-adoption setup.

.. include::
../collections/osp/edpm/edpm_tripleo_cleanup_role.rst
27 changes: 27 additions & 0 deletions playbooks/tripleo_cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.


- name: Cleanup Tripleo services
hosts: "{{ edpm_override_hosts | default('all', true) }}"
strategy: linear
gather_facts: true
any_errors_fatal: "{{ edpm_any_errors_fatal | default(true) }}"
max_fail_percentage: "{{ edpm_max_fail_percentage | default(0) }}"
tasks:
- name: Stop and disable Tripleo services
ansible.builtin.import_role:
name: osp.edpm.edpm_tripleo_cleanup
20 changes: 20 additions & 0 deletions roles/edpm_tripleo_cleanup/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.


# All variables intended for modification should be placed in this file.

edpm_old_tripleo_services: []
28 changes: 28 additions & 0 deletions roles/edpm_tripleo_cleanup/meta/argument_specs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

argument_specs:
# roles/edpm_tripleo_cleanup/tasks/main.yml entry point
main:
short_description: The main entry point for the edpm_tripleo_cleanup role.
options:
edpm_old_tripleo_services:
type: "list"
description: |
List of tripleo services to be disabled and stopped.
If the list is empty, all services containing string 'tripleo'
in their names will be disabled and stopped.
default: []
43 changes: 43 additions & 0 deletions roles/edpm_tripleo_cleanup/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.


galaxy_info:
namespace: openstack
author: OpenStack
description: EDPM OpenStack Role -- edpm_tripleo_cleanup
company: Red Hat
license: Apache-2.0
min_ansible_version: '2.9'
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
platforms:
- name: 'EL'
versions:
- '8'
- '9'

galaxy_tags:
- edpm


# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.
dependencies: []
3 changes: 3 additions & 0 deletions roles/edpm_tripleo_cleanup/molecule/default/collections.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
collections:
- name: community.general
8 changes: 8 additions & 0 deletions roles/edpm_tripleo_cleanup/molecule/default/converge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- name: Converge
hosts: all
roles:
- role: "osp.edpm.edpm_tripleo_cleanup"
vars:
edpm_old_tripleo_services:
- fake-tripleo-service
31 changes: 31 additions & 0 deletions roles/edpm_tripleo_cleanup/molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
dependency:
name: galaxy
driver:
name: delegated
options:
managed: false
ansible_connection_options:
ansible_connection: local
platforms:
- name: compute-1
groups:
- compute
provisioner:
name: ansible
inventory:
hosts:
all:
hosts:
compute-1:
ctlplane_ip: 10.0.0.3
canonical_hostname: edpm-0.localdomain
verifier:
name: ansible
scenario:
test_sequence:
- destroy
- create
- prepare
- converge
- verify
40 changes: 40 additions & 0 deletions roles/edpm_tripleo_cleanup/molecule/default/prepare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
- name: Prepare test_deps
hosts: all
roles:
- role: ../../../../molecule/common/test_deps
test_deps_extra_packages:
- podman
tasks:
- name: Create mock service
become: true
ansible.builtin.copy:
src: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}/test-data/fake-tripleo-service.service"
dest: /usr/lib/systemd/system/fake-tripleo-service.service
mode: '0644'

- name: Enable mock service
become: true
ansible.builtin.systemd_service:
name: fake-tripleo-service
enabled: true

- name: Start mock service
become: true
ansible.builtin.systemd_service:
name: fake-tripleo-service
state: started
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Unit]
Description=Fake tripleo service

[Service]
ExecStart=/usr/bin/true

[Install]
WantedBy=multi-user.target
10 changes: 10 additions & 0 deletions roles/edpm_tripleo_cleanup/molecule/default/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
- name: Verify
hosts: all
tasks:
- name: Get all services
ansible.builtin.service_facts:
- name: Fail if the fake-tripleo-service is not disabled and stopped
ansible.builtin.fail:
msg: "fake-tripleo-service is not in desired state {{ ansible_facts.services['fake-tripleo-service.service'] }}"
when: ansible_facts.services["fake-tripleo-service.service"].state != "inactive" or ansible_facts.services["fake-tripleo-service.service"].status != "disabled"
43 changes: 43 additions & 0 deletions roles/edpm_tripleo_cleanup/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
# Copyright 2024 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

- name: Set list of tripleo services
tags:
- adoption
ansible.builtin.set_fact:
tripleo_services: "{{ edpm_old_tripleo_services }}"

- name: Discover tripleo services
tags:
- adoption
when: tripleo_services | length == 0
block:
- name: Get all services
ansible.builtin.service_facts:
- name: Filter for tripleo services
ansible.builtin.set_fact:
tripleo_services: "{{ ansible_facts.services.keys() | select('contains', 'tripleo') }}"

- name: Stop and disable tripleo services
tags:
- adoption
become: true
ansible.builtin.systemd_service:
name: "{{ item }}"
state: stopped
enabled: false
masked: true
loop: "{{ tripleo_services }}"
5 changes: 5 additions & 0 deletions zuul.d/jobs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,8 @@
parent: edpm-ansible-molecule-base
vars:
TEST_RUN: edpm_ovs
- job:
name: edpm-ansible-molecule-edpm_tripleo_cleanup
parent: edpm-ansible-molecule-base
vars:
TEST_RUN: edpm_tripleo_cleanup
1 change: 1 addition & 0 deletions zuul.d/projects.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
- edpm-ansible-molecule-edpm_iscsid
- edpm-ansible-molecule-edpm_ovn_bgp_agent
- edpm-ansible-molecule-edpm_ovs
- edpm-ansible-molecule-edpm_tripleo_cleanup

0 comments on commit 0385b43

Please sign in to comment.