saltstack 简单使用且使用saltstack安装lamp

简单说明salt  ‘*’  cmd.run “df -h”

salt  是固定的写法   *  是执行目标 ,  cmd是执行模块 ,  run是方法,df –h 就是方法的参数了

master和minion之间的通信除了是加密的的秘钥建立的连接外,通信是通过zeromq来实现的,通过队列的发布订阅机制,master对所有的minion发布命令,通过对目标的限制来确定是哪些minion返回信息

    例如需要让slave1来返回命令w的信息

   

     

Salt的两大功能,远程执行和状态管理(也叫配置管理),所对应的模块就是执行模块和状态模块

所有在命令行里执行的模块都是执行模块,后续在配置文件里出现的才是状态模块,执行模块和状态模块的名字有些是一样的,甚至参数都一样,注意区分

1.  状态管理

状态的配置文件采用yaml格式,注意冒号后边有空格,通过缩进来辨识层级关系,缩进每次两个空格,用  -  来表示列表,每个 -  后边都会有空格。

状态编写

修改master配置文件

vim  /etc/salt/master   677行

 添加相关信息

 注意缩进和冒号

重启master服务,因为我们修改了配置文件,需要重新弄加载

systemctl  restart   salt-master

状态管理文件都是sls结尾的,而且是一定要sls结尾,而且文件名要小写。

状态管理就是描述一个状态,符合就返回,不符合就执行命令让你符合,变成符合描述的状态,你安装了就不再安装,没启动服务,我帮你启动起来

/srv/salt/base  下建立一个apache.sls  文件

 

apache-install:

  pkg.installed:

    - name: httpd               

apache-service:

  service.running:

    - name: httpd

    - enable: True

 保存退出:

配置项简单说明:

 apache-installed:  这个是id,全局唯一

 pkg是模块名,installed是方法名

name是参数,name是sale里边的一个比较特殊的参数,参数值是httpd

          

整体说就是检查服务器有没有安装httpd这个包,有的话略过,没有的话就会安装上

下边的service是启动模块,也是id唯一,检查httpd是否启动,是否开机启动,如果没有就启动服务并设定开机启动

总的来说是相当于写了一个apache的安装启动脚本,检测是否安装apache,安装后检查是否设定了开机启动和是否启动,没启动给启起来,大体如此!!

为slave1执行这个apache状态管理

salt 'slave1' state.sls apache

 

可以看到minion id slave1

执行的安装状态id名称,方法,参数和返回状态为True

 

同样的执行模块返回类似的数据

最后还有Success 和 Failed的返回值

重点看changes下的返回信息,这是改变内容的返回值

如果再次执行命令,可以看到changes返回值就是0了,因为状态符合描述,不作任何改变

 

这个apache.sls是在base目录下,如果想要分类的更清楚点,我们在base下建立个web的文件夹,将apache.sls放到web下。那么我们之前的执行命令就变成了

salt ‘slave1’ state.sls web.apache

用这种方式来定义层级关系,我们如果有其他的分类,再建立其他的文件夹就可以了

 

高级状态

上面说的基本的状态管理,如果我一台机器上有apahce、有nginx还有tomcat,那么状态就要执行三次,这时salt引入了高级状态管理

举例说明

base目录下建立一个top.sls的文件

默认的高级状态管理回去base环境的/srv/salt/base下执行top.sls的配置

vim /srv/salt/base/top.sls

 

base:

  ‘slave1’:

    - web.apache

  ‘master’:

    - web.apache

         

base是环境名称,这时base环境,如果是测试环境就是test,开发环境是dev,同理生产环境就是prod

slave1和master是minion  id  ,web.apache是要执行的状态

 

       

如果是生产环境一定要运行一台机器来测试

salt ‘slave1’  state.highstate test=True

test=True  就是测试而且不执行,不报错再运行一台机器,再没问题之后,所有环境再执行,一定要小心谨慎,自动化如果出问题就是大面积的范围伤害

 

下面用saltstack 安装lamp

sls文件如下

vim  apache/apache.sls
apache-install:
  pkg.installed:
    - name: httpd
 
apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf  # 把配置好的文件放节点这个位置
    - source: salt://apache/files/httpd.conf  # 这是我已经配置好的文件
    - user: root
    - group: root
    - mode: 644
 
apache-service:
  service.running:
    - name: httpd
    - enable: True

salt "slave1" state.sls apache.apache saltenv=base test=true

 

vim php/php.sls

php-install:

  pkg.installed:

    - pkgs: 

      - php72w-cli

      - php72w-fpm

      - php72w-common

      - php72w-devel

      - php72w-embedded

      - php72w-pecl-redis

      - php72w-gd

      - php72w-mbstring

      - php72w-mysqlnd

      - php72w-opcache

      - php72w-pdo

      - php72w-xml

php-config:

  file.managed:

    - name: /etc/php.ini

    - source: salt://php/files/php.ini

    - user: root

    - group: root

    - mode: 644

php-config:

  file.managed:

    - name: /etc/php.ini

    - source: salt://php/files/php.ini

    - user: root

    - group: root

    - mode: 644

 

salt "slave1" state.sls php.php saltenv=base  test=True

vim mysql/mysql.sls

 

mysql-repo:

  file.managed:  # 先配置国内镜像yum源

    - name: /etc/yum.repos.d/MariaDB.repo

    - source: salt://mysql/files/MariaDB.repo

    - user: root

    - gourp: root

    - mode: 644

 

mysql-install:

  pkg.installed:

    - pkgs:

      - MariaDB-server

      - MariaDB-client

 

mysql-config:

  file.managed:

    - name: /etc/my.cnf

    - source: salt://mysql/files/my.cnf

    - user: root

    - gourp: root

    - mode: 644

 

mysql-service:

  service.running:

    - name: mariadb

    - enable: True

 

 

salt "slave1" state.sls mysql.mysql saltenv=base  test=True

另外PHP的扩展模块如下,需要的可以参考下
swool
swool-install:
  pkg.installed:
    - pkgs:
      - openssl-dev*
      - openssl
      - centos-release-scl
      - devtoolset-7*
  file.managed:
    - name: /mnt/swoole-src-4.7.1.tar.gz
    - source: salt://php/files/swoole-src-4.7.1.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: scl enable devtoolset-7 bash && cd /mnt && tar -xf swoole-src-4.7.1.tar.gz && cd swoole-src-4.7.1 && /usr/bin/phpize && ./configure --enable-openssl --enable-http2&& make && sudo make install && echo "extension=swoole.so" >>/etc/php.ini && systemctl restart php-fpm

beast.so
beast-install:
  file.managed:
    - name: /mnt/master.zip
    - source: salt://php/files/master.zip
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /mnt && unzip master.zip && cd php-beast-master && /usr/bin/phpize && ./configure && make &&  make install && echo "extension=beast.so" >>/etc/php.ini && systemctl restart php-fpm

这两个文件也可以整合成一个

 

下一篇文章写:saltstack安装配置lamp和tomcat环境

posted @ 2021-09-18 14:38  起飞ing  阅读(77)  评论(0)    收藏  举报