saltstack状态管理 部署 jdk 和 tomcat 并运行

首先,在 /srv/salt 目录下 创建 base,prod,test目录,分别代表 基础环境,生产环境 和 测试环境。基础环境 是存放 公共的状态,例如 命令 的 审计,内核参数的修改

[root@linux-node1 salt]# cd /srv/salt/

[root@linux-node1 salt]# mkdir base

[root@linux-node1 salt]# mkdir prod

[root@linux-node1 salt]# mkdir test

修改 salt-master配置文件

vim /etc/salt/master

file_roots:

base:

- /srv/salt/base

扫描二维码关注公众号,回复: 3913386 查看本文章

test:

- /srv/salt/test

prod:

- /srv/salt/prod

重启 salt-master

systemctl restart salt-master

假如我们的架构,包含tomcat,nginx 这些东西很独立,我们可以把每个模块都建一个目录把相关模块的状态,所有的配置,都写在这个目录下,我们把这个目录称之为一个功能模块,这样做为了模块的复用,每个模块要尽量的独立,能够被引用

一个状态的执行流程,我们可以简单理解为 ,1 先系统初始化 2 再把软件装起来 3 再把软件运行起来

我们 把 该执行流程 分为 三个模块,分别是

1 系统初始化

2 功能模快

3 业务模块

系统初始化模块,是把公用依赖的东西都 初始化上,例如 内核参数的修改,编译安装所需的包

功能模块 是把 每个 安装流程 记录下来,然后 交给 业务模块include 进来就可以,以便以后的复用

业务模块 因为业务不一样,每个软件的配置文件也不尽相同,所以我们在该模块下一般是为 不同 的机器分发不同的配置文件

系统初始化

创建 init 和 files目录

mkdir /srv/salt/base/init/

mkdir /srv/salt/base/init/files/

然后 cd 到 init 目录下编写 salt 文件

将 操作命令 记录到 /var/log/message下

[root@linux-node1 init]# cat audit.sls 
/etc/bashrc:
  file.append:
    - text:
      - export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";}' 

统一的dns

[root@linux-node1 init]# cat dns.sls 
/etc/resolv.conf:
  file.managed:
    - source: salt://init/files/resolv.conf
    - user: root
    - group: root
    - mode: 644

历史记录加上时间

/etc/profile:
  file.append:
    - text: 
      - export HISTTIMEFORMAT="%F %T `whoami`"

修改内核参数

[root@linux-node1 init]# cat sysctl.sls 
vm.swappiness:
  sysctl.present:
    - value: 0  # 尽量不适用交换分区
net.ipv4.ip_local_port_range:
  sysctl.present:
    - value: 10000 65000 #随机端口监听
fs.file-max:
  sysctl.present:
    - value: 100000 #打开最大的文件数

将 以上的功能 包含到 env_init, 方便后续调用

[root@linux-node1 init]# cat env_init.sls 
include:
  - init.dns
  - init.history
  - init.audit
  - init.sysctl

首先编写编译安装所需的公共包的状态,在编写需要编译安装状态时,只需要include此状态即可

[root@linux-node1 pkg]# pwd

/srv/salt/prod/pkg

[root@linux-node1 pkg]# cat pkg-init.sls 
pkg-init:
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel

编写JDK状态

include:
  - pkg.pkg-init

java-install:
  file.managed:
    - name: /usr/local/src/jdk-8u101-linux-x64.tar.gz
    - source: salt://java/files/jdk-8u101-linux-x64.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src/ &&  tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local/
    - unless: test -d /usr/local/jdk1.8.0_101
    - require:
      - pkg: pkg-init
      - file: java-install

append-env:
  file.append:
    - name: /etc/profile
    - text:
      - JAVA_HOME=/usr/local/jdk1.8.0_101
      - export PATH=$PATH:$JAVA_HOME/bin
    - require:
      - cmd: java-install
  cmd.run:
    - name: export PATH=$PATH:/usr/local/jdk1.8.0_101/bin
    - require:
      - cmd: java-install
      - file: append-env

功能模块的编写

在prod 下创建 tomcat 目录

[root@linux-node1 prod]# mkdir /srv/salt/prod/tomcat

[root@linux-node1 prod]# cd tomcat/

创建files 目录 ,存放 tomcat 的 安装包和 配置文件

[root@linux-node1 tomcat]# mkdir files

编写 tomcat 状态

include:
  - pkg.pkg-init

tomcat-install:
  file.managed:
    - name: /usr/local/src/apache-tomcat-8.5.31.tar.gz
    - source: salt://tomcat/files/apache-tomcat-8.5.31.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src/ && tar -zxvf apache-tomcat-8.5.31.tar.gz -C /usr/local/
    - unless:
      -  test -d /usr/local/apache-tomcat-8.5.31/
    - require:
      - pkg: pkg-init
      - file: tomcat-install

canalina-managed:
  file.managed:
    - name: /usr/local/apache-tomcat-8.5.31/bin/catalina.sh
    - source: salt://tomcat/files/catalina.sh

catalina.sh的改动只是 在 文件,添加了 JDK的环境变量

JAVA_HOME=/usr/local/jdk1.8.0_101
JRE_HOME=$JAVA_HOME/jre
 

业务模块

include:
  - tomcat.install

tomcat-running:
  cmd.run:
    - name: /bin/bash /usr/local/apache-tomcat-8.5.31/bin/startup.sh
    - unless: test ! -z `jps | grep Bootstrap`

编辑top.sls

base:
  '*':
    - init.env_init #init是一个目录

prod:
  '*':
    - java.install
    - tomcat-service.tomcat-running

先使用

salt '*' state.highstate test=Ture 进行测试

然后 执行

salt '*' state.highstate env=prod

猜你喜欢

转载自blog.csdn.net/weixin_39639119/article/details/82924494