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