Ontwikkel een Ansible Playbook voor Geautomatiseerde Systeemherstelprocessen
description
Met deze prompt kan de gebruiker een geavanceerd Ansible playbook maken dat automatisch fouten detecteert en herstelprocessen uitvoert, wat leidt tot minimale downtime en verbeterde betrouwbaarheid in de infrastructuur. Het biedt een praktische aanpak die verder gaat dan standaard configuratiebeheer door herstel en meldingen te integreren, waardoor het beter is dan bestaande prompts die zich vooral richten op deployment en security.
prompt
Help me een Ansible playbook te ontwerpen dat geautomatiseerde systeemherstelprocessen uitvoert na detectie van fouten of storingen in mijn infrastructuur. Beschrijf hoe ik herstelacties kan definiëren, meldingen kan integreren en hersteltaken kan plannen om downtime te minimaliseren.
Fo ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Ansible playbook dat voldoet aan jouw eisen:
```yaml
---
- name: Systeemherstel na detectie van fouten
hosts: alle_servers
become: yes
vars:
slack_webhook_url: "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ" # Vervang door jouw webhook URL
tasks:
- name: Controleer of nginx service actief is
ansible.builtin.systemd:
name: nginx
state: started
register: nginx_service
check_mode: yes
- name: Detecteer of nginx niet actief is
ansible.builtin.fail:
msg: "Nginx service is niet actief."
when: nginx_service.status.ActiveState != "active"
- name: Herstart nginx service
ansible.builtin.systemd:
name: nginx
state: restarted
when: nginx_service.status.ActiveState != "active"
- name: Meldingsbericht naar Slack
ansible.builtin.uri:
url: "{{ slack_webhook_url }}"
method: POST
headers:
Content-Type: "application/json"
body: |
{
"text": "Herstelactie uitgevoerd: nginx service is herstart op {{ inventory_hostname }}."
}
body_format: json
when: nginx_service.status.ActiveState != "active"
```
**Uitleg:**
- **Foutdetectie:** Het playbook controleert of de nginx-service actief is. Als dat niet het geval is, wordt de taak afgebroken en wordt de herstelactie gestart.
- **Herstelactie:** Bij detectie wordt de nginx-service herstart.
- **Melding:** Na het herstellen wordt een bericht gestuurd naar een Slack-kanaal via een webhook, zodat de operationele teams geïnformeerd worden.
- **Planning:** Dit playbook kan geïntegreerd worden in een geautomatiseerd proces dat periodiek draait (bijvoorbeeld via cron of een CI/CD pipeline), zodat het automatisch herstelt zonder handmatige tussenkomst.
**Aanpassingen:**
- Vervang `slack_webhook_url` door jouw eigen Slack webhook-URL.
- Pas de hostgroep aan (`hosts: alle_servers`) naar jouw infrastructuur.
- Indien gewenst, voeg extra acties toe of pas de foutdetectiecriteria aan.
Wil je dat ik het verder uitbreid of help met het plannen van deze taken op regelmatige basis?
provider: deepseek
model: deepseek-chat
Hier is een volledig Ansible playbook voor geautomatiseerd systeemherstel voor nginx, inclusief foutdetectie, herstelacties, Slack-meldingen en planning:
## playbook-herstel-nginx.yml
```yaml
---
- name: Geautomatiseerd systeemherstel voor nginx
hosts: webservers
become: yes
vars:
slack_webhook_url: "https://hooks.slack.com/services/JOUW/WEBHOOK/URL"
slack_channel: "#operations"
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
listen: "herstart_nginx"
- name: stuur slack melding
slack:
token: "{{ slack_webhook_url }}"
msg: "{{ slack_bericht }}"
channel: "{{ slack_channel }}"
username: "Ansible Herstel Bot"
listen: "stuur_melding"
tasks:
- name: Controleer nginx service status
service_facts:
- name: Detecteer nginx fout
set_fact:
nginx_gestopt: true
when: ansible_facts.services['nginx.service'].state != 'running'
- name: Definieer herstelacties bij foutdetectie
block:
- name: Stuur startmelding naar Slack
set_fact:
slack_bericht: "🚨 ALERT: nginx service is gestopt op {{ inventory_hostname }}. Start herstelprocedure..."
when: nginx_gestopt | default(false)
- name: Activeer Slack melding
meta: flush_handlers
- name: Voer herstel uit - herstart nginx
service:
name: nginx
state: restarted
register: herstel_resultaat
when: nginx_gestopt | default(false)
- name: Controleer herstelsucces
service_facts:
when: nginx_gestopt | default(false)
- name: Stuur herstelmelding
set_fact:
slack_bericht: "✅ SUCCES: nginx service succesvol herstart op {{ inventory_hostname }}. Status: {{ ansible_facts.services['nginx.service'].state }}"
when:
- nginx_gestopt | default(false)
- ansible_facts.services['nginx.service'].state == 'running'
- name: Stuur foutmelding
set_fact:
slack_bericht: "❌ FOUT: nginx herstel mislukt op {{ inventory_hostname }}. Handmatige interventie vereist!"
when:
- nginx_gestopt | default(false)
- ansible_facts.services['nginx.service'].state != 'running'
- name: Activeer eindmelding
meta: flush_handlers
when: nginx_gestopt | default(false)
when: nginx_gestopt | default(false)
- name: Systeem status rapport (geen fout gedetecteerd)
set_fact:
slack_bericht: "✅ nginx service draait normaal op {{ inventory_hostname }}"
when: nginx_gestopt | default(false) == false
```
## Uitgebreide versie met planning en monitoring
```yaml
---
- name: Geavanceerd automatisch herstel met planning
hosts: webservers
become: yes
vars:
monitoring_interval: 300 # 5 minuten
max_herstart_pogingen: 3
slack_webhook_url: "https://hooks.slack.com/services/JOUW/WEBHOOK/URL"
tasks:
- name: Haal service status op
service_facts:
- name: Controleer nginx status
fail:
msg: "nginx service is niet actief"
when: ansible_facts.services['nginx.service'].state != 'running'
ignore_errors: yes
register: nginx_check
- name: Voer geplande herstelacties uit
block:
- name: Log herstelpoging
debug:
msg: "Start automatisch herstel voor nginx op {{ inventory_hostname }}"
- name: Stuur alert naar Slack
slack:
token: "{{ slack_webhook_url }}"
msg: "🔧 AUTOMATISCH HERSTEL: nginx service wordt herstart op {{ inventory_hostname }} ({{ ansible_date_time.iso8601 }})"
channel: "#operations"
username: "Ansible Herstel Systeem"
- name: Herstart nginx service
service:
name: nginx
state: restarted
register: herstel_uitvoer
- name: Wacht op service initialisatie
pause:
seconds: 10
- name: Verifieer herstelsucces
service_facts:
- name: Stuur succesmelding
slack:
token: "{{ slack_webhook_url }}"
msg: "✅ HERSTEL VOLTOOID: nginx service succesvol herstart op {{ inventory_hostname }}"
channel: "#operations"
username: "Ansible Herstel Systeem"
when: ansible_facts.services['nginx.service'].state == 'running'
- name: Stuur foutmelding bij mislukking
slack:
token: "{{ slack_webhook_url }}"
msg: "❌ HERSTEL MISLUKT: nginx kon niet worden herstart op {{ inventory_hostname }. Handmatige actie vereist!"
channel: "#operations"
username: "Ansible Herstel Systeem"
when: ansible_facts.services['nginx.service'].state != 'running'
when: nginx_check.failed
```
## Gebruik en Implementatie
### 1. Inventory bestand (hosts.ini)
```ini
[webservers]
webserver1 ansible_host=192.168.1.10
webserver2 ansible_host=192.168.1.11
[webservers:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=~/.ssh/id_rsa
```
### 2. Cron job voor geplande monitoring
```bash
# Voeg toe aan crontab (elke 5 minuten)
*/5 * * * * ansible-playbook -i hosts.ini playbook-herstel-nginx.yml
```
### 3. Slack Webhook configuratie
1. Ga naar Slack → Your Apps → "Incoming Webhooks"
2. Kies #operations kanaal
3. Kopieer webhook URL naar playbook variabele
### 4. Uitvoering
```bash
# Test handmatig
ansible-playbook -i hosts.ini playbook-herstel-nginx.yml
# Uitgebreide output voor debugging
ansible-playbook -i hosts.ini playbook-herstel-nginx.yml -v
```
## Belangrijke kenmerken:
- **Foutdetectie**: Controleert nginx service status
- **Automatisch herstel**: Herstart service bij detectie
- **Slack meldingen**: Real-time alerts naar #operations
- **Planning**: Via cron voor continue monitoring
- **Error handling**: Succes/fout meldingen
- **Minimaliseert downtime**: Automatische reactie binnen 5 minuten
Dit playbook biedt een complete oplossing voor geautomatiseerd herstel met minimale downtime en goede monitoring!