saltstack部署zabbix
本次项目树状图如下:
[root@master prod]# tree
.
├── modules
│ ├── application
│ │ └── php
│ │ ├── files
│ │ │ ├── index.php
│ │ │ ├── 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
│ │ │ ├── php.ini
│ │ │ └── www.conf
│ │ └── install.sls
│ ├── database
│ │ └── mysql
│ │ ├── files
│ │ │ ├── install.sh
│ │ │ ├── mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
│ │ │ └── mysqld.service
│ │ └── install.sls
│ └── web
│ └── apache
│ ├── files
│ │ ├── apr-1.7.0.tar.gz
│ │ ├── apr-util-1.6.1.tar.gz
│ │ ├── httpd-2.4.51.tar.gz
│ │ ├── httpd.conf
│ │ ├── httpd.service
│ │ └── install.sh
│ └── install.sls
└── zabbix
├── apache.sls
├── files
│ ├── index.php
│ ├── install.sh
│ ├── my.cnf
│ ├── mysql.conf
│ ├── mysql.server
│ ├── php.ini
│ ├── vhosts.conf
│ ├── zabbix-5.4.6.tar.gz
│ └── zabbix_server.conf
├── install.sls
├── main.sls
└── mysql.sls
httpd
安装
[root@master web]# tree
.
└── apache
├── files
│ ├── apr-1.7.0.tar.gz
│ ├── apr-util-1.6.1.tar.gz
│ ├── httpd-2.4.51.tar.gz
│ ├── httpd.conf
│ ├── httpd.service
│ └── install.sh
└── install.sls
[root@master apache]# pwd
/srv/salt/prod/modules/web/apache
[root@master apache]# vim install.sls
httpd_yilai:
pkg.installed:
- names:
- openssl-devel
- pcre-devel
- expat-devel
- libtool
- gcc
- gcc-c++
- make
httpd_user:
user.present:
- name: apache
- createhome: false
- system: true
- shell: /sbin/nologin
httpd_copy:
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.51.tar.gz:
- source: salt://modules/web/apache/files/httpd-2.4.51.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 files]# pwd
/srv/salt/prod/modules/web/apache/files
[root@master files]# vim install.sh
#!/bin/bash
cd /usr/src
rm -rf apr-1.7.0 apr-util-1.6.1 httpd-2.4.51
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.51.tar.gz
cd 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.51
./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
zabbix中httpd配置
[root@master zabbix]# vim 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.direcotry:
- user: root
- group: root
- mode: '0755'
- makedirs: true
/usr/local/httpd/htdocs/zabbix/index.php:
file.managed:
- source: salt://zabbix/files/index.php
- user: root
- group: root
- mode: '0644'
- makedirs: true
/usr/local/httpd/conf/extra/vhosts.conf:
file.managed:
- source: salt://zabbix/files/vhosts.conf
- user: root
- group: root
- mode: '0644'
- makedirs: true
httpd_start:
service.running:
- name: httpd
- enable: true
mysql
安装
[root@master modules]# tree database/
database/
└── mysql
├── files
│ ├── install.sh
│ ├── mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
│ └── mysqld.service
└── install.sls
[root@master mysql]# pwd
/srv/salt/prod/modules/database/mysql
[root@master mysql]# vim install.sls
mysql_user:
user.present:
- name: mysql
- system: true
- createhome: false
- shell: /sbin/nologin
mysql_yilai:
pkg.installed:
- pkgs:
- ncurses-devel
- openssl-devel
- openssl
- cmake
- mariadb-devel
- ncurses-compat-libs
create_datadir:
file.directory:
- name: /opt/data
- user: mysql
- group: mysql
- mode: '0755'
- makedirs: true
/usr/src/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz:
file.managed:
- source: salt://modules/database/mysql/files/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
salt://modules/database/mysql/files/install.sh:
cmd.script
/usr/lib/systemd/system/mysqld.service:
file.managed:
- source: salt://modules/database/mysql/files/mysqld.service
- user: root
- group: root
- mode: '0755'
安装脚本
[root@master files]# pwd
/srv/salt/prod/modules/database/mysql/files
[root@master files]# vim install.sh
#!/bin/bash
cd /usr/src
tar xf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
ln -s /usr/src/mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql*
echo "export PATH=/usr/local/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data
zabbix中mysql配置
[root@master zabbix]# vim mysql.slsinclude: - modules.database.mysql.installmysql_config: file.managed: - user: root - group: root - mode: '0755' - names: - /etc/my.cnf: - source: salt://zabbix/files/my.cnf - /etc/ld.so.conf.d/mysql.conf: - source: salt://zabbix/files/mysql.conf cmd.run: - name: ldconfig/usr/local/include/mysql: file.symlink: - target: /usr/local/mysql/include/etc/ld.so.conf.d/mysql.conf: file.managed: - source: salt://zabbix/files/mysql.confmysqld.service: service.running: - enable: trueset_password: cmd.run: - name: /usr/local/mysql/bin/mysql -e "set password = password('123456');"
php
安装
[root@master modules]# tree application/php/application/php/├── files│ ├── index.php│ ├── 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│ ├── php.ini│ └── www.conf└── install.sls
[root@master php]# pwd/srv/salt/prod/modules/application/php[root@master php]# vim 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.rpmphp-yilai: pkg.installed: - pkgs: - epel-release - sqlite-devel - libzip-devel - libxml2 - libxml2-devel - openssl - openssl-devel - bzip2 - bzip2-devel - libcurl - libcurl-devel - libicu-devel - libjpeg-turbo - libpng - libpng-devel - openldap-devel - pcre-devel - freetype - freetype-devel - gmp - gmp-devel - readline - readline-devel - libxslt - libxslt-devel - oniguruma /usr/src/php-7.4.24.tar.gz: file.managed: - source: salt://modules/application/php/files/php-7.4.24.tar.gz salt://modules/application/php/files/install.sh: cmd.script php_configfile: file.managed: - user: root - group: root - mode: '0644' - names: - /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/etc/init.d/php-fpm: file.managed: - source: salt://modules/application/php/files/php-fpm - user: root - group: root - mode: '0755'/usr/lib/systemd/system/php-fpm.service: file.managed: - source: salt://modules/application/php/files/php-fpm.service - user: root - group: root - mode: '0755'php-fpm.service: service.running: - enable: true
安装脚本
[root@master files]# pwd/srv/salt/prod/modules/application/php/files[root@master files]# vim install.sh #!/bin/bash cd /usr/srctar xf /usr/src/php-7.4.24.tar.gzcd php-7.4.24./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --enable-fpm \ --enable-inline-optimization \ --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-dir \ --with-gettext \ --enable-json \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-readline \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-zip \ --enable-mysqlnd-compression-support \ --with-pear \ --enable-pcntl \ --enable-posix && make && make install
lamp搭建完成后进行测试
zabbix
[root@master zabbix]# tree.├── apache.sls├── files│ ├── index.php│ ├── install.sh│ ├── my.cnf│ ├── mysql.conf│ ├── mysql.server│ ├── php.ini│ ├── vhosts.conf│ ├── zabbix-5.4.6.tar.gz│ └── zabbix_server.conf├── install.sls├── main.sls└── mysql.sls
[root@master zabbix]# vim install.slszabbix_createuser: user.present: - name: zabbix - system: true - shell: /sbin/nologin - createhome: falsezabbix_yilai: pkg.installed: - pkgs: - net-snmp-devel - libevent-devel - make - gcc - gcc-c++/usr/src/zabbix-5.4.6.tar.gz: file.managed: - source: salt://zabbix/files/zabbix-5.4.6.tar.gzsalt://zabbix/files/install.sh: cmd.script/etc/php.ini: file.managed: - source: salt://zabbix/files/php.ini/usr/local/etc/zabbix_server.conf: file.managed: - source: salt://zabbix/files/zabbix_server.conf - user: root - group: root - mode: '0644'/var/lib/mysql: file.symlink: - target: /tmp/mysql.sockzabbix_server: cmd.runzabbix_agentd: cmd.runrestart_php: cmd.run: - name: service php-fpm restartrestart_httpd: cmd.run: - name: systemctl restart httpd.service
编写项目主文件
[root@master zabbix]# vim main.sls include: - zabbix.apache - zabbix.mysql - modules.application.php.install - zabbix.install
最后执行主文件即可
[root@master zabbix]# salt node1 state.sls zabbix.main saktenv=prod
打开浏览器访问IP安装zabbix的web界面