slogan3

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

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!