{"id":268,"date":"2022-10-20T10:16:30","date_gmt":"2022-10-20T08:16:30","guid":{"rendered":"https:\/\/whoami.lausitz-event.info\/?p=268"},"modified":"2022-10-20T12:28:52","modified_gmt":"2022-10-20T10:28:52","slug":"monitoring-automatisierung-mit-ansible","status":"publish","type":"post","link":"https:\/\/whoami.lausitz-event.info\/?p=268","title":{"rendered":"Monitoring-Automatisierung mit Ansible"},"content":{"rendered":"\n\n<p><strong>Installation von Ansible<\/strong><\/p>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install ansible<\/code><\/pre>\n\n\n\n\n\n<p><strong>Installation des Icinga T-Systems-Modul<\/strong><\/p>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-galaxy collection install t_systems_mms.icinga_director<\/code><\/pre>\n\n\n\n\n\n<p><strong>ansible.cfg<\/strong><\/p>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;defaults]\ninventory      = \/opt\/ansible\nask_pass = False\nhost_key_checking = False\ngathering = explicit\n\n&#91;inventory]\n\n&#91;privilege_escalation]\n\n&#91;paramiko_connection]\n\n&#91;ssh_connection]\n\n&#91;persistent_connection]\ncommand_timeout = 180\nconnect_timeout = 100\nconnect_retry_timeout = 100\n\n&#91;accelerate]\n\n&#91;selinux]\n\n&#91;colors]\n\n\n&#91;diff]<\/code><\/pre>\n\n\n\n\n\n<p>In der Datei <strong>icinga_vars<\/strong> erstelle ich die Hostvariablen. Soll f\u00fcr das Monitoring ein neuer Server eingerichtet werden, muss nur diese Datei bearbeitet werden. Ich habe das ganze kundenspezifisch(Mandanten) aufgebaut. Deshalb erh\u00e4lt jeder Kunde eine <strong>ID<\/strong>. Diese ID findet sich zum einen in den Hostnamen wieder, sodass sich diese leicht gruppieren lassen. Zum anderen ist die ID das 3. Oktett der IP-Adresse. Damit hat jeder Kunde sein eigenes Netzwerk an der Firewall und man ist damit flexibler in der Adressierung.<\/p>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>id: 1\nid_ort: BlaBlubLand\nvirthost: servervm01\n\n\ndomaincontroller:\n  - name: server{{ id }}dc1\n    ip: 192.168.{{ id }}.31\n    os: Windows\n    host: Running on {{ virthost }}\n\nfileserver:\n  - name: server{{ id }}fs1\n    ip: 192.168.{{ id }}.51\n    os: Windows\n    host: Running on {{ virthost }}\n\ndatabase:\n  - name: server{{ id }}db1\n    ip: 192.168.{{ id }}.61\n    os: Linux\n    host: Running on {{ virthost }}\n  - name: vberk{{ id }}db2\n    ip: 192.168.{{ id }}.62\n    os: Linux\n    host: Running on {{ virthost }}<\/code><\/pre>\n\n\n\n\n\n<p>Hier nun das eigentliche Playbook <strong>icinga.yml<\/strong><\/p>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>- name: Konfiguration Icinga Monitoring\n  hosts: localhost\n  collections:\n    - T_Systems_MMS.icinga-director\n  vars:\n    icinga_url: http:\/\/ICINGA_IP_ADDRESS\/icingaweb2\n    icinga_user: USERNAME\n    icinga_pass: PASSWORD\n  vars_files:\n    - \/opt\/ansible\/icinga_vars\n\n  tasks:\n\n    - name: Create host template\n      t_systems_mms.icinga_director.icinga_host_template:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        accept_config: true\n        check_command: hostalive\n        check_interval: 90s\n        check_timeout: 60\n        command_endpoint: icinga2.domain.local\n        disabled: false\n        display_name: Windows-Server-Template\n        enable_active_checks: true\n        enable_event_handler: false\n        enable_flapping: false\n        enable_notifications: false\n        enable_passive_checks: true\n        enable_perfdata: true\n        has_agent: false\n        icon_image: \"windows.png\"\n        master_should_connect: true\n        max_check_attempts: 3\n        object_name: Windows-Server-Template\n        retry_interval: \"1m\"\n        volatile: false\n        imports:\n          - ''\n        vars:\n          dnscheck: \"no\"\n\n    - name: Create host template\n      t_systems_mms.icinga_director.icinga_host_template:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        accept_config: true\n        check_command: hostalive\n        check_interval: 90s\n        check_timeout: 60\n        command_endpoint: icinga2.domain.local\n        disabled: false\n        display_name: Linux-Server-Template\n        enable_active_checks: true\n        enable_event_handler: false\n        enable_flapping: false\n        enable_notifications: false\n        enable_passive_checks: true\n        enable_perfdata: true\n        has_agent: false\n        icon_image: \"linux.png\"\n        master_should_connect: true\n        max_check_attempts: 3\n        object_name: Linux-Server-Template\n        retry_interval: \"1m\"\n        volatile: false\n        imports:\n          - ''\n        vars:\n          dnscheck: \"no\"\n\n\n    - name: Erstelle Hostgroup {{ id_ort }} in Icinga\n      t_systems_mms.icinga_director.icinga_hostgroup:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"{{ id_ort }}\"\n        display_name: \"{{ id_ort }}\"\n\n    - name: Erstelle Hostgroup Windows in Icinga\n      t_systems_mms.icinga_director.icinga_hostgroup:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"Windows\"\n        display_name: \"Windows\"\n\n    - name: Erstelle Hostgroup Linux in Icinga\n      t_systems_mms.icinga_director.icinga_hostgroup:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"Linux\"\n        display_name: \"Linux\"\n\n    - name: Erstelle Domaincontroller Host server{{ id }}dc1 in Icinga\n      t_systems_mms.icinga_director.icinga_host:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"{{ item.name }}\"\n        address: \"{{ item.ip }}\"\n        display_name: \"{{ item.name }}\"\n        groups:\n          - \"{{ item.os }}\"\n          - \"{{ id_ort }}\"\n        imports:\n          - \"{{ item.os }}-Server-Template\"\n        vars:\n          dnscheck: \"no\"\n      loop: \"{{ domaincontroller }}\"\n\n    - name: Erstelle Datenbank Host server{{ id }}db in Icinga\n      t_systems_mms.icinga_director.icinga_host:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"{{ item.name }}\"\n        address: \"{{ item.ip }}\"\n        display_name: \"{{ item.name }}\"\n        groups:\n          - \"{{ item.os }}\"\n          - \"{{ id_ort }}\"\n        imports:\n          - \"{{ item.os }}-Server-Template\"\n        vars:\n          dnscheck: \"no\"\n      loop: \"{{ database }}\"\n\n    - name: Erstelle Fileserver Host server{{ id }}fs in Icinga\n      t_systems_mms.icinga_director.icinga_host:\n        state: present\n        url: \"{{ icinga_url }}\"\n        url_username: \"{{ icinga_user }}\"\n        url_password: \"{{ icinga_pass }}\"\n        object_name: \"{{ item.name }}\"\n        address: \"{{ item.ip }}\"\n        display_name: \"{{ item.name }}\"\n        groups:\n          - \"{{ item.os }}\"\n          - \"{{ id_ort }}\"\n        imports:\n          - \"{{ item.os }}-Server-Template\"\n        vars:\n          dnscheck: \"no\"\n      loop: \"{{ fileserver }}\"\n<\/code><\/pre>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Installation von Ansible Installation des Icinga T-Systems-Modul ansible.cfg In der Datei icinga_vars erstelle ich die Hostvariablen. Soll f\u00fcr das Monitoring ein neuer Server eingerichtet werden, muss nur diese Datei bearbeitet werden. Ich habe das ganze kundenspezifisch(Mandanten) aufgebaut. Deshalb erh\u00e4lt jeder Kunde eine ID. Diese ID findet sich zum einen in den Hostnamen wieder, sodass sich [&hellip;]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,14],"tags":[],"class_list":["post-268","post","type-post","status-publish","format-standard","hentry","category-ansible","category-icinga-ansible"],"_links":{"self":[{"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=268"}],"version-history":[{"count":8,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/posts\/268\/revisions"}],"predecessor-version":[{"id":278,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=\/wp\/v2\/posts\/268\/revisions\/278"}],"wp:attachment":[{"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/whoami.lausitz-event.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}