本篇博客承接saltstack安装部署
以部署nginx为例,写一个用源码包部署服务的sls文件。
创建nginx目录,在目录内创建files目录。
在files目录中放置安装包。
安装nginx
[root@server1 nginx]# vim install.sls
nginx-install:
pkg.installed:
- pkgs:
- gcc
- make
- pcre-devel
- zlib-devel
file.managed:
- name: /mnt/nginx-1.15.8.tar.gz ##在远程主机放置的目录
- source: salt://nginx/files/nginx-1.15.8.tar.gz ##存放安装包的路径
cmd.run: ##安装部署
- name: cd /mnt && tar zxf nginx-1.15.8.tar.gz && cd nginx-1.15.8 \
- && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc \
- && ./configure --prefix=/usr/local/nginx &> /dev/null \
- && make &> /dev/null && make install &> /dev/null
- creates: /mnt/nginx-1.15.8
编写sls文件。
推送,在server2上安装nginx。
在server2的mnt目录查看,有传过去的安装包化解压的目录。
为了方便启动,我们做一个使用systemctl启动。
[root@server2 system]# pwd
/etc/systemd/system
[root@server2 system]# vim nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy Server
After=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
[root@server2 system]# systemctl start nginx
在server2启动nginx。
开启nginx
[root@server1 nginx]# vim service.sls
include:
- nginx.install
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf ##主配置文件存放目录
nginx-service:
file.managed:
- name: /etc/systemd/system/nginx.service
- source: salt://nginx/files/nginx.service
service.running:
- name: nginx
- enable: true
- reload: true
- watch:
- file: /usr/local/nginx/conf/nginx.conf
编写sls文件。
在files目录中存放nginx.service和主配置文件,修改主配置文件的内容就可以同步到远程主机上。
[root@server1 nginx]# salt server2 state.sls nginx.service
推送后在server2查看,nginx服务打开了。
同时推送多个服务
[root@server1 salt]# vim top.sls
base:
'server3':
- httpd.service ##在前一篇博客已经配置
'server2':
- nginx.service
同时推送nginx服务和httpd服务。
添加角色
在server2:
[root@server2 ~]# vim /etc/salt/minion
添加nginx角色。
在server1查看。
[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# ls
cloud cloud.maps.d master minion.d proxy
cloud.conf.d cloud.profiles.d master.d minion_id proxy.d
cloud.deploy.d cloud.providers.d minion pki roster
[root@server3 salt]# vim grains
[root@server3 salt]# systemctl restart salt-minion.service
也可以通过这样的方式添加角色。
在server1查看,这里是前面设定的角色。