From 33d19567597a9662bcb9154f06441969b4859f36 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 21 Jun 2024 11:30:50 +0200 Subject: [PATCH] adsasdasd --- Enter your MFA token: | 1 + ca.crt | 19 ++++++ ca.key | 28 +++++++++ inventory/inventory.yml | 20 ++++++ library/unifi_portforward_module.py | 95 +++++++++++++++++++++++++++++ show_portforwarding_rules.yml | 17 ++++++ unifi-dhcp-clients-list.yml | 26 ++++---- zabbix_agentd.crt | 17 ++++++ zabbix_agentd.csr | 15 +++++ zabbix_agentd.key | 28 +++++++++ zabbix_network.yml | 62 +++++++++++++++++++ 11 files changed, 315 insertions(+), 13 deletions(-) create mode 100644 Enter your MFA token: create mode 100644 ca.crt create mode 100644 ca.key create mode 100755 library/unifi_portforward_module.py create mode 100644 show_portforwarding_rules.yml create mode 100644 zabbix_agentd.crt create mode 100644 zabbix_agentd.csr create mode 100644 zabbix_agentd.key create mode 100644 zabbix_network.yml diff --git a/Enter your MFA token: b/Enter your MFA token: new file mode 100644 index 0000000..d5416b4 --- /dev/null +++ b/Enter your MFA token: @@ -0,0 +1 @@ +MOuARJXBfnkW,GN0o,aD diff --git a/ca.crt b/ca.crt new file mode 100644 index 0000000..960131f --- /dev/null +++ b/ca.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCTCCAfGgAwIBAgIUc9ylGQRm4foAsAratu/jlMZvTE4wDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJWmFiYml4IENBMB4XDTI0MDYxNDEzNDkzOVoXDTI3MDQw +NDEzNDkzOVowFDESMBAGA1UEAwwJWmFiYml4IENBMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAt/L+9V4QmDmmyqGwMi9MiwguOFJkkBiJckV9tWib/ePH +vv6kO/DiDNWORkW5NDBqpi7711boM1jVokLeVmZOgHaDYfmdInpR48V/2QpBQphD +BEb/aL1T7L9kkLmBAiIfb3OuZcB/EJht3yjJXwrVdX41wXBUF0V1HfGTH4cw5z9R +0qLtHypZLgMThJifxSH5yzZ96tEydAPrW0lwMGwNEcfaqEMfvKDs5y4sCRxBQIH9 +mXyWWGSHUk4mw7lUTYm9cMtcUd+XMziS812p5G2HGD0PFwAPIUc+j1AWzO+PdxJB +x6wYLgrDtepIDTf1TP5mZTdTINuIUyFr99ZLLp1ddQIDAQABo1MwUTAdBgNVHQ4E +FgQUFUDTZWyjQLWcXAe+EoJM6Gy1Sh4wHwYDVR0jBBgwFoAUFUDTZWyjQLWcXAe+ +EoJM6Gy1Sh4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEARerR +innFA7z3oVIPfVobsuHf86iQBFAlgOXLllHd02ahv+hSc10VGqlwPELKoopZcPYL +fSib6jaMjq1p7ZZkxq5wNh0+ftoyzfnk3DULMN/ECdtxCDQG2xF2sstlW9iPMQH/ +UcJzrxSOLiRm3Yc+8R4CjWmkUNpUUS+1ii482gY42iswwePBVMDOVS6AIpcdRLFi +5q7noAsDaxmxPLzjn0LObk8hKxo1J1DWAxSVn4FdHxmZ5EUlBji8SInqraCi1ZdN +tyQpSzSfvcHgTZHjjwjeY/+jaDP1PHkRs1ltj/2O5eUHIMGH2EZPXB5IKgLwPYnU +sVaRbC0FU9OzCYsm4w== +-----END CERTIFICATE----- diff --git a/ca.key b/ca.key new file mode 100644 index 0000000..62076a3 --- /dev/null +++ b/ca.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC38v71XhCYOabK +obAyL0yLCC44UmSQGIlyRX21aJv948e+/qQ78OIM1Y5GRbk0MGqmLvvXVugzWNWi +Qt5WZk6AdoNh+Z0ielHjxX/ZCkFCmEMERv9ovVPsv2SQuYECIh9vc65lwH8QmG3f +KMlfCtV1fjXBcFQXRXUd8ZMfhzDnP1HSou0fKlkuAxOEmJ/FIfnLNn3q0TJ0A+tb +SXAwbA0Rx9qoQx+8oOznLiwJHEFAgf2ZfJZYZIdSTibDuVRNib1wy1xR35czOJLz +XankbYcYPQ8XAA8hRz6PUBbM7493EkHHrBguCsO16kgNN/VM/mZlN1Mg24hTIWv3 +1ksunV11AgMBAAECggEAE2MjvoIfvx+CZgRlEOD90QB3eJ2sdihz4gyTa3l/SWLG +tGlbr2qbtI0UffEOzEKXFvVIO0GwXusLtxqTmukU+IKlJcAccNwSAe7YouwrBSUN +mSePdz9PF1pzs7Itd+dXR1SaqqQ/cCUUnWrL0H3Qkh3PdhgL8Njz90g1AKNrws9y +aBBX2f4EF+RGpbXrymks10+Ll/8y5VFIazxXEc+ew2+kT0j2bkLl80YwdesEAZ3E +YkxmivEaRJPBErW4LyVPKqSLYSbr5IHovELGY3P7fw4sX9j2JFLGFa5DHULY7AmM +eIS5sIusegYevNAt87QnwFXpB2Q5y0uKzVXwDmSv0QKBgQDDrHUIyd/E0a8qhJTO +1mEjvQJV9SOFMqmrmBhCIptIt5Mq3onSSRI5pvAplkl3Qz/IESSHdMWzNPyg67NG +E3fTDh3EMxqpUrLPteEFnmoyJraYCCKbhh4Fp9fAhUmH+3tOnQAmgtJiJ0FV318x +QMujJOs9tn+mjGZqKSe+WOFGkQKBgQDwqS+b9MkUeHtJobwQJiKbYtS248HTALo5 +Em5xMkTJ1eVrXTHZgJdbEEc1/T5UJOfGzlET6F5JJFmpaBpCMYb+ZEhR8b7lR/sH +WHMQlIjjcClbffdLN0fbnDrGSCs5n5QTxRqWH6g8IqWehbAd8BUYiEafOKFPyUs7 +ca7g4WHCpQKBgCdm+eY8KIhMpRZNvl1sRAFbVTYT+AQhcJMyPGhM6bIZ7VOrnlsv +BbGAUUo+jiqq6xQRh6aTOCBfIiQRcndBAlcIt6vDkrHYClPTTy2/eakBrLEuqjFh +L3h6FPMao/TzCiCJcvdOTqkfOIPfSB716ku+6nPx5QCXsyPbh7pH0Y1RAoGAFVa7 +DPYIelMwg1fe6AOpn+OEfu70+bOfz32t40WUydy4aeuqhuGbCg0Ic2YQB7/5+SvE +DqLU8WFSve2oHmRr1tSngPSRe50FSiJymW7CMIB6ek1SBw5Qxc01fO1bP9HBfHtG +nzcRYLulucea1Ry7kiBLOsT3sK5liFDNM81oMK0CgYAowvo8fGU3T1FbAidrEZyt +llcF30YMnciCE7/Uu1CjHnRLiKHaz28djA9rsoYHvC5i/jbUL0ekejawkWCmzd8y +969+V2kV4Rrb0HAO6jLCuVOoRatFV+mNApljjHk+4c2tIT8RbNTxv50PmUEHuViW ++uUBxvXGib9cXWvWB0AEbQ== +-----END PRIVATE KEY----- diff --git a/inventory/inventory.yml b/inventory/inventory.yml index 94f8a01..ddbc596 100644 --- a/inventory/inventory.yml +++ b/inventory/inventory.yml @@ -6,15 +6,30 @@ all: ubu.localdomain: ansible_host: 192.168.1.23 ansible_user: alex + ansible_ssh_pass: "Aase#1234!" + ansible_become_pass: "Aase#1234!" + zabbix_host_groups: "Linux servers" + zabbix_link_template: "Template OS Linux" + zabbix_agent_psk: "1d3b2f634a975a68df1ac903daa4d10d5b00a3d95c33463cffb402f5e39be75f" raspii.localdomain: ansible_host: 192.168.1.24 ansible_user: alex ansible_python_interpreter: /usr/bin/python3 + ansible_ssh_pass: "Aase#1234!" + ansible_become_pass: "Aase#1234!" + zabbix_host_groups: "Linux servers" + zabbix_link_template: "Template OS Linux" + zabbix_agent_psk: "1d3b2f634a975a68df1ac903daa4d10d5b00a3d95c33463cffb402f5e39be75f" proxmox.localdomain: ansible_host: 192.168.1.162 ansible_user: root ansible_password: Aase#1234! ansible_python_interpreter: /root/proxmoxer_env/bin/python + ansible_ssh_pass: "Aase#1234!" + ansible_become_pass: "Aase#1234!" + zabbix_host_groups: "Linux servers" + zabbix_link_template: "Template OS Linux" + zabbix_agent_psk: "1d3b2f634a975a68df1ac903daa4d10d5b00a3d95c33463cffb402f5e39be75f" vars: proxmox_host: 192.168.1.162 proxmox_user: root@pam @@ -29,6 +44,11 @@ all: ansible_host: 192.168.1.144 ansible_user: alex ansible_python_interpreter: /usr/bin/python3 + ansible_ssh_pass: "Aase#1234!" + ansible_become_pass: "Aase#1234!" + zabbix_host_groups: "Linux servers" + zabbix_link_template: "Template OS Linux" + zabbix_agent_psk: "1d3b2f634a975a68df1ac903daa4d10d5b00a3d95c33463cffb402f5e39be75f" alex-ds414.localdomain: ansible_host: 192.168.1.113 ansible_user: alexadmin diff --git a/library/unifi_portforward_module.py b/library/unifi_portforward_module.py new file mode 100755 index 0000000..4678949 --- /dev/null +++ b/library/unifi_portforward_module.py @@ -0,0 +1,95 @@ +#!/usr/bin/python + +from ansible.module_utils.basic import AnsibleModule +import requests +import json +import os +import pickle + +def get_portforwarding_rules(controller_url, username, password, site_id, mfa_token, cookies_file): + # Disable SSL warnings + requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning) + + # Create session + session = requests.Session() + + # Load cookies if available + if os.path.exists(cookies_file): + with open(cookies_file, 'rb') as f: + session.cookies.update(pickle.load(f)) + + # Test if the session is still valid by checking an endpoint + test_url = f"{controller_url}/api/s/{site_id}/stat/sta" + test_response = session.get(test_url, verify=False) + if test_response.status_code != 200: + os.remove(cookies_file) # Remove expired cookies + else: + # Initial login URL + login_url = f"{controller_url}/api/login" + + # Combine password and MFA token + combined_password = f"{password}|{mfa_token}" + + # Debugging: Print combined password + print(f"Combined Password: {combined_password}") + + # Login payload + login_data = { + "username": username, + "password": combined_password + } + + # Login headers + headers = { + "Content-Type": "application/json" + } + + # Attempt to log in + response = session.post(login_url, json=login_data, headers=headers, verify=False) + + if response.status_code == 200: + # Save cookies to file + with open(cookies_file, 'wb') as f: + pickle.dump(session.cookies, f) + else: + return {"failed": True, "msg": "Login failed.", "response": response.json()} + + # API endpoint for fetching port forwarding rules + portforwarding_url = f"{controller_url}/api/s/{site_id}/rest/portforward" + + # Fetch the port forwarding rules + portforwarding_response = session.get(portforwarding_url, verify=False) + portforwarding_response.raise_for_status() + + portforwarding_rules = portforwarding_response.json() + return {"failed": False, "portforwarding_rules": portforwarding_rules} + +def main(): + module_args = dict( + controller_url=dict(type='str', required=True), + username=dict(type='str', required=True), + password=dict(type='str', required=True), + site_id=dict(type='str', required=True), + mfa_token=dict(type='str', required=True), + cookies_file=dict(type='str', default="unifi_session_cookies.pkl") + ) + + module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) + + result = get_portforwarding_rules( + module.params['controller_url'], + module.params['username'], + module.params['password'], + module.params['site_id'], + module.params['mfa_token'], + module.params['cookies_file'] + ) + + if result['failed']: + module.fail_json(msg=result['msg'], response=result.get('response', None)) + else: + module.exit_json(changed=False, portforwarding_rules=result['portforwarding_rules']) + +if __name__ == '__main__': + main() + diff --git a/show_portforwarding_rules.yml b/show_portforwarding_rules.yml new file mode 100644 index 0000000..f44eb54 --- /dev/null +++ b/show_portforwarding_rules.yml @@ -0,0 +1,17 @@ +--- +- name: Retrieve and display UniFi port forwarding rules + hosts: localhost + gather_facts: no + tasks: + - name: Get port forwarding rules + unifi_portforward_module: + controller_url: "https://192.168.1.237:8443" + username: "alex_mormor@hotmail.com" + password: "aaseiswild123" + site_id: "default" + mfa_token: "{{ lookup('password', 'Enter your MFA token: ') }}" + register: result + + - name: Display port forwarding rules + debug: + var: result.portforwarding_rules diff --git a/unifi-dhcp-clients-list.yml b/unifi-dhcp-clients-list.yml index 23a8000..f44eb54 100644 --- a/unifi-dhcp-clients-list.yml +++ b/unifi-dhcp-clients-list.yml @@ -1,17 +1,17 @@ --- -# File: unifi-dhcp-clients-list.yml - -- name: Fetch and List DHCP Clients from UniFi Controller +- name: Retrieve and display UniFi port forwarding rules hosts: localhost gather_facts: no + tasks: + - name: Get port forwarding rules + unifi_portforward_module: + controller_url: "https://192.168.1.237:8443" + username: "alex_mormor@hotmail.com" + password: "aaseiswild123" + site_id: "default" + mfa_token: "{{ lookup('password', 'Enter your MFA token: ') }}" + register: result - vars_files: - - credentials.yml - - vars: - unifi_baseurl: "https://your-unifi-controller:8443" - unifi_site_id: "default" - unifi_validate_certs: no - - roles: - - unifi_dhcp_clients_list + - name: Display port forwarding rules + debug: + var: result.portforwarding_rules diff --git a/zabbix_agentd.crt b/zabbix_agentd.crt new file mode 100644 index 0000000..4428e25 --- /dev/null +++ b/zabbix_agentd.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICsjCCAZoCFB8dm3coMlzO2OsOCmcmWRXDCFd6MA0GCSqGSIb3DQEBCwUAMBQx +EjAQBgNVBAMMCVphYmJpeCBDQTAeFw0yNDA2MTQxMzQ5NDBaFw0yNTEwMjcxMzQ5 +NDBaMBcxFTATBgNVBAMMDFphYmJpeCBBZ2VudDCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALnIChD8wP0NHHq5WS5XWnpkkgldR/83obcDXzddTNH0CMbq +rfWIbcbbCFp9LKYmgjJIOV49WtIc1ycGCDUDsvaUkfGxIYsLia7PM0GWtNa2fLK4 +mw6mQXrBfzgLyCEGbDH2VTSS9I7QNGQrg7TNbiSjs9oiDmcv3Ba3ygytIM1xC3sh +z8rCx1Q7YBeWNlmsV1eSZnCdbm3r5WqPp8+nYL7cKQDiBsqSiCJOancGQnrd/Sv1 +O0wtAdqxZu6X7px1ZLzqstLXlYyPzA08l3yKEROsm8k0eJeNx3ATgZEsli7mP3D1 +z6PooiXkd4eTZ6o4uY3RVpAS1fhorAqADzKkv0sCAwEAATANBgkqhkiG9w0BAQsF +AAOCAQEAVMaVEzf9PVch7Vu/cGGdecNYdJTdMONv4rmkvtYvafLEkUJzMhqJ98KZ +RuDwq0IZJJAlVMpAvBOOq5gNG3+O3L2xGypg7L5MIEUoJMDpSMv2z0/L7yd6D5Mc +1HOX3QP/tX5YgU/L5sjmBIBsqWvEfyhF2Uh3omYq+eDQpumaQXwarFxtAvbyeH5N +4ks8vzZl6zHBNtOnQ4pBJbf7xi6ianpzuQlI0laigcZ0IUtmRFN/wVCE2Ls28X52 +TJtKiwzgXvXuwBJcJmXNSnG9w1mzj7ayO4TzFHUCUGNVeJM7eQNmiPoO6MSU8LYc +sPQgrknDKuZYeYjVGoVCctG9kz613Q== +-----END CERTIFICATE----- diff --git a/zabbix_agentd.csr b/zabbix_agentd.csr new file mode 100644 index 0000000..a002e2a --- /dev/null +++ b/zabbix_agentd.csr @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICXDCCAUQCAQAwFzEVMBMGA1UEAwwMWmFiYml4IEFnZW50MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAucgKEPzA/Q0cerlZLldaemSSCV1H/zehtwNf +N11M0fQIxuqt9YhtxtsIWn0spiaCMkg5Xj1a0hzXJwYINQOy9pSR8bEhiwuJrs8z +QZa01rZ8sribDqZBesF/OAvIIQZsMfZVNJL0jtA0ZCuDtM1uJKOz2iIOZy/cFrfK +DK0gzXELeyHPysLHVDtgF5Y2WaxXV5JmcJ1ubevlao+nz6dgvtwpAOIGypKIIk5q +dwZCet39K/U7TC0B2rFm7pfunHVkvOqy0teVjI/MDTyXfIoRE6ybyTR4l43HcBOB +kSyWLuY/cPXPo+iiJeR3h5Nnqji5jdFWkBLV+GisCoAPMqS/SwIDAQABoAAwDQYJ +KoZIhvcNAQELBQADggEBAAKVz/MQlVXt5b39eD/djiycGaWKXhe2MsYGOzHVIj2C +I4I/NcSLQb9Uj9tdJEFwg2DnWSBTE0OZdtfZ8YJGABhz85xQL9ykBz9ANx4uYHZz +GfIAQQBYOi8RCS5iYsNLbY6EmWH6mSAusrjwWhK92dBidtlf78BPktXvHzSgXg2T +wEubUn+15ENB9PL3Oi4UfBMQNCDm5CvXvd+VnAdbhUd5rUj7eatRdirNTJgjypN0 +SWbMSu7OCaaAVQsFoOOpF9LUFFiUpn6N7wHVIAo3pm47QjgdTh31G5UiVAjf35/t +LHCNl4iRV9IQhQvkK0zlJXl5/jf2bhBi8dO+xm9JOlA= +-----END CERTIFICATE REQUEST----- diff --git a/zabbix_agentd.key b/zabbix_agentd.key new file mode 100644 index 0000000..e23b91a --- /dev/null +++ b/zabbix_agentd.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC5yAoQ/MD9DRx6 +uVkuV1p6ZJIJXUf/N6G3A183XUzR9AjG6q31iG3G2whafSymJoIySDlePVrSHNcn +Bgg1A7L2lJHxsSGLC4muzzNBlrTWtnyyuJsOpkF6wX84C8ghBmwx9lU0kvSO0DRk +K4O0zW4ko7PaIg5nL9wWt8oMrSDNcQt7Ic/KwsdUO2AXljZZrFdXkmZwnW5t6+Vq +j6fPp2C+3CkA4gbKkogiTmp3BkJ63f0r9TtMLQHasWbul+6cdWS86rLS15WMj8wN +PJd8ihETrJvJNHiXjcdwE4GRLJYu5j9w9c+j6KIl5HeHk2eqOLmN0VaQEtX4aKwK +gA8ypL9LAgMBAAECggEAKjiKAR5QBbJrHIDvAZccmuAsSDCI4jmUaPE9PGnZwYVC +UWKYMkrVF/JDTb1Q3lm2ERNU5lPvRf0D8HxwdQvoKh3NpS3qP51Zpv6z2V4Urw89 ++6f0pTmne+xpqyUSUF8TS6994brcFXC/11wETJy7QVxqzVIcD9tSm18dbhASel2p +T1kxrMm5oV2j2ey49Z6T2nMgLbv+ts8t5oO5JPCge6qvwzvZn9hif3Rre4egK73e +5Ixt23Nk7sx/E1G2uT6ZMN61DbvQa/c241MKfG4wpZU/pzWdORZSNo2s6zz0CPk3 +vZuH+aLnXk6ZfwcJJ2naEzeJbZKx/A63CuEPUIQEwQKBgQDkwlglhHGONU+a8ZBx +uyWQU93G+rOy6ThHFiGuOwCYt1U/B0Zm7iiP2HAWNuiaX2Ntm/WjEvbYRpS5fULw ++qt0Y2AENoVB7bL/Ph77YedFfoW2G4PZ3NXsLJ9Hz0cCbkdfbywSGsxaH3RdiEhu +DFv8Yi+OsvRe2NpaG1DBeqeDkQKBgQDP54fiwVNqgC8Xn+kvqTm3Awkb40uYEAfL +MjKChjenIFOZms4KKFnXbXdswvebd75xaEVn5HypWg9x3y9ZFzrSsTPzu9RnWzdd +5ue+1UmSAZxfvZ5kp+NJJjxxJ/8YyjCnCAXNiOxpjjmD84bslJA550xyoDyNWg1j +4r0i/w5vGwKBgQCnQ07OR9P75hEJut0hu3QQ3rGHXyHrjElg+NaxnWSnRU2oYzpf +4n14CAqUw5s53MtHhsSJc0FYC+uM4QEEUFTzKgI3smGnPhUmOhbPOduvXX6JE/9J +WgZ0xH/GMtG5/kZjilcP+dY3g05DYXWMOa88j9I0Jbc2bprhTZ2zimpXcQKBgQCu +iOaw3C+VFutx39M5Kc3D8A5zlQtfKwX/9bIllVufOCo2p5kVOe7CRameasbHg20j +c6/gmhZ1bZ/Nrtnm5vOA8TZ2BVc5NYBzmmcu84uBwUxvq5YPVkoenLTdIgCr5QGX +F8sXUz11F+r89TJt5gJ2OdEZ4Z8z40eedTjm6kxJxQKBgQDZ3OoIi+sF//fTI3dg +ULBKrqYaVPhgBnC5ItVeDvJD8tm/YghgxhBcLXLFvZIwy2WK00CEP2zKEczA5AKz +w/o/krgsWYpI7PGZW0xGAgY79ahXL7OVl/z+OTCgL17rDGZvvcIMZelYaHjpfS4g +Bm3u2KZwUZN4sS+79kQ1Ejw24Q== +-----END PRIVATE KEY----- diff --git a/zabbix_network.yml b/zabbix_network.yml new file mode 100644 index 0000000..d42e9e1 --- /dev/null +++ b/zabbix_network.yml @@ -0,0 +1,62 @@ +--- +- name: Ensure Zabbix agent network configuration is correct + hosts: all + become: true + tasks: + - name: Open firewall port 10050 for Zabbix agent (Debian) + ansible.builtin.ufw: + rule: allow + port: 10050 + proto: tcp + when: ansible_os_family == "Debian" + + - name: Open firewall port 10050 for Zabbix agent (RedHat) + firewalld: + service: zabbix-agent + port: 10050/tcp + permanent: true + state: enabled + immediate: true + when: ansible_os_family == "RedHat" + + - name: Restart firewall to apply changes (Debian) + ansible.builtin.service: + name: ufw + state: restarted + when: ansible_os_family == "Debian" + + - name: Restart firewalld to apply changes (RedHat) + ansible.builtin.service: + name: firewalld + state: restarted + when: ansible_os_family == "RedHat" + + - name: Create directory for Zabbix agent configuration if it does not exist + ansible.builtin.file: + path: /etc/zabbix/zabbix_agentd.d + state: directory + + - name: Create directory for Zabbix agent logs if it does not exist + ansible.builtin.file: + path: /var/log/zabbix + state: directory + + - name: Ensure /var/log/zabbix directory is owned by zabbix user + ansible.builtin.file: + path: /var/log/zabbix + owner: zabbix + group: zabbix + state: directory + + - name: Ensure Zabbix agent is running + ansible.builtin.service: + name: zabbix-agent + state: restarted + + - name: Check Zabbix agent status + ansible.builtin.command: systemctl status zabbix-agent + register: zabbix_status + + - name: Debug Zabbix agent status + ansible.builtin.debug: + msg: "{{ zabbix_status.stdout_lines }}"