zoukankan      html  css  js  c++  java
  • saltstack搭建LAMP架构案例

    LAMP架构案例

    1)环境准备,定义file_roots环境

      这个配置会在我们开始安装salt-master的时候,salt-master配置文件中定义:

    root@King: ~# grep -A 5 file_roots /etc/salt/master   
    # file_roots:
    #   base:
    #     - /srv/salt/
    #   dev:
    #     - /srv/salt/dev/services
    #     - /srv/salt/dev/states
    --
    #file_roots:
    #  base:
    #    - /srv/salt
    file_roots:
      base:
        - /home/salt     # 自定义脚本路径

    注:以上的默认路径,可以根据实际要求去修改

    2)创建对应环境目录

    root@King: ~# mkdir /home/salt/{httpd,php,mysql,files}

    3)配置文件准备及测试文件准备

    [root@salt-master ~]# cp /etc/my.cnf /home/salt/mysql/files/
    [root@salt-master ~]# cp /etc/httpd/conf/httpd.conf /home/salt/httpd/files/
    [root@salt-master ~]# cp /etc/php.ini  /home/salt/php/files/
    [root@salt-master ~]# echo "<h1>LAMP html</h1>" >>/home/salt/files/index.html
    [root@salt-master ~]# echo "<?php phpinfo(); ?>" >> /home/salt/files/index.php

    4)编写state sls状态文件

    #httpd
    [root@salt-master ~]# cat /home/salt/httpd/init.sls
    apache-install:
      pkg.installed:
        - pkgs:
          - httpd
          - httpd-tools
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://httpd/files/httpd.conf
        - user: root
        - group: root
        - mode: 644
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
    
    #php
    [root@salt-master ~]# cat /home/salt/php/init.sls
    php-install:
      pkg.installed:
        - pkgs:
          - php
          - php-mysql
          - php-pdo
          - php-cli
    
    php-config:
      file.managed:
        - name: /etc/php.ini
        - source: salt://php/files/php.ini
        - user: root
        - group: root
        - mode: 644
    
    #mysql
    [root@salt-master ~]# cat /home/salt/mysql/init.sls
    mariadb-install:
      pkg.installed:
        - pkgs:
          - mariadb-server
          - mariadb
    
    mariadb-config:
      file.managed:
        - name: /etc/my.cnf
        - source: salt://mysql/files/my.cnf
        - user: root
        - group: root
        - mode: 644
    
    mariadb-service:
      service.running:
        - name: mariadb
        - enable: True
    

    5)编写测试文件

    #测试文件
    [root@salt-master ~]# cat /home/salt/testfile.sls
    /var/www/html/index.html:
      file.managed:
        - source: salt://files/index.html
    
    /var/www/html/index.php:
      file.managed:
        - source: salt://files/index.php

    6)topfile文件编写(这个也可以不写)

    [root@salt-master ~]# cat /home/salt/base/top.sls
    prod:
      'salt-minion*':
        - httpd.init
        - php.init
        - mysql.init
        - testfile

    7)部署LAMP整体state文件查看

    # 目录层级介绍
    /home/salt/
        --files
            --index.html
            --index.php
        --httpd
            --init.sls
    --files --httpd.conf --mysql --init.sls
    --files --my.conf --php --init.sls
    --files --php.ini

    8)执行topfile

    [root@salt-master ~]# salt '*' state.highstate

    或者

    [root@salt-master ~]# salt '*' state.sls httpd.init
    [root@salt-master ~]# salt '*' state.sls mysql.init
    [root@salt-master ~]# salt '*' state.sls php.init
    [root@salt-master ~]# salt '*' state.sls testfile

    state状态依赖

    关系说明:
    1、require 我依赖某个状态,我依赖谁
    2、require_in 我被某个状态依赖,谁依赖我
    3、watch 我关注某个状态,当状态发生改变,进行restart或者reload操作
    4、watch_in 我被某个状态关注
    5、include 我引用谁

    修改上面lamp状态间依赖关系

    #httpd
    [root@salt-master ~]# cat /home/salt/httpd/init.sls
    apache-install:
      pkg.installed:
        - pkgs:
          - httpd
          - httpd-tools
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://httpd//files/httpd.conf
        - user: root
        - group: root
        - mode: 644
        - require:
          - pkg: apache-install   #表示上面apache-install执行成功,才能执行apache-config
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
        - require:
          - file: apache-config
        - watch:
          - file: apache-config
    
    #php
    [root@salt-master ~]# cat /home/salt/php/init.sls
    php-install:
      pkg.installed:
        - pkgs:
          - php
          - php-mysql
          - php-pdo
          - php-cli
        - reqiure_in:
          - file: php-config
    
    php-config:
      file.managed:
        - name: /etc/php.ini
        - source: salt://php/files/php.ini
        - user: root
        - group: root
        - mode: 644
    
    #mysql
    [root@salt-master ~]# cat /home/salt/mysql/init.sls
    mariadb-install:
      pkg.installed:
        - pkgs:
          - mariadb-server
          - mariadb
    
    mariadb-config:
      file.managed:
        - name: /etc/my.cnf
        - source: salt://mysql/files/my.cnf
        - user: root
        - group: root
        - mode: 644
        - require:
          - pkg: mariadb-install
    
    mariadb-service:
      service.running:
        - name: mariadb
        - enable: True
        - reload: True
        - require:
          - file: mariadb-config
        - watch:
          - file: mariadb-config
  • 相关阅读:
    修改数据库的兼容级别
    如何写出安全的API接口
    最新IP地址数据库
    java 中的静态(static)代码块
    Java RTTI(类型信息)(.class 类对象)
    机器学习之决策树预测——泰坦尼克号乘客数据实例
    敏捷开发 —— TDD(测试驱动开发)
    Java 内存泄漏
    红顶商人 —— 胡雪岩
    各地特色美食与点菜的艺术
  • 原文地址:https://www.cnblogs.com/Tang-Yuan/p/14303247.html
Copyright © 2011-2022 走看看