Skip to content

Commit 8bf306f

Browse files
committed
feat(playbooks): add example and setup_example playbooks as development references
1 parent 476dab2 commit 8bf306f

3 files changed

Lines changed: 111 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
### Added
2020

2121
* **CONTRIBUTING**: Document semantic parameter ordering for Ansible modules
22+
* **playbooks**: Add `example.yml` and `setup_example.yml` playbooks as development references
2223
* **role:example**: Add complete example role with defaults, handlers, tasks, templates, and vars as a reference for consistent role development
2324
* **role:icingaweb2_module_grafana**: Add JWT support
2425
* **role:grafana**: Add JWT support

playbooks/example.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
- name: 'Playbook linuxfabrik.lfops.example'
2+
hosts:
3+
- 'lfops_example'
4+
5+
pre_tasks:
6+
- ansible.builtin.import_role:
7+
name: 'shared'
8+
tasks_from: 'log-start.yml'
9+
tags:
10+
- 'always'
11+
12+
13+
roles:
14+
15+
- role: 'linuxfabrik.lfops.repo_example'
16+
when:
17+
- 'not example__skip_repo_example | d(false)'
18+
19+
- role: 'linuxfabrik.lfops.example'
20+
21+
22+
post_tasks:
23+
- ansible.builtin.import_role:
24+
name: 'shared'
25+
tasks_from: 'log-end.yml'
26+
tags:
27+
- 'always'

playbooks/setup_example.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Setup playbook for an application with complex dependencies (webserver, database, etc.).
2+
# Playbooks with such dependencies are prefixed by "setup_".
3+
#
4+
# skip_role and skip_injections variables:
5+
# - setup_example__<role>__skip_role: skips the role entirely
6+
# - setup_example__<role>__skip_injections: skips only the dependent_var injections
7+
# (defaults to the value of skip_role if not set)
8+
9+
- name: 'Playbook linuxfabrik.lfops.setup_example'
10+
hosts:
11+
- 'lfops_setup_example'
12+
13+
vars:
14+
15+
setup_example__mariadb_server__skip_injections__internal_var: '{{ setup_example__mariadb_server__skip_injections | d(setup_example__mariadb_server__skip_role__internal_var) }}'
16+
setup_example__mariadb_server__skip_role__internal_var: '{{ setup_example__mariadb_server__skip_role | d(false) }}'
17+
18+
pre_tasks:
19+
- ansible.builtin.import_role:
20+
name: 'shared'
21+
tasks_from: 'log-start.yml'
22+
tags:
23+
- 'always'
24+
25+
26+
roles:
27+
28+
# === Repositories ===
29+
- role: 'linuxfabrik.lfops.repo_baseos'
30+
repo_baseos__crb_repo_enabled__dependent_var: '{{
31+
repo_epel__repo_baseos__crb_repo_enabled__dependent_var
32+
}}'
33+
when:
34+
- 'ansible_facts["os_family"] == "RedHat"'
35+
- 'not setup_example__skip_repo_baseos | d(false)'
36+
37+
- role: 'linuxfabrik.lfops.repo_epel'
38+
when:
39+
- 'ansible_facts["os_family"] == "RedHat"'
40+
- 'not setup_example__skip_repo_epel | d(false)'
41+
42+
# === SELinux ===
43+
- role: 'linuxfabrik.lfops.policycoreutils'
44+
when:
45+
- 'ansible_facts["os_family"] == "RedHat"'
46+
- 'not setup_example__skip_policycoreutils | d(false)'
47+
48+
- role: 'linuxfabrik.lfops.selinux'
49+
selinux__booleans__dependent_var: '{{
50+
example__selinux__booleans__dependent_var
51+
}}'
52+
when:
53+
- 'ansible_facts["os_family"] == "RedHat"'
54+
- 'not setup_example__skip_selinux | d(false)'
55+
56+
# === Web server ===
57+
- role: 'linuxfabrik.lfops.apache_httpd'
58+
apache_httpd__mods__dependent_var: '{{ example__apache_httpd__mods__dependent_var | d([]) }}'
59+
apache_httpd__vhosts__dependent_var: '{{ example__apache_httpd__vhosts__dependent_var | d([]) }}'
60+
when:
61+
- 'not setup_example__skip_apache_httpd | d(false)'
62+
63+
# === Database ===
64+
- role: 'linuxfabrik.lfops.mariadb_server'
65+
mariadb_server__databases__dependent_var: '{{
66+
(not setup_example__mariadb_server__skip_injections__internal_var) | ternary(example__mariadb_server__databases__dependent_var, [])
67+
}}'
68+
mariadb_server__users__dependent_var: '{{
69+
(not setup_example__mariadb_server__skip_injections__internal_var) | ternary(example__mariadb_server__users__dependent_var, [])
70+
}}'
71+
when:
72+
- 'not setup_example__mariadb_server__skip_role__internal_var'
73+
74+
# === Application ===
75+
- role: 'linuxfabrik.lfops.example'
76+
77+
78+
post_tasks:
79+
- ansible.builtin.import_role:
80+
name: 'shared'
81+
tasks_from: 'log-end.yml'
82+
tags:
83+
- 'always'

0 commit comments

Comments
 (0)