Verificatie omgevingsgroepcontrole
Categories:
Projecten: c2platform/phx/ansible
Randvoorwaarden
Voor het doel van deze handleiding maakt de specifieke node niet uit, omdat de
omgevingscontrole het volledige
inventarisbestand hosts.ini
valideert. We
gebruiken de
ontwikkel-desktop pxd-ubuntu-devtop
. Zie voor het aanmaken en starten
van deze node:
- Instellen van een Ansible Ontwikkel Desktop: Deze handleiding beschrijft de stappen om een Ansible Ontwikkel Desktop in te stellen met Ubuntu 22, vergelijkbaar met het bureaublad dat wordt gebruikt binnen het PHX-domein.
Verificatie omgevingscontrole
Een omgevingscontrole is geïmplementeerd in het
Ansible-inventarisproject van het PHX-project
c2platform/phx/ansible/-/tree/master
.
De controle zorgt ervoor dat als onderdeel van een aanpak met
groepgebaseerde omgevingen,
die deel uitmaakt van de inventarisstrategie van dit project, een host in niet meer dan één
en ten minste één
Ansible-omgevingsgroep zit. Laten we controleren of dat werkt.
Niet meer dan één
De onderstaande inhoud toont de Ansible omgevingsgroepen development
en
test
met respectievelijk 7 en 1 node. Merk op dat er slechts 1 node in test
zit.
1[development]
2# lxd
3pxd-rproxy1 ansible_host=192.168.60.10
4pxd-ubuntu-devtop ansible_host=192.168.60.11
5pxd-gitlab ansible_host=192.168.60.12
6pxd-gitlab-runner ansible_host=192.168.60.13
7
8# virtualbox
9pxd-ad ansible_host=192.168.61.11
10pxd-win-devtop ansible_host=192.168.61.10
11pxd-win ansible_host=192.168.61.12
12
13[test]
14# lxd
15pxt-rproxy1 ansible_host=192.168.60.20
Open het hosts.ini
-bestand en voeg pxd-ubuntu-devtop
toe aan de test
-groep. Merk op
dat dit niet correct is; dit is een opzettelijke verkeerde configuratie. Nu maakt de node
pxd-ubuntu-devtop
deel uit van zowel test
als development
, wat we absoluut willen
vermijden omdat het gedrag onbepaald zal zijn. Het gewijzigde gedeelte moet er als volgt uitzien:
[test]
# lxd
pxt-rproxy1 ansible_host=192.168.60.20
# virtualbox
pxd-ubuntu-devtop
Nu de node in twee omgevingsgroepen zit, voer provisioning opnieuw uit:
vagrant provision pxd-ubuntu-devtop
Dit zal nu mislukken met een bericht zoals hieronder:
TASK [c2platform.core.linux : Fail with custom message] ************************
failed: [pxd-ubuntu-devtop] (item=Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!) => changed=false
ansible_loop_var: item
item:
msg: 'Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!'
name: Environment pxd-ubuntu-devtop → test, development
resource_group: 0_bootstrap
type: fail
when: true
msg: 'Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!'
Ten minste één
Herstel nu de wijziging in hosts.ini
en haal het commentaar weg van regel 4, de regel die
pxd-ubuntu-devtop
in de development-omgeving plaatst. Nu maakt de node niet langer deel uit
van een omgevingsgroep. Dit is ook een verkeerde configuratie die de omgevingscontrole zal detecteren.
[development]
# lxd
pxd-rproxy1 ansible_host=192.168.60.10
# pxd-ubuntu-devtop ansible_host=192.168.60.11
pxd-gitlab ansible_host=192.168.60.12
pxd-gitlab-runner ansible_host=192.168.60.13
# virtualbox
pxd-ad ansible_host=192.168.61.11
pxd-win-devtop ansible_host=192.168.61.10
pxd-win ansible_host=192.168.61.12
En voeg in de ubuntu
-groep de regel ansible_host
toe
[ubuntu]
pxd-rproxy1
pxd-ubuntu-devtop ansible_host=192.168.60.11
pxd-gitlab
pxd-gitlab-runner
Voer provisioning opnieuw uit
vagrant provision pxd-ubuntu-devtop
Dit zal nu mislukken met
TASK [c2platform.core.linux : Fail with custom message] ************************
failed: [pxd-ubuntu-devtop] (item=Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!) => changed=false
ansible_loop_var: item
item:
msg: 'Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!'
name: 'Environment pxd-ubuntu-devtop → '
resource_group: 0_bootstrap
type: fail
when: true
msg: 'Node pxd-ubuntu-devtop should be associated with exactly one environment group of: test, development!'
Review
Hoe is dit nu geïmplementeerd in het Ansible-inventarisproject in de map groepsvariabelen?
Kijk eerst naar group_vars/all/env/yml
---
px_env: "{{ group_names | intersect(px_envs) | first }}"
px_envs: ['test', 'development']
px_envs_node: "{{ group_names | intersect(px_envs) }}"
px_envs_node_count: "{{ px_envs_node | length }}"
px_envs_check:
name: >-
Environment {{ inventory_hostname }} → {{ px_envs_node | join(', ') }}
type: fail
msg: >-
Node {{ inventory_hostname }} should be associated with exactly
one environment group of: {{ px_envs | join(', ') }}!
when: "{{ px_envs_node_count != '1' }}"
Dit YAML-bestand definieert variabelen om het beleid voor omgevingsgroepen af te dwingen. De
variabele px_envs
somt toegestane omgevingsgroepen op (’test’ en ‘development’).
De variabele px_envs_node
identificeert tot welke van deze groepen de huidige host behoort
door de groepsnamen van de host te snijden met px_envs
. De variabele
px_envs_node_count
telt deze snijpunten. Ten slotte configureert px_envs_check
een faalconditie: het activeert een faaltaak als het aantal niet precies 1 is, met een bericht
dat aangeeft dat de host aan precies één omgevingsgroep moet behoren.
---
px_env: "{{ group_names | intersect(px_envs) | first }}"
px_envs: ['test', 'development']
px_envs_node: "{{ group_names | intersect(px_envs) }}"
px_envs_node_count: "{{ px_envs_node | length }}"
px_envs_check:
name: >-
Environment {{ inventory_hostname }} → {{ px_envs_node | join(', ') }}
type: fail
msg: >-
Node {{ inventory_hostname }} should be associated with exactly
one environment group of: {{ px_envs | join(', ') }}!
when: "{{ px_envs_node_count != '1' }}"
We kunnen nu de variabele px_envs_check
gebruiken om de controle te configureren voor Linux-systemen
(die deel uitmaken van de linux
-groep). En om de controle te configureren voor Windows-systemen
(die deel uitmaken van de win
-groep). Merk op dat we op zowel Linux- als Windows-hosts de module
ansible.builtin.fail
kunnen gebruiken.
---
linux_resources:
0_bootstrap:
- "{{ px_envs_check }}"
26win_resources:
27 0_bootstrap:
28 - name: Apps folder
29 type: win_file
30 path: "{{ px_apps_dir }}"
31 state: directory
32 - "{{ px_envs_check }}"
Merk verder op dat de variabelen linux_resources
en win_resources
die worden gebruikt om
de omgevingscontrole te configureren, deel uitmaken van respectievelijk de Linux-rol
c2platform.core.linux
en de Windows-rol
c2platform.wincore.win
.
Aanvullende informatie
Voor aanvullende inzichten en richtlijnen:
- Groepgebaseerde omgevingen: Gebruik een groepgebaseerde aanpak om je Ansible-inventaris en variabelen voor verschillende omgevingen te organiseren.
- Ansible-inventarisproject: Een gestructureerde verzameling bestanden die worden gebruikt voor het beheren van hosts en configuraties. Het omvat doorgaans inventarisbestanden, playbooks, hostvariabelen, groepsvariabelen en Ansible Vault-bestanden.
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.