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
原文地址:https://www.cnblogs.com/Tang-Yuan/p/14303247.html