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