diff --git a/.gitignore b/.gitignore index 40dec64..4c04c22 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,4 @@ .vagrant/ # Log files (if you are creating logs in debug mode, uncomment this) -# *.log - +*.log diff --git a/README.md b/README.md index 6faeb42..b4c193a 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -## Feltöltés alatt... \ No newline at end of file +## Mit találsz ebben a publikus repóban? +Készítettem egy egyszerű ansible playbookot, ami 4 különböző operációs rendszerrel (CentOS 7, Alma Linux 8, Ubuntu 22.04, Debian 11) is kompatibilis. +A másik csavar, hogy a teszteléshez szükséges 4 virtuális gépet automatizálva hozom létre a Vagrant segítségével. +A Vagrantról írtam több cikket is a [honlapomon](https://msandor.hu/category/vagrant/). +A playbook feltelepíti és bekonfigurálja a zabbix-agent-eket. + +A frissített verzió már egy `zbxsrv` nevű szervert is létrehoz, egyelőre még kézzel kell rá feltelepíteni a dockert és a zabbix-serverhez szükséges docker-compose.yml-t. diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..3c73ae5 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,83 @@ +Vagrant.configure("2") do |config| + + config.vm.define "vm1" do |vm1| + vm1.vm.network "private_network", ip: "192.168.56.2" + vm1.vm.box = "centos/7" + vm1.vm.provider "virtualbox" do |vb| + vb.memory = "512" + vb.cpus = 1 + end + vm1.vm.provision "shell", inline: <<-SHELL + yum install mc epel-release httpd net-tools -y + yum update -y + systemctl enable --now httpd + echo "vm1" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm2" do |vm2| + vm2.vm.network "private_network", ip: "192.168.56.3" + vm2.vm.box = "almalinux/8" + vm2.vm.provider "virtualbox" do |vb| + vb.memory = "512" + vb.cpus = 1 + end + vm2.vm.provision "shell", inline: <<-SHELL + dnf install mc epel-release httpd net-tools -y + dnf update -y + systemctl enable --now httpd + echo "vm2" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm3" do |vm3| + vm3.vm.network "private_network", ip: "192.168.56.4" + vm3.vm.box = "ubuntu/jammy64" + vm3.vm.provider "virtualbox" do |vb| + vb.memory = "512" + vb.cpus = 1 + end + vm3.vm.provision "shell", inline: <<-SHELL + apt-get update && apt-get upgrade -y + apt-get install mc apache2 -y + apt-get clean + echo "vm3" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm4" do |vm4| + vm4.vm.network "private_network", ip: "192.168.56.5" + vm4.vm.box = "debian/bullseye64" + vm4.vm.provider "virtualbox" do |vb| + vb.memory = "512" + vb.cpus = 1 + end + vm4.vm.provision "shell", inline: <<-SHELL + apt-get update && apt-get upgrade -y + apt-get clean + apt-get install mc apache2 -y + echo "vm4" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "zbxsrv" do |zbxsrv| + zbxsrv.vm.network "private_network", ip: "192.168.56.6" + zbxsrv.vm.box = "centos/7" + zbxsrv.vm.provider "virtualbox" do |vb| + vb.memory = "512" + vb.cpus = 1 + end + zbxsrv.vm.provision "shell", inline: <<-SHELL + yum install mc epel-release httpd net-tools -y + yum update -y + systemctl enable --now httpd + echo "zbxsrv" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + +end diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..a3adc21 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,17 @@ +[defaults] +host_key_checking = False +inventory = ./inventory/inventory.yml +log_path = log/ansible.log +timeout = 60 +deprecation_warnings = False +command_warnings = False +interpreter_python = auto_legacy_silent + +ansible_managed = This file is managed by Ansible, all changes will be lost! PLEASE DO NOT EDIT!%n + template: {file} + date: %Y.%m.%d. %H:%M:%S + user: {uid} + host: {host} + +[ssh_connection] +scp_if_ssh=True diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..61d0799 --- /dev/null +++ b/changelog.md @@ -0,0 +1,154 @@ +# CHANGELOG + +## 8.0 +Történt némi átalakítás: + * a hivatalos zabbix repóból telepítem fel az agenteket + * ennek köszönhetően már nem kell bizonyos változókat (ZBXDIR, ZBXLOGDIR) külön kezelni inventory szinten + * a zabbix-servernek létrehoztam egy dedikált szervert (zbxsrv) + * mivel végesek a laptopom erőforrásai, és az agenteken kívül csak egy apache webszerver fut a demó szervereken (még az első lecke miatt), ezért megfeleztem a VCPU és memória értékeket + +Erről írtam egy cikket [itt]() + +## 7.0 +Elkészült az első két cikkem `zabbix-server` témában. + +A létrehozott demó környezetnek más lett a zabbix-server IP címe, így azt az egy paramétert megváltoztattam az inventory/group_vars/all.yml fájlvan: +`192.168.5.250 --> 192.168.56.7` + +Valamint megkapta a titkosított kommunikációhoz (`PSK`) szükséges bővítéseket. + +Erről írtam két cikket [itt 1.](https://msandor.hu/zabbix-szerver-az-alapok/) és [itt 2.](https://msandor.hu/zabbix-server-meruljunk-el-az-agent-beallitasokban/). + +## 6.0 +Elkészült a harmadik cikkem `Ansible` témában. + +Eljutottunk a playbook egy szebb formájához, könnyebb átlátni, bővíteni a jövőben. + +Erről írtam egy cikket [itt](https://msandor.hu/ansible-mire-jo-a-template/). + +## 5.0 +Elkészült a második cikkem `Ansible` témában. + +Készítettem egy playbookot, ami a 4 vm-re feltelepíti a zabbix-agentet, valamint beállít 5 paramétert. + +Ez két új fájlt jelent: playbook/install-zabbix-agent.yml, inventory/group_vars/all.yml + +Erről írtam egy cikket [itt](https://msandor.hu/ansible-irjunk-playbookot/). + +## 4.0 +Elkészült az első cikkem `Ansible` témában. + +Csak az alapok, pár könnyen megérthető példával. + +Létrehoztam a hozzá tartozó mappákat. + +És a két legfontosabb fájlt (ansible.cfg, inventory.yml) feltöltöttem a legszükségesebb adatokkal. + +Erről írtam egy cikket [itt](https://msandor.hu/ansible-az-alapok-bemutatasa-egyszeru-peldakkal/). + +## 3.0 +Egy nagy ugrással eljutottunk a 3.0-s Vagrantfile-hoz, hozzáadtam még 3 másik operációs rendszert is + +Kommentek nélkül így néz ki: +```ruby +Vagrant.configure("2") do |config| + + config.vm.define "vm1" do |vm1| + vm1.vm.network "private_network", ip: "192.168.56.2" + vm1.vm.box = "centos/7" + vm1.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = 2 + end + vm1.vm.provision "shell", inline: <<-SHELL + yum install mc epel-release httpd net-tools -y + yum update -y + systemctl enable --now httpd + echo "vm1" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm2" do |vm2| + vm2.vm.network "private_network", ip: "192.168.56.3" + vm2.vm.box = "almalinux/8" + vm2.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = 2 + end + vm2.vm.provision "shell", inline: <<-SHELL + dnf install mc epel-release httpd net-tools -y + dnf update -y + systemctl enable --now httpd + echo "vm2" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm3" do |vm3| + vm3.vm.network "private_network", ip: "192.168.56.4" + vm3.vm.box = "ubuntu/jammy64" + vm3.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = 2 + end + vm3.vm.provision "shell", inline: <<-SHELL + apt-get update && apt-get upgrade -y + apt-get install mc apache2 -y + apt-get clean + echo "vm3" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + + config.vm.define "vm4" do |vm4| + vm4.vm.network "private_network", ip: "192.168.56.5" + vm4.vm.box = "debian/bullseye64" + vm4.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = 2 + end + vm4.vm.provision "shell", inline: <<-SHELL + apt-get update && apt-get upgrade -y + apt-get clean + apt-get install mc apache2 -y + echo "vm4" > /etc/hostname + hostname -F /etc/hostname + SHELL + end + +end +``` +Erről is írtam egy cikket [itt](https://msandor.hu/vagrant-jojjon-a-labor/). + +## 2.0 +Több lépésben jutottunk el a 2.0-s Vagrantfile-hoz, bővült az erőforrás (cpu, mem), kapott dedikált hálókártyát, és telepítéskor lefuttat pár parancsot is. + +Kommentek nélkül így néz ki: +```ruby +Vagrant.configure("2") do |config| + config.vm.box = "centos/7" + config.vm.network "private_network", ip: "192.168.56.2" + config.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = 2 + end + config.vm.provision "shell", inline: <<-SHELL + yum install mc epel-release httpd net-tools -y + yum update -y --skip-broken + systemctl enable --now httpd + SHELL +end +``` +Erről is írtam egy cikket [itt](https://msandor.hu/lepjunk-szintet-a-vagranttal/). + +## 1.0 +Elkészült az első Vagrantfile, benne a kötelező 3 sorral, egy CentOS 7 OS-t indítva. + +Kommentek nélkül így néz ki: +```ruby +Vagrant.configure("2") do |config| + config.vm.box = "centos/7" +end +``` +Erről írtam egy cikket [itt](https://msandor.hu/vagrant-teszt-kornyezet-villamgyorsan/). diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml new file mode 100644 index 0000000..25a2072 --- /dev/null +++ b/inventory/group_vars/all.yml @@ -0,0 +1,4 @@ +ZBXSERVER: '192.168.56.6' +ZBXLOGFILESIZE: '50' +ZBXAGENTPORT: '10050' +ZBXLISTENIP: '0.0.0.0' diff --git a/inventory/inventory.yml b/inventory/inventory.yml new file mode 100644 index 0000000..296f4bc --- /dev/null +++ b/inventory/inventory.yml @@ -0,0 +1,31 @@ +--- +all: + hosts: + localhost: + children: + servers: + vars: + ansible_ssh_user: vagrant + hosts: + vm1: + ansible_host: 192.168.56.2 + ansible_ssh_private_key_file: .vagrant/machines/vm1/virtualbox/private_key + psk_key: 00fcb3f04e646dd9186717bb43f96aa829d01d497ea31254ca72a1ebe568aa96 + vm2: + ansible_host: 192.168.56.3 + ansible_ssh_private_key_file: .vagrant/machines/vm2/virtualbox/private_key + psk_key: 2009df4793fbd2f4afd351b825e43e4a2463524fd64fd08c27c9e353f085c94f + vm3: + ansible_host: 192.168.56.4 + ansible_ssh_private_key_file: .vagrant/machines/vm3/virtualbox/private_key + psk_key: 182e39bb63953f682347f717359a24621556d83516c54fff00e86dd8e9d89b45 + vm4: + ansible_host: 192.168.56.5 + ansible_ssh_private_key_file: .vagrant/machines/vm4/virtualbox/private_key + psk_key: d8f5c88673de18afdde646ed3590fbe36d2951b9cfe8fac56e8b722115e791ee + zbxsrv: + ansible_host: 192.168.56.6 + ansible_ssh_private_key_file: .vagrant/machines/zbxsrv/virtualbox/private_key + psk_key: 2d0d1ed6caf68a65088ff9e8f04c07c274ddf636293dcaf852da7383d0b92e29 + ZBXLISTENIP: 172.17.0.1 + ZBXSERVER: 192.168.151.2 diff --git a/playbook/install-zabbix-agent.yml b/playbook/install-zabbix-agent.yml new file mode 100644 index 0000000..ec8102e --- /dev/null +++ b/playbook/install-zabbix-agent.yml @@ -0,0 +1,13 @@ +--- +- hosts: all + become: true + tasks: + + - include: ~/git/ansible_vagrant/tasks/install-zabbix-repo.yml + - include: ~/git/ansible_vagrant/tasks/install-zabbix_agent.yml + - include: ~/git/ansible_vagrant/tasks/configure-zabbix_agent.yml + - include: ~/git/ansible_vagrant/tasks/service-zabbix_agent.yml + + handlers: + - name: restart zabbix-agent + service: name=zabbix-agent state=restarted diff --git a/tasks/configure-zabbix_agent.yml b/tasks/configure-zabbix_agent.yml new file mode 100644 index 0000000..8bf36d8 --- /dev/null +++ b/tasks/configure-zabbix_agent.yml @@ -0,0 +1,12 @@ +--- +- name: Zabbix Agent konfigurálása + diff: yes + template: src=~/git/ansible_vagrant/templates/zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf backup=yes + notify: + - restart zabbix-agent + +- name: Zabbix Agent PSK fájl létrehozása + diff: yes + template: src=~/git/ansible_vagrant/templates/zabbix.psk.j2 dest=/etc/zabbix/zabbix.psk backup=yes owner=zabbix group=zabbix mode=0640 + notify: + - restart zabbix-agent diff --git a/tasks/install-zabbix-repo.yml b/tasks/install-zabbix-repo.yml new file mode 100644 index 0000000..2f56dbe --- /dev/null +++ b/tasks/install-zabbix-repo.yml @@ -0,0 +1,23 @@ +--- +- name: Zabbix repó hozzáadása [Red Hat family] + yum: + name: https://repo.zabbix.com/zabbix/6.4/rhel/{{ ansible_distribution_major_version }}/x86_64/zabbix-release-6.4-1.el{{ ansible_distribution_major_version }}.noarch.rpm + state: present + disable_gpg_check: yes + validate_certs: no + when: + - ansible_os_family == "RedHat" + +- name: Zabbix repó hozzáadása [Debian] + apt: + deb: https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian{{ ansible_distribution_version }}_all.deb + state: present + when: + - ansible_distribution == "Debian" + +- name: Zabbix repó hozzáadása [Ubuntu] + apt: + deb: https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu{{ ansible_distribution_version }}_all.deb + state: present + when: + - ansible_distribution == "Ubuntu" diff --git a/tasks/install-zabbix_agent.yml b/tasks/install-zabbix_agent.yml new file mode 100644 index 0000000..9424735 --- /dev/null +++ b/tasks/install-zabbix_agent.yml @@ -0,0 +1,16 @@ +--- +- name: Zabbix Agent telepítése [Red Hat family] + yum: + name: zabbix-agent + state: latest + update_cache: yes + when: + - ansible_os_family == "RedHat" + +- name: Zabbix Agent telepítése [Debian family] + apt: + name: zabbix-agent + state: latest + update_cache: yes + when: + - ansible_os_family == "Debian" diff --git a/tasks/service-zabbix_agent.yml b/tasks/service-zabbix_agent.yml new file mode 100644 index 0000000..fff3917 --- /dev/null +++ b/tasks/service-zabbix_agent.yml @@ -0,0 +1,6 @@ +--- +- name: Zabbix Agent engedélyezése és elindítása + service: + name: zabbix-agent + enabled: yes + state: started diff --git a/templates/zabbix.psk.j2 b/templates/zabbix.psk.j2 new file mode 100644 index 0000000..16246d6 --- /dev/null +++ b/templates/zabbix.psk.j2 @@ -0,0 +1 @@ +{{ psk_key }} diff --git a/templates/zabbix_agentd.conf.j2 b/templates/zabbix_agentd.conf.j2 new file mode 100644 index 0000000..005f190 --- /dev/null +++ b/templates/zabbix_agentd.conf.j2 @@ -0,0 +1,15 @@ +################################################################################ +{{ ansible_managed | comment }} +################################################################################ + +PidFile=/run/zabbix/zabbix_agentd.pid +LogFile=/var/log/zabbix/zabbix_agentd.log +LogFileSize={{ ZBXLOGFILESIZE }} +Server={{ ZBXSERVER }} +ListenPort={{ ZBXAGENTPORT }} +ListenIP={{ ZBXLISTENIP }} +Hostname={{ inventory_hostname_short }} +TLSConnect=psk +TLSAccept=psk +TLSPSKFile=/etc/zabbix/zabbix.psk +TLSPSKIdentity={{ inventory_hostname_short }}