os-upgrade-automation/playbook/roles/smoke_tests/tasks/main.yml

109 lines
4.6 KiB
YAML

- name: Prüfe, ob HTTP-Service installiert ist (Apache/Nginx)
ansible.builtin.stat:
path: /usr/sbin/httpd
register: apache_check
ignore_errors: true
- name: Prüfe, ob Nginx installiert ist
ansible.builtin.stat:
path: /usr/sbin/nginx
register: nginx_check
ignore_errors: true
- name: "Smoke-Test: Prüfe HTTP-Endpoint (nur wenn Web-Server installiert)"
ansible.builtin.uri:
url: "{{ smoke_test_url | default('http://localhost') }}"
status_code: 200
return_content: false
register: http_result
ignore_errors: true
when: apache_check.stat.exists or nginx_check.stat.exists
- name: "Smoke-Test: Prüfe offenen Port (optional)"
ansible.builtin.wait_for:
port: "{{ smoke_test_port | default(80) }}"
host: "{{ smoke_test_host | default('localhost') }}"
timeout: 5
register: port_result
ignore_errors: true
- name: Prüfe, ob MySQL/MariaDB installiert ist
ansible.builtin.stat:
path: /usr/bin/mysql
register: mysql_check
ignore_errors: true
- name: "Smoke-Test: Prüfe Datenbankverbindung (nur wenn MySQL installiert)"
ansible.builtin.shell: "echo 'select 1' | mysql -h {{ smoke_test_db_host | default('localhost') }} -u {{ smoke_test_db_user | default('root') }} --password={{ smoke_test_db_pass | default('') }} {{ smoke_test_db_name | default('') }}"
register: db_result
ignore_errors: true
when: mysql_check.stat.exists and smoke_test_db_host is defined
- name: Prüfe, ob Oracle installiert ist
ansible.builtin.stat:
path: /u01/app/oracle/product
register: oracle_check
ignore_errors: true
- name: "Oracle DB: Finde alle Oracle SIDs (nur wenn Oracle installiert)"
ansible.builtin.shell: |
ps -ef | grep -E "ora_pmon_[A-Z0-9_]+" | grep -v grep | awk '{print $NF}' | sed 's/ora_pmon_//'
register: oracle_sids
changed_when: false
ignore_errors: true
when: oracle_check.stat.exists
- name: "Oracle DB: Finde alle Oracle Listener (nur wenn Oracle installiert)"
ansible.builtin.shell: |
ps -ef | grep -E "tnslsnr" | grep -v grep | awk '{print $NF}' | sed 's/tnslsnr//'
register: oracle_listeners
changed_when: false
ignore_errors: true
when: oracle_check.stat.exists
- name: "Oracle DB: Prüfe alle gefundenen SIDs (nur wenn Oracle installiert)"
ansible.builtin.shell: |
export ORACLE_HOME={{ item.oracle_home | default('/u01/app/oracle/product/19.0.0/dbhome_1') }}
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID={{ item.sid }}
sqlplus -S / as sysdba <<EOF
select 'OK' as status from dual;
exit;
EOF
register: oracle_sid_check
loop: "{{ oracle_sids.stdout_lines | map('regex_replace', '^(.+)$', '{\"sid\": \"\\1\", \"oracle_home\": \"/u01/app/oracle/product/19.0.0/dbhome_1\"}') | map('from_json') | list }}"
ignore_errors: true
when: oracle_check.stat.exists and oracle_sids.stdout_lines | length > 0
- name: "Oracle DB: Prüfe alle gefundenen Listener (nur wenn Oracle installiert)"
ansible.builtin.shell: |
export ORACLE_HOME={{ item.oracle_home | default('/u01/app/oracle/product/19.0.0/dbhome_1') }}
export PATH=$ORACLE_HOME/bin:$PATH
lsnrctl status {{ item.listener }}
register: oracle_listener_check
loop: "{{ oracle_listeners.stdout_lines | map('regex_replace', '^(.+)$', '{\"listener\": \"\\1\", \"oracle_home\": \"/u01/app/oracle/product/19.0.0/dbhome_1\"}') | map('from_json') | list }}"
ignore_errors: true
when: oracle_check.stat.exists and oracle_listeners.stdout_lines | length > 0
- name: "Oracle DB: Logge Oracle-Check-Ergebnisse (nur wenn Oracle installiert)"
ansible.builtin.copy:
content: |
Oracle DB Check für {{ inventory_hostname }}
Zeit: {{ ansible_date_time.iso8601 }}
Gefundene SIDs: {{ oracle_sids.stdout_lines | default([]) }}
Gefundene Listener: {{ oracle_listeners.stdout_lines | default([]) }}
SID-Check-Resultate: {{ oracle_sid_check.results | default([]) | to_nice_json }}
Listener-Check-Resultate: {{ oracle_listener_check.results | default([]) | to_nice_json }}
dest: "{{ log_dir }}/oracle_check_{{ inventory_hostname }}.log"
ignore_errors: true
when: oracle_check.stat.exists
- name: Smoke-Test Ergebnis zusammenfassen
ansible.builtin.debug:
msg:
- "HTTP-Test: {{ http_result.status | default('NOT INSTALLED') }}"
- "Port-Test: {{ port_result.state | default('FAILED') }}"
- "DB-Test: {{ db_result.rc | default('NOT INSTALLED') }}"
- "Oracle SIDs gefunden: {{ oracle_sids.stdout_lines | length | default(0) if oracle_check.stat.exists else 'NOT INSTALLED' }}"
- "Oracle Listener gefunden: {{ oracle_listeners.stdout_lines | length | default(0) if oracle_check.stat.exists else 'NOT INSTALLED' }}"