move roles, files and templates dirs out of playbook dir into root dir

Because of how Ansible local relative search paths work, the global
"files" and "templates" directories need to be next to the playbooks.
However its not intuitive to look into the "playbooks" directory to find
the files and templates for a host.
Therefore move them out of the "playbooks" directory into the root
directory and add symlinks so everything still works.

Similarly for local roles, they also need to be next to the playbooks.
So for a nicer structure, move the "roles" directory out into the root
directory as well and add a symlink so everything still works.

Also see:
https://docs.ansible.com/ansible/latest/playbook_guide/playbook_pathing.html#resolving-local-relative-paths
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#storing-and-finding-roles
This commit is contained in:
June 2024-12-02 03:34:55 +01:00
parent 2460c31e78
commit f16f8697c2
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0
147 changed files with 3 additions and 0 deletions
roles/distribution_check

View file

@ -0,0 +1,13 @@
# Role `distribution_check`
This role checks if the distribution of the hosts is supported (part of the provided distribution support spec.) and fails if it's not.
If a hosts distribution and either an accompanying distribution version, major version or release is supported, the role doesn't fail for the host in question.
## Required Arguments
For the required arguments look at the [`argument_specs.yaml`](./meta/argument_specs.yaml).
## `hosts`
The `hosts` for this role need to be the machines for which you want to make sure their distribution is supported.

View file

@ -0,0 +1,28 @@
argument_specs:
main:
options:
distribution_check__distribution_support_spec:
description: A spec specifying the supported distribution.
type: list
elements: dict
required: true
options:
name:
description: The name of the supported distribution.
type: str
required: true
versions:
description: The supported versions of the supported distribution.
type: list
elements: str
required: false
major_versions:
description: The supported major versions of the supported distribution.
type: list
elements: str
required: false
releases:
description: The supported releases of the supported distribution.
type: list
elements: str
required: false

View file

@ -0,0 +1,53 @@
- name: set fact holding list of supported distribution names
ansible.builtin.set_fact:
distribution_check__supported_distribution_names: "{{ distribution_check__distribution_support_spec
| community.general.json_query('[].name') }}"
- name: fail on unsupported distribution (name)
ansible.builtin.fail:
msg: The hosts distribution (name) isn't supported.
when: ansible_facts['distribution'] not in distribution_check__supported_distribution_names
- name: set facts for holding lists of supported distribution versions, major versions and releases
block:
- name: set fact holding list of supported distribution versions
ansible.builtin.set_fact:
distribution_check__supported_distribution_versions: "{{ distribution_check__distribution_support_spec
| community.general.json_query(distribution_check__supported_distribution_versions_query) }}"
vars:
distribution_check__supported_distribution_versions_query: "[?name=='{{ ansible_facts['distribution'] }}'].versions | [].to_string(@)"
- name: set fact holding list of supported distribution major versions
ansible.builtin.set_fact:
distribution_check__supported_distribution_major_versions: "{{ distribution_check__distribution_support_spec
| community.general.json_query(distribution_check__supported_distribution_major_versions_query) }}"
vars:
distribution_check__supported_distribution_major_versions_query: "[?name=='{{ ansible_facts['distribution'] }}'].major_versions | [].to_string(@)"
- name: set fact holding list of supported distribution releases
ansible.builtin.set_fact:
distribution_check__supported_distribution_releases: "{{ distribution_check__distribution_support_spec
| community.general.json_query(distribution_check__supported_distribution_releases_query) }}"
vars:
distribution_check__supported_distribution_releases_query: "[?name=='{{ ansible_facts['distribution'] }}'].releases | [].to_string(@)"
- name: check for distribution version, major version and release support
block:
- name: set fact on whether the distribution version is supported
ansible.builtin.set_fact:
distribution_check__distribution_version_supported: "{{ ansible_facts['distribution_version'] in distribution_check__supported_distribution_versions }}"
- name: set fact on whether the distribution major version is supported
ansible.builtin.set_fact:
distribution_check__distribution_major_version_supported: "{{ ansible_facts['distribution_major_version'] in distribution_check__supported_distribution_major_versions }}" # noqa: yaml[line-length]
- name: set fact on whether the distribution release is supported
ansible.builtin.set_fact:
distribution_check__distribution_release_supported: "{{ ansible_facts['distribution_release'] in distribution_check__supported_distribution_releases }}"
- name: fail, if neither the distributions version, major version or release is supported
ansible.builtin.fail:
msg: Neither the hosts distribution version, major version or release is supported.
when: not (distribution_check__distribution_version_supported
or distribution_check__distribution_major_version_supported
or distribution_check__distribution_release_supported)