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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章