1.配置管理(续)
现在,在上一篇博文的基础上,继续讲一下配置管理。补充一下sls文件的知识:
Salt 状态系统的核心是SLS,或者叫SaLt State 文件。
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。
使用子目录来做组织是个很好的选择。
init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls
就是表示apache
.
如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.
(1)想要批量执行上一篇博客中的apache.install,在base目录下准备top.sls文件:
# vim /srv/salt/top.sls
base:
'*':
- apache.install
(2)批量执行:
salt '*' state.highstate
可以看到server2和server3都执行了apache.install,在server3上查看进程
(3)现在,想要在server3中推nginx服务,那么nginx如何推呢?install.sls文件怎么写呢?具体操作如下:
base模式下,建立nginx子目录,并在子目录下建立files目录,获取nginx安装到到files目录下:
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# mkdir nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# scp root@172.25.33.250:/home/kiosk/Desktop/nginx-1.15.8.tar.gz .
The authenticity of host '172.25.33.250 (172.25.33.250)' can't be established.
ECDSA key fingerprint is SHA256:Bb8c7OXdsCYqQj0jSzzS/ESbOEP/47vePQXgV4L86es.
ECDSA key fingerprint is MD5:6d:4e:ce:d1:b5:65:f4:cb:0a:21:0b:b8:45:a7:1a:b7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.33.250' (ECDSA) to the list of known hosts.
root@172.25.33.250's password:
nginx-1.15.8.tar.gz 100% 1004KB 36.9MB/s 00:00
[root@server1 nginx]# mkdi files
-bash: mkdi: command not found
[root@server1 nginx]# mkdir files
[root@server1 nginx]# mv nginx-1.15.8.tar.gz files
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.15.8.tar.gz
nginx子目录下准备install.sls文件:
##拆分的写Install.sls文件,先写简单操作,nginx压缩文件的解压
[root@server1 nginx]# cat install.sls
install-nginx:
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
#进行推送,结果如下:
##现在,进行nginx的编译,install.sls文件如下:
include:
- pkgs.install ##将编译过程中使用的依赖性软件,写成Install.sls文件,包含进来
install-nginx:
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 && make && make install
- creates: /usr/local/nginx
[root@server1 nginx]# mkdir ../pkgs
[root@server1 nginx]# vim ../pkgs/install.sls
[root@server1 nginx]# cat ../pkgs/install.sls
nginx-make: ##nginx编译所需软件
pkg.installed:
- pkgs:
- gcc:
- make
- zlib-devel
- pcre-devel
##进行推送,结果如下:
##客户端执行结果 通过4506返回给master端 通过zmq消息队列实现的
返回结果实际上是保存的缓存里的 /var/cache/salt/master/jobs 会保存24小时
在生产实际中是将缓存数据和数据库结合在一起的
[root@server1 nginx]# cd /var/cache
[root@server1 cache]# ls
ldconfig man salt yum
[root@server1 cache]# cd salt/
[root@server1 salt]# cd master/
[root@server1 master]# cd jobs/
[root@server1 jobs]# ls
13 20 4b 57 59 60 61 77 86 98 9f a0 a8 ad ae e1 eb f2 f5 f6
##准备nginx.conf到files目录下,并修改nginx.conf文件,使worker进程适应远程主机的cpu数
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# ls
files install.sls service.sls
[root@server1 nginx]# cd files/
[root@server1 files]# scp root@172.25.33.3:/usr/local/nginx/conf/nginx.conf .
root@172.25.33.3's password:
nginx.conf 100% 2656 1.3MB/s 00:00
[root@server1 files]# ls
nginx-1.15.8.tar.gz nginx.conf
[root@server1 files]# vim nginx.conf