Teach you how to deploy zabbix service on saltstack

Teach you how to deploy zabbix service on saltstack

Saltstack deploys zabbix service

environment

Host ip Serve
master 192.168.200.132 salt-matser
node1 192.168.200.133 salt-minion

[root@master salt]# tree prod/
prod/
|-- modules
| |-- application
| | `-- php
| | |-- files
| | | |-- install.sh
| | | |-- oniguruma-devel-6.8.2-2.el8.x86_64.rpm
| | | |-- php-7.4.24.tar.gz
| | | |-- php-fpm
| | | |-- php-fpm.conf
| | | |-- php-fpm.service
| | | `-- www.conf
| | `-- install.sls
| |-- database
| | `--mysql
| | |-- files
| | | |-- install.sh
| | | |-- my.cnf
| | | |--mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
| | | |--mysql.server
| | | `--mysqld.service
| | `-- install.sls
| `-- web
| `-- apache
| |-- files
| | |-- apr-1.7.0.tar.gz
| | |-- apr-util-1.6.1.tar.gz
| | |-- httpd-2.4.49.tar.gz
| | |-- httpd.conf
| | |-- httpd.service
| | |-- index.php
| | `-- install.sh
| `-- install.sls
`-- zabbix
    |-- apache.sls
    |-- files
    | |-- index.php
    | |-- install.sh
    | |--mysql.conf
    | |-- php.ini
    | |-- vhosts.conf
    | |-- zabbix-5.4.4.tar.gz
    | `-- zabbix_server.conf
    |-- main.sls
    |--mysql.sls
    `-- zabbix.sls

Install httpd, mysql, php

Install httpd

[root@master salt]# cat prod/modules/web/apache/install.sls 
apache-dep-package:
  pkg.installed:
    -pkgs:
      - openssl-devel
      - pcre-devel
      - expat-devel
      -libtool
      -gcc
      - gcc-c++
      - make

apache:
  user.present:
    - shell: /sbin/nologin
    -createhome:false
    -system: true

apache-download:
  file.managed:
    - names:
      - /usr/src/apr-1.7.0.tar.gz:
        - source: salt://modules/web/apache/files/apr-1.7.0.tar.gz
      - /usr/src/apr-util-1.6.1.tar.gz:
        - source: salt://modules/web/apache/files/apr-util-1.6.1.tar.gz
      - /usr/src/httpd-2.4.49.tar.gz:
        - source: salt://modules/web/apache/files/httpd-2.4.49.tar.gz

/usr/lib/systemd/system/httpd.service:
  file.managed:
    - source: salt://modules/web/apache/files/httpd.service
    - user: root
    - group: root
    - mode: '0644'

salt://modules/web/apache/files/install.sh:
  cmd.script

/usr/local/httpd/conf/httpd.conf:
  file.managed: 
    - source: salt://modules/web/apache/files/httpd.conf
    - user: root
    - group: root
    - mode: '0644'
[root@master salt]# cat prod/modules/web/apache/files/install.sh 
#!/bin/bash

cd /usr/src
rm -rf apr-1.7.0 apr-util-1.6.1 httpd-2.4.49

tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.49.tar.gz

cd /usr/src/apr-1.7.0
sed -i '/$RM "$cfgfile"/d' configure 
./configure --prefix=/usr/local/apr && \
        make && make install && \
cd ../apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
        make && make install && \
cd ../httpd-2.4.49
./configure --prefix=/usr/local/httpd \
        --enable-so \
        --enable-ssl \
        --enable-cgi \
        --enable-rewrite \
        --with-zlib \
        --with-pcre \
        --with-apr=/usr/local/apr \
        --with-apr-util=/usr/local/apr-util/ \
        --enable-modules=most \
        --enable-mpms-shared=all \
        --with-mpm=prefork && \
        make && make install && \
systemctl daemon-reload

Install mysql

[root@master salt]# cat prod/modules/database/mysql/install.sls
ncurses-compat-libs: 
  pkg.installed

create-mysql-user:
  user.present:
    - name: mysql
    -system: true
    -createhome:false
    - shell: /sbin/nologin

create-datadir:
  file.directory: 
    - name: /opt/data
    - user: mysql
    - group: mysql
    - mode: '0755'
    -makedirs: true


/usr/src/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz:
  file.managed: 
    - source: salt://modules/database/mysql/files/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
    - user: root
    - group: root
    - mode: '0644'

salt://modules/database/mysql/files/install.sh:
  cmd.script

trasfer-files: 
  file.managed: 
    - names: 
      - /usr/local/mysql/support-files/mysql.server:
        - source: salt://modules/database/mysql/files/mysql.server
      - /usr/lib/systemd/system/mysqld.service:
        - source: salt://modules/database/mysql/files/mysqld.service
[root@master salt]# cat prod/modules/database/mysql/files/install.sh
#!/bin/bash

cd /usr/src
tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local
ln -s /usr/local/mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql*
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

Install PHP

[root@master salt]# cat prod/modules/application/php/install.sls
/usr/src/oniguruma-devel-6.8.2-2.el8.x86_64.rpm:
  file.managed:
    - source: salt://modules/application/php/files/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
    - user: root
    - group: root
    - mode: '0644'
  cmd.run: 
    - name: yum -y install /usr/src/oniguruma-devel-6.8.2-2.el8.x86_64.rpm

dep-package-install: 
  pkg.installed: 
    -pkgs: 
      - libxml2
      - libxml2-devel
      - openssl
      - openssl-devel
      -bzip2
      - bzip2-devel
      - libcurl
      - libcurl-devel
      - libicu-devel
      - libjpeg-turbo
      - libjpeg-turbo-devel
      - libpng
      - libpng-devel
      - openldap-devel
      - pcre-devel
      -freetype
      - freetype-devel
      -gmp
      - gmp-devel
      - libmcrypt
      - libmcrypt-devel
      - readline
      - readline-devel
      -libxslt
      - libxslt-devel
      -mhash
      - mhash-devel
      - php-mysqlnd
      - libsqlite3x-devel
      - libzip-devel


/usr/src/php-7.4.24.tar.gz:
  file.managed: 
    - source: salt://modules/application/php/files/php-7.4.24.tar.gz
    - user: root
    - group: root
    - mode: '0644'

#salt://modules/application/php/files/install.sh:
# cmd.script

copyphp: 
  file.managed: 
    - names: 
      - /etc/init.d/php-fpm:
        - source: salt://modules/application/php/files/php-fpm
        - user: root
        - group: root
        - mode: '0755'
      - /usr/local/php7/etc/php-fpm.conf:
        - source: salt://modules/application/php/files/php-fpm.conf
      - /usr/local/php7/etc/php-fpm.d/www.conf:
        - source: salt://modules/application/php/files/www.conf
      - /usr/lib/systemd/system/php-fpm.service:
        - source: salt://modules/application/php/files/php-fpm.service

php-fpm.service:
  service.running:
    -enable: true
[root@master salt]# cat prod/modules/application/php/files/install.sh
#!/bin/bash

cd /usr/src
rm -rf php-7.4.24
tar xf php-7.4.24.tar.gz
cd php-7.4.24
./configure --prefix=/usr/local/php7 \
        --with-config-file-path=/etc \
        --enable-fpm \
        --disable-debug \
        --disable-rpath \
        --enable-shared \
        --enable-soap \
        --with-openssl \
        --enable-bcmath \
        --with-iconv \
        --with-bz2 \
        --enable-calendar \
        --with-curl \
        --enable-exif \
        --enable-ftp \
        --enable-gd \
        --with-jpeg \
        --with-zlib-dir \
        --with-freetype \
        --with-gettext \
        --enable-mbstring \
        --enable-pdo \
        --with-mysqli=mysqlnd \
        --with-pdo-mysql=mysqlnd \
        --with-readline \
        --enable-shmop \
        --enable-simplexml \
        --enable-sockets \
        --with-zip \
        --enable-mysqlnd-compression-support \
        --with-pear \
        --enable-pcntl \
        --enable-posix && \
        make && make install

Deploy the lamp architecture environment required by Zabbix

[root@master salt]# cat prod/zabbix/apache.sls
"Development Tools":
  pkg.group_installed

include: 
  -modules.web.apache.install

/usr/include/httpd:
  file.symlink: 
    - target: /usr/local/apache/include

/usr/local/httpd/htdocs/zabbix:
  file.directory: 
    - user: root
    - group: root
    - mode: '0775'
    -makedirs: true

/usr/local/httpd/htdocs/zabbix/index.php:
  file.managed: 
    - source: salt://zabbix/files/index.php
    - user: root
    - group: root
    - mode: '0644'

/usr/local/httpd/conf/extra/vhosts.conf:
  file.managed: 
    - source: salt://zabbix/files/vhosts.conf
    - user: root
    - group: root
    - mode: '0644'

zabbix-apache-service:
  service.running: 
    - name: httpd
    -enable: true
[root@master salt]# cat prod/zabbix/mysql.sls
lamp-dep-package: 
  pkg.installed: 
    -pkgs: 
      - ncurses-devel
      - openssl-devel
      - openssl
      - cmake 
      - mariadb-devel

include:
  -modules.database.mysql.install

provides-mysql-file:
  file.managed: 
    - user: root
    - group: root
    - mode: '0644'
    - names: 
      - /etc/my.cnf:
        - source: salt://zabbix/files/my.cnf
      - /etc/ld.so.conf.d/mysql.conf:
        - source: salt://zabbix/files/mysql.conf


/usr/local/include/mysql:
  file.symlink: 
    - target: /usr/local/mysql/include

mysqld.service:
  service.running: 
    -enable: true

mysqld-set-password: 
  cmd.run:
    - name: /usr/local/mysql/bin/mysql -e "set password = password('123456');"

insert image description here

Install Zabbix

[root@master salt]# cat prod/zabbix/zabbix.sls    
zabbix-dep-packages:
  pkg.installed:

   -pkgs:
     - net-snmp-devel
     - libevent-devel

zabbix:
  user.present:
    - shell: /sbin/nologin
    -system: true
    -createhome:false

/usr/src/zabbix-5.4.4.tar.gz:
  file.managed:
    - source: salt://zabbix/files/zabbix-5.4.4.tar.gz

salt://zabbix/files/install.sh:
  cmd.script

/usr/local/etc/zabbix_server.conf:
  file.managed:
    - source: salt://zabbix/files/zabbix_server.conf



/var/lib/mysql:
  file.directory:
    - user: root
    - group: root      
    - mode: '0755'

/var/lib/mysql/mysql.sock:
  file.symlink:
    - target: /tmp/mysql.sock



zabbix_server:
  cmd.run:
    - names:
      -cp -r /usr/src/zabbix-5.4.4/ui/* /usr/local/httpd/htdocs/zabbix/
      -zabbix_server
      - zabbix_agentd

/etc/php.ini:
  file.managed:
    - source: salt://zabbix/files/php.ini
    - user: root
    - group: root
    - mode: '0644'

reload-service:
  service.running:
    - reload: true
    - names:
      - httpd
      -php-fpm
[root@master salt]# cat prod/zabbix/files/install.sh 
#!/bin/bash

cd /usr/src
tar xf zabbix-5.4.4.tar.gz -C /usr/src

/usr/local/mysql/bin/mysql -uroot -p123456 -e "create database zabbix character set utf8 collate utf8_bin;"
/usr/local/mysql/bin/mysql -uroot -p123456 -e "grant all privileges on zabbix.* to zabbix@localhost identified by '123';"
/usr/local/mysql/bin/mysql -uroot -p123456 -e "flush privileges;"

cd /usr/src/zabbix-5.4.4/database/mysql/
/usr/local/mysql/bin/mysql -uroot -p123456 zabbix < schema.sql
/usr/local/mysql/bin/mysql -uroot -p123456 zabbix < images.sql
/usr/local/mysql/bin/mysql -uroot -p123456 zabbix < data.sql

cd /usr/src/zabbix-5.4.4
./configure --enable-server \
        --enable-agent \
        --with-mysql \
        --with-net-snmp \
        --with-libcurl \
        --with-libxml2 && \
        make install 

insert image description here

This is the end of this article about deploying zabbix service with saltstack. For more information about deploying zabbix service with saltstack, please search previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Detailed explanation of Zabbix monitoring SQL Server service status
  • Zabbix monitors the process of Linux system services
  • Tutorial on how to deploy zabbix server monitoring under ubuntu system

<<:  Detailed explanation of Javascript event capture and bubbling methods

>>:  Summary of the style modification of the input box of type="file"

Recommend

JavaScript implements simple scroll window

This article example shares the specific code of ...

HTML table tag tutorial (32): cell horizontal alignment attribute ALIGN

In the horizontal direction, you can set the cell...

How to insert pictures into HTML pages and add map index examples

1. Image formats supported on the WEB: GIF: can s...

Tutorial on how to modify the root password in MySQL 5.7

Version update, the password field in the origina...

Build a severe weather real-time warning system with Node.JS

Table of contents Preface: Step 1: Find the free ...

Use of provide and inject in Vue3

1. Explanation of provide and inject Provide and ...

Detailed example of MySQL subquery

Subquery Classification Classification by returne...

Windows DNS server exposed "worm-level" vulnerability, has existed for 17 years

Vulnerability Introduction The SigRed vulnerabili...

How to enter and exit the Docker container

1 Start the Docker service First you need to know...

Solution to the Multiple primary key defined error in MySQL

There are two ways to create a primary key: creat...

JavaScript and JQuery Framework Basics Tutorial

Table of contents 1. JS Object DOM –1, Function –...

How to migrate the data directory in mysql8.0.20

The default storage directory of mysql is /var/li...

CSS sets the box container (div) height to always be 100%

Preface Sometimes you need to keep the height of ...

Illustration of the process of using FileZilla to connect to the FTP server

When I first started setting up an ftp server on ...