1
1
Reviewed-on: #1
This commit is contained in:
Márkus Sándor 2023-07-31 06:59:28 +02:00
commit 8e1835f677
14 changed files with 383 additions and 3 deletions

3
.gitignore vendored
View File

@ -6,5 +6,4 @@
.vagrant/ .vagrant/
# Log files (if you are creating logs in debug mode, uncomment this) # Log files (if you are creating logs in debug mode, uncomment this)
# *.log *.log

View File

@ -1 +1,7 @@
## Feltöltés alatt... ## 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.

83
Vagrantfile vendored Normal file
View File

@ -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

17
ansible.cfg Normal file
View File

@ -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

154
changelog.md Normal file
View File

@ -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/).

View File

@ -0,0 +1,4 @@
ZBXSERVER: '192.168.56.6'
ZBXLOGFILESIZE: '50'
ZBXAGENTPORT: '10050'
ZBXLISTENIP: '0.0.0.0'

31
inventory/inventory.yml Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -0,0 +1,6 @@
---
- name: Zabbix Agent engedélyezése és elindítása
service:
name: zabbix-agent
enabled: yes
state: started

1
templates/zabbix.psk.j2 Normal file
View File

@ -0,0 +1 @@
{{ psk_key }}

View File

@ -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 }}