一、Saltstack部署
实验环境:三台虚拟机server1(master端)、server2(minion端)、server3(minion端),yum源zabbix库,saltstack库配置参见往期
server1中
yum install -y salt-master.noarch
systemctl enable --now salt-master
server2 server3中
yum install -y salt-minion.noarch
cd /etc/salt/
vim minion
master:192.168.100.241
systemctl enable --now salt-minion.service
master端执行命令允许minion连接
server1中
salt-key -L #列出服务器节点
salt-key -A #添加
master端测试与minion端的连接
yum install lsof -y
lsof -i :4505
salt '*' test.ping #是指—L列出来的所有主机,检测一下是否有响应
master端安装python-setproctitle.x86_64
yum install python-setproctitle.x86_64 -y
systemctl restart salt-master.service
二、远程执行模块
sever1创建salt目录并建立zabbix-server子目录
mkdir /srv/salt/
cd /srv/salt
mkdir _modules
cd modules
master端
vim my_disk.py
def df():
return __salt__['cmd.run']('df -h')
salt server2 saltutil.sync_modules
salt server2 my_disk.df
minion端
yum install -y tree
cd /var/cache/salt/minion
tree minion/
三、Apache自动安装配置
当salt目录下同时存在 apache/inin.sls 和apache.sls时,优先执行在上一级目录下的apache.sls。
master端
mkdir /srv/salt/apache
cd /srv/salt/apache
vim init.sls
apache:
pkg.installed:
- pkgs:
- httpd
- php
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/httpd.conf
service.running:
- name: httpd
- enable: true
- watch:
- file: apache
为server2修改apache端口
将server2的/etc/httpd/conf/httpd.conf 放到server1下/srv/salt/apache 下 并修改端口为8080
salt server2 state.sls apache
四、nginx 自动化安装
master端创建目录
mkdir /srv/salt/nginx
编写安装文件init.sls
vim init.sls
nginx-install:
pkg.installed:
- pkgs:
- gcc
- openssl-devel
- pcre-devel
file.managed:
- name: /mnt/nginx-1.20.1.tar.gz
- source: salt://nginx/nginx-1.20.1.tar.gz
cmd.run:
- name: cd /mnt && tar zxf nginx-1.20.1.tar.gz && cd nginx-1.20.1 && se -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
- creates: /usr/local/nginx
解压nginx安装包至nginx目录
tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1/conf/
修改nginx配置:
vim nginx.conf
nginx自动化启动
cd /srv/slat/nginx
vim service.sls
include:
- nginx
nginx-user:
user.present:
- name: nginx
- shell: /sbin/nologin
- home: /usr/local/nginx
- createhome: false
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/nginx.conf
nginx-service:
file.managed:
- name: /usr/lib/systemd/system/nginx.service
- source: salt://nginx/nginx.service
service.running:
- name: nginx
- enable: true
nginx启动文件
vim nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
运行salt server2 state.sls nginx.service