- 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 < 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' }}"