在stalstack的目录中有多个sls文件,系统会默认编译init.sls文件 所以编译sls文件中的模块可以在文件中定义
salt执行的目录下如果有多个sls文件应该怎样控制执行顺序
方法一:
在文件中控制执行的顺序
例如 :
在此目录有init.sls 和service.sls两个文件
如果在执行以下命令时
[root@server1 nginx]# salt server3 state.sls nginx
系统会默认执行init.sls文件中的内容
因此让全部的文件执行需要在servcice.sls文件中添加init.sls目录
修改nginx配置文件根据cpu核心的情况来启动多少个进程
include: ##将nginx中的init.sls文件包含进来
- nginx
service-nginx:
file.managed:
- name: /usr/local/nginx/conf/nginx.conf
- source: salt://nginx/nginx.conf
service.running:
- name: nginx
- watch:
- file: service-nginx
修改配置文件的模板
步骤二:
编译:
执行的顺序是:按照文件的顺序来执行先执行 install-nginx 、再执行service-nginx
[root@server1 nginx]# salt server3 state.highstate ##高级推
方法二:
指定读取nginx目录下的指定文件需要在top.sls文件中定义执行的顺序
步骤一:编辑主配置文件
[root@server1 ~]# vim /srv/salt/nginx/service.sls
service-nginx:
file.managed:
- name: /usr/local/nginx/conf/nginx.conf
- source: salt://nginx/nginx.conf
service.running:
- name: nginx
- watch:
- file: service-nginx
步骤二:
编辑top.sls文件
[root@server1 ~]# cat /srv/salt/top.sls
base:
'server2':
- apache
'server3':
- nginx ##先执行的是nginx目录下默认的init.sls文件
- nginx.service ##执行nginx目录下的service.sls文件
步骤三 :
编译:
[root@server1 nginx]# salt server3 state.highstate ##高级推
方法三:
把service.sls文件放在init.sls文件之后执行
步骤一
实验环境
将之前top.sls文件中的nginx去掉
步骤二:
编辑init.sls文件
install-nginx:
pkg.installed:
- pkgs:
- gcc
- make
- openssl-devel
- pcre-devel
archive.extracted:
- name: /mnt
- source: salt://nginx/nginx-1.16.0.tar.gz
- archive_format: tar
cmd.run:
- name: cd /mnt//nginx-1.16.0 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module &> /dev/null && make install &> /dev/null
- creates: /usr/local/nginx
file.managed:
- name: /lib/systemd/system/nginx.service
- source: salt://nginx/nginx.service
include:
- nginx.service ##将server.init文件中的内容包含到文件中来
步骤三:
编辑 service.sls文件
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/nginx.conf
- require:
- sls: nginx ##执行此文件之前先把init.sls 文件包含进来
service.running: #执行完init.sls文件和service文件之后重启服务
- name: nginx
- watch:
- file: /usr/local/nginx/conf/nginx.conf
步骤三:
编译:
[root@server1 nginx]# salt server3 state.highstate
先执行insatll-nginx再执行service.sls文件中的内容
方法四:
在一个sls文件中可以声明多个ID
步骤一:
编辑init.sls文件
install-nginx:
pkg.installed:
- pkgs:
- gcc
- make
- openssl-devel
- pcre-devel
archive.extracted:
- name: /mnt
- source: salt://nginx/nginx-1.16.0.tar.gz
- archive_format: tar
cmd.run:
- name: cd /mnt//nginx-1.16.0 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module &> /dev/null && make install &> /dev/null
- creates: /usr/local/nginx
file.managed:
- name: /lib/systemd/system/nginx.service
- source: salt://nginx/nginx.service
/usr/local/nginx/conf/nginx.conf: ##添加的ID声明模块
file.managed:
- source: salt://nginx/nginx.conf
- require:
- sls: nginx ##在此ID模块中可以声明不同的模块
service.running:
- name: nginx
- watch:
- file: /usr/local/nginx/conf/nginx.conf
(任务之间的顺序是可以调整的、正常顺序是从上往下、,模块之间的顺序可以写在一个文件中也可以分开写在几个文件中分开执行 !!!)