实验环境设置:

  1. 主机名               IP地址             角色
  2. linux-node1.example.com 192.168.56.11 MasterMinionHaproxy+KeepalivedNginx+PHP
  3. linux-node2.example.com 192.168.56.12 MinionMemcachedHaproxy+KeepalivedNginx+PHP

SaltStack环境设置: 
base环境用于存放初始化的功能,prod环境用于放置生产的配置管理功能

  1. [root@linux-node1 ~]# vim /etc/salt/master
  2. file_roots:
  3. base:
  4. - /srv/salt/base
  5. dev:
  6. - /srv/salt/dev
  7. test:
  8. - /srv/salt/test
  9. prod:
  10. - /srv/salt/prod
  11.  
  12. pillar_roots:
  13. base:
  14. - /srv/pillar/base
  15. prod:
  16. - /srv/pillar/prod

1、系统初始化

当我们的服务器上架并安装好操作系统后,都会有一些基础的操作,所以生产环境中使用SaltStack,建议将所有服务器都会涉及的基础配置或者软件部署归类放在base环境下。此处,在base环境下创建一个init目录,将系统初始化配置的sls均放置到init目录下,称为“初始化模块”。

(1)需求分析和模块识别

初始化内容 模块使用 文件
关闭SElinux file.managed /etc/selinux/config
关闭默认firewalld service.disabled  
时间同步 pkg.installed  
文件描述符 file.managed /etc/security/limits.conf
内核优化 sysctl.present  
SSH服务优化 file.managed、service.running  
精简开机系统服务 service.dead  
DNS解析 file.managed /etc/resolv.conf
历史记录优化history file.append /etc/profile
设置终端超时时间 file.append /etc/profile
配置yum源 file.managed /etc/yum.repo.d/epel.repo
安装各种agent pkg.installed 、file.managed、service.running  
基础用户 user.present、group.present  
常用基础命令 pkg.installed、pkgs  
用户登录提示、PS1的修改 file.append /etc/profile

(2)需求实现

  1. [root@linux-node1 base]# pwd
  2. /srv/salt/base
  3. [root@linux-node1 base]# mkdir init/files -p
  4.  
  5. 、关闭selinux
  6. #使用了file模块的managed方法
  7. [root@linux-node1 init]# vim selinux.sls
  8. selinux-config:
  9. file.managed:
  10. - name: /etc/selinux/config
  11. - source: salt://salt/init/files/selinux-config
  12. - user: root
  13. - group: root
  14. - mode:
  15. [root@linux-node1 init]# cp /etc/selinux/config files/selinux-config
  16.  
  17. 、关闭firewalld
  18. #使用service模块的dead方法,直接关闭firewalld,并禁止开机启动
  19. [root@linux-node1 init]# vim firewalld.sls
  20. firewall-stop:
  21. service.dead:
  22. - name: firewalld.service
  23. - enable: False
  24.  
  25. 、时间同步
  26. #先使用pkg模块安装ntp服务,再使用cron模块加入计划任务
  27. [root@linux-node1 init]# vim ntp.sls
  28. ntp-install:
  29. pkg.installed:
  30. - name: ntpdate
  31.  
  32. cron-ntpdate:
  33. cron.present:
  34. - name: ntpdate time1.aliyun.com
  35. - user: root
  36. - minute:
  37.  
  38. 、修改文件描述符
  39. #使用file模块的managed方法
  40. [root@linux-node1 init]# vim limit.sls
  41. limit-config:
  42. file.managed:
  43. - name: /etc/security/limits.conf
  44. - source: salt://init/files/limits.conf
  45. - user: root
  46. - group: root
  47. - mode:
  48. [root@linux-node1 init]# cp /etc/security/limits.conf files/
  49. [root@linux-node1 init]# echo "* - nofile 65535
  50. " >> files/limits.conf
  51.  
  52. 、内核优化
  53. #使用sysctl模块的present方法,此处演示一部分,这里没有使用name参数,所以id就相当于是name
  54. [root@linux-node1 init]# vim sysctl.sls
  55. net.ipv4.tcp_fin_timeout:
  56. sysctl.present:
  57. - value:
  58.  
  59. net.ipv4.tcp_tw_reuse:
  60. sysctl.present:
  61. - value:
  62.  
  63. net.ipv4.tcp_tw_recycle:
  64. sysctl.present:
  65. - value:
  66.  
  67. net.ipv4.tcp_syncookies:
  68. sysctl.present:
  69. - value:
  70.  
  71. net.ipv4.tcp_keepalive_time:
  72. sysctl.present:
  73. - value:
  74.  
  75. SSH服务优化
  76. #使用file.managed和service.running以及watch,对ssh服务进行优化配置
  77. [root@linux-node1 init]# vim sshd.sls
  78. sshd-config:
  79. file.managed:
  80. - name: /etc/ssh/sshd_config
  81. - source: salt://init/files/sshd_config
  82. - user: root
  83. - gourp: root
  84. - mode:
  85. service.running:
  86. - name: sshd
  87. - enable: True
  88. - reload: True
  89. - watch:
  90. - file: sshd-config
  91. [root@linux-node1 init]# cp /etc/ssh/sshd_config files/
  92. [root@linux-node1 init]# vim files/sshd_config
  93. Port
  94. UseDNS no
  95. PermitRootLogin no
  96. PermitEmptyPasswords no
  97. GSSAPIAuthentication no
  98.  
  99. 、精简开机启动的系统服务
  100. #举例关闭postfix开机自启动
  101. [root@linux-node1 init]# vim thin.sls
  102. postfix:
  103. service.dead:
  104. - enable: False
  105.  
  106. DNS解析
  107. [root@linux-node1 init]# vim dns.sls
  108. dns-config:
  109. file.managed:
  110. - name: /etc/resolv.conf
  111. - source: salt://init/files/resolv.conf
  112. - user: root
  113. - group: root
  114. - mode:
  115. [root@linux-node1 init]# cp /etc/resolv.conf files/
  116.  
  117. 、历史记录优化history
  118. #使用file.append扩展修改HISTTIMEFORMAT的值
  119. [root@linux-node1 init]# vim history.sls
  120. history-config:
  121. file.append:
  122. - name: /etc/profile
  123. - text:
  124. - export HISTTIMEFORMAT="%F %T `whoami` "
  125. - export HISTSIZE=
  126. - export HISTFILESIZE=
  127.  
  128. 、设置终端超时时间
  129. #使用file.append扩展修改TMOUT环境变量的值
  130. [root@linux-node1 init]# vim tty-timeout.sls
  131. ty-timeout:
  132. file.append:
  133. - name: /etc/profile
  134. - text:
  135. - export TMOUT=
  136.  
  137. 、配置yum
  138. #拷贝yum源
  139. [root@linux-node1 init]# vim yum-repo.sls
  140. /etc/yum.repos.d/epel.repo:
  141. file.managed:
  142. - source: salt://init/files/epel.repo
  143. - user: root
  144. - group: root
  145. - mode:
  146.  
  147. 、安装各种agent(如安装zabbix-agent
  148. #相当于一个软件的安装、配置、启动,此处也使用了jinja模板和pillar
  149. [root@linux-node1 base]# mkdir zabbix
  150. [root@linux-node1 base]# vim zabbix/zabbix-agent.sls
  151. zabbix-agent:
  152. pkg.installed:
  153. - name: zabbix22-agent
  154. file.managed:
  155. - name: /etc/zabbix_agentd.conf
  156. - source: salt://zabbix/files/zabbix_agentd.conf
  157. - template: jinja
  158. - defaults:
  159. ZABBIX-SERVER: {{ pillar['zabbix-agent']['Zabbix_Server'] }}
  160. - require:
  161. - pkg: zabbix-agent
  162. service.running:
  163. - enable: True
  164. - watch:
  165. - pkg: zabbix-agent
  166. - file: zabbix-agent
  167. zabbix_agent.conf.d:
  168. file.directory:
  169. - name: /etc/zabbix_agentd.conf.d
  170. - watch_in:
  171. - service: zabbix-agent
  172. - require:
  173. - pkg: zabbix-agent
  174. - file: zabbix-agent
  175. [root@linux-node1 srv]# vim pillar/base/zabbix.sls
  176. zabbix-agent:
  177. Zabbix_Server: 192.168.56.11
  178.  
  179. 、基础用户
  180. #增加基础管理用户www,使用user.present和group.present
  181. [root@linux-node1 init]# vim user-www.sls
  182. www-user-group:
  183. group.present:
  184. - name: www
  185. - gid:
  186.  
  187. user.present:
  188. - name: www
  189. - fullname: www
  190. - shell: /sbin/bash
  191. - uid:
  192. - gid:
  193.  
  194. 、常用基础命令
  195. #这里因为各软件包会依赖源,所以使用include讲yum源包含进来,并在pkg.installed最后增加require依赖
  196. [root@linux-node1 init]# vim pkg-base.sls
  197. include:
  198. - init.yum-repo
  199. base-install:
  200. pkg.installed:
  201. - pkgs:
  202. - screen
  203. - lrzsz
  204. - tree
  205. - openssl
  206. - telnet
  207. - iftop
  208. - iotop
  209. - sysstat
  210. - wget
  211. - dos2unix
  212. - lsof
  213. - net-tools
  214. - mtr
  215. - unzip
  216. - zip
  217. - vim
  218. - bind-utils
  219. - require:
  220. - file: /etc/yum.repos.d/epel.repo
  221.  
  222. 、用户登录提示、PS1的修改
  223. [root@linux-node1 init]# vim tty-ps1.sls
  224. /etc/bashrc:
  225. file.append:
  226. - text:
  227. - export PS1=' [\u@\h \w]\$ '
  228.  
  229. 、编写一个总的状态,并写入top file
  230. #将所有初始化所需要的功能编写完成,每个小功能都是一个sls文件,统一放在init目录下。此时再使用include把这些初始化的功能都包含进来。
  231. [root@linux-node1 init]# vim init-all.sls
  232. include:
  233. - init.dns
  234. - init.yum-repo
  235. - init.firewalld
  236. - init.history
  237. - init.limit
  238. - init.ntp
  239. - init.pkg-base
  240. - init.selinux
  241. - init.sshd
  242. - init.sysctl
  243. - init.thin
  244. - init.tty-timeout
  245. - init.tty-ps1
  246. - init.user-www
  247.  
  248. #在top.sls里面给Minion指定状态并执行,强烈建议先测试,确定SaltStack会执行哪些操作然后再应用状态到服务器上
  249. [root@linux-node1 base]# vim top.sls
  250. base:
  251. '*':
  252. - init.init-all
  253. [root@linux-node1 base]# salt '*' state.highstate test=True
  254. [root@linux-node1 base]# salt '*' state.highstate

2、MySQL主从

1.需求分析: 
配置MySQL主从的有以下步骤: 
(1)MySQL安装初始化—->mysql-install.sls 
(2)MySQL的主配置文件my.cnf配置不同的server_id–>mariadb-server-master.cnf、mariadb-server-slave.cnf 
(3)创建主从同步用户–>master.sls 
(4)master获取bin-log和post值–>通过脚本实现 
(5)slave上,change master && start slave–>slave.sls

2.需求实现:

  1. ()在prod环境下载创建modulesmysql目录
  2. [root@linux-node1 prod]# pwd
  3. /srv/salt/prod
  4. [root@linux-node1 prod]# mkdir modules/mysql
  5.  
  6. ()配置安装和配置状态文件install.sls
  7. [root@linux-node1 mysql]# cat install.sls
  8. mysql-install:
  9. pkg.installed:
  10. - pkgs:
  11. - mariadb
  12. - mariadb-server
  13.  
  14. mysql-config:
  15. file.managed:
  16. - name: /etc/my.cnf
  17. - source: salt://modules/mysql/files/my.cnf
  18. - user: root
  19. - gourp: root
  20. - mode:
  21. [root@linux-node1 mysql]# cp /etc/my.cnf files/
  22.  
  23. ()在主上配置mariadb-server.cnf,并更改server_id,以及创建主从用户
  24. [root@linux-node1 mysql]# cat master.sls
  25. include:
  26. - modules.mysql.install
  27.  
  28. master-config:
  29. file.managed:
  30. - name: /etc/my.cnf.d/mariadb-server.cnf
  31. - source: salt://modules/mysql/files/mariadb-server-master.cnf
  32. - user: root
  33. - group: root
  34. - mode:
  35.  
  36. master-grant:
  37. cmd.run:
  38. - name: mysql -e "grant replication slave on *.* to repl@'192.168.56.0/255.255.255.0' identified by '123456';flush privileges;"
  39. [root@linux-node1 mysql]# cp /etc/my.cnf.d/mariadb-server.cnf files/mariadb-server-master.cnf
  40. [root@linux-node1 mysql]# cp /etc/my.cnf.d/mariadb-server.cnf files/mariadb-server-slave.cnf
  41.  
  42. #修改主从的配置文件的server_id和开启主上的log-bin功能
  43. [root@linux-node1 mysql]# vim files/mariadb-server-master.cnf
  44. [mysqld]
  45. server_id=
  46. log-bin=mysql-bin
  47. [root@linux-node1 mysql]# vim files/mariadb-server-slave.cnf
  48. [mysqld]
  49. server_id=
  50.  
  51. ()编写shell脚本获取bin-log值和pos
  52. [root@linux-node1 mysql]# cat files/start-slave.sh
  53. #!/bin/bash
  54. for i in `seq `
  55. do
  56. mysql -h 192.168.56.11 -urepl -p123456 -e "exit"
  57. if [ $? -eq ];then
  58. Bin_log=`mysql -h 192.168.56.11 -urepl -p123456 -e "show master status;"|awk 'NR==2{print $1}'`
  59. POS=`mysql -h 192.168.56.11 -urepl -p123456 -e "show master status;"|awk 'NR==2{print $2}'`
  60. mysql -e "change master to master_host='192.168.56.11', master_user='repl', master_password='123456', master_log_file='$Bin_log', master_log_pos=$POS;start slave;"
  61. exit;
  62. else
  63. sleep ;
  64. fi
  65. done
  66.  
  67. ()从库上配置slave,并启动
  68. [root@linux-node1 mysql]# cat slave.sls
  69. include:
  70. - modules.mysql.install
  71.  
  72. slave-config:
  73. file.managed:
  74. - name: /etc/my.cnf.d/mariadb-server.cnf
  75. - source: salt://modules/mysql/files/mariadb-server-slave.cnf
  76. - user: root
  77. - group: root
  78. - mode:
  79.  
  80. start-slave:
  81. file.managed:
  82. - name: /tmp/start-slave.sh
  83. - source: salt://modules/mysql/files/start-slave.sh
  84. - user: root
  85. - group: root
  86. - mode:
  87. cmd.run:
  88. - name: /bin/bash /tmp/start-slave.sh

3、HAproxy+Keepalived

(1)pkg配置管理

  1. [root@linux-node1 modules]# mkdir pkg
  2. [root@linux-node1 pkg]# vim pkg-init.sls
  3. pkg-init:
  4. pkg.installed:
  5. - names:
  6. - gcc
  7. - gcc-c++
  8. - glibc
  9. - make
  10. - autoconf
  11. - openssl
  12. - openssl-devel
  13. [root@linux-node1 pkg]# salt 'linux-node1*' state.sls modules.pkg.pkg-init saltenv=prod test=True

(2)haproxy配置管理

  1. [root@linux-node1 modules]# mkdir haproxy/files -p
  2. [root@linux-node1 haproxy]# cat haproxy.sls
  3. include:
  4. - pkg.pkg-init
  5.  
  6. haproxy-install:
  7. file.managed:
  8. - name: /usr/local/src/haproxy-1.5..tar.gz
  9. - source: salt://modules/haproxy/files/haproxy-1.5.3.tar.gz
  10. - user: root
  11. - group: root
  12. - mode:
  13. cmd.run:
  14. - name: cd /usr/local/src && tar -zxvf haproxy-1.5..tar.gz && cd haproxy-1.5. && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
  15. - unless: test -d /usr/local/haproxy
  16. - require:
  17. - pkg: pkg-init
  18. - file: haproxy-install
  19.  
  20. /etc/init.d/haproxy:
  21. file.managed:
  22. - source: salt://modules/haproxy/files/haproxy.init
  23. - user: root
  24. - group: root
  25. - mode:
  26. - require:
  27. - cmd: haproxy-install
  28.  
  29. net.ipv4.ip_nonlocal_bind:
  30. sysctl.present:
  31. - value:
  32.  
  33. haproxy-config-dir:
  34. file.directory:
  35. - name: /etc/haproxy
  36. - mode:
  37. - user: root
  38. - group: root
  39.  
  40. haproxy-init:
  41. cmd.run:
  42. - name: chkconfig --add haproxy
  43. - unless: chkconfig --list | grep haproxy
  44. - require:
  45. - file: /etc/init.d/haproxy
  46. [root@linux-node1 haproxy]# cp /usr/local/src/haproxy-1.5..tar.gz files/
  47. [root@linux-node1 haproxy]# cp /usr/local/src/haproxy-1.5./examples/haproxy.init files/
  48. [root@linux-node1 haproxy]# tree
  49. .
  50. ├── files
  51. ├── haproxy-1.5..tar.gz
  52. └── haproxy.init
  53. └── install.sls

(3)Keepalived配置管理

  1. [root@linux-node1 keepalived]# vim install.sls
  2. include:
  3. - pkg.pkg-init
  4.  
  5. keepalived-install:
  6. file.managed:
  7. - name: /usr/local/src/keepalived-1.2..tar.gz
  8. - source: salt://modules/keepalived/files/keepalived-1.2.17.tar.gz
  9. - user: root
  10. - gourp: root
  11. - mode:
  12. cmd.run:
  13. - name: cd /usr/locall/src && tar -zxf keepalived-1.2..tar.gz && cd keepalived-1.2. && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install
  14. - unless: test -d /usr/local/keepalived
  15. - require:
  16. - pkg: pkg-init
  17. - file: keepalived-install
  18.  
  19. /etc/sysconfig/keeplived:
  20. file.managed:
  21. - source: salt://modules/keepalived/files/keepalived-sysconfig
  22. - user: root
  23. - gourp: root
  24. - mode:
  25.  
  26. /etc/init.d/keepalived:
  27. file.managed:
  28. - sourcd: salt://modules/keepalived/files/keepalived.init
  29. - user: root
  30. - group: root
  31. - mode:
  32.  
  33. keepalive-init:
  34. cmd.run:
  35. - name: chkconfig --add keepalived
  36. - unless: chkconfig --list | grep keepalived
  37. - require:
  38. - file: /etc/init.d/keepalived
  39.  
  40. /etc/keepalived:
  41. file.directory:
  42. - user: root
  43. - group: root
  44. [root@linux-node1 keepalived]# cp /usr/local/src/keepalived-1.2..tar.gz files/
  45. [root@linux-node1 init.d]# pwd
  46. /usr/local/src/keepalived-1.2./keepalived/etc/init.d
  47. [root@linux-node1 init.d]# cp keepalived.init /srv/salt/prod/modules/keepalived/files/
  48. [root@linux-node1 init.d]# cp keepalived.sysconfig /srv/salt/prod/modules/keepalived/files/
  49. [root@linux-node1 keepalived]# tree
  50. .
  51. ├── files
  52. ├── keepalived-1.2..tar.gz
  53. ├── keepalived.init
  54. └── keepalived.sysconfig
  55. └── install.sls

4、Nginx+PHP

(1)Nginx配置管理

  1. [root@linux-node1 modules]# mkdir pcre
  2. [root@linux-node1 pcre]# cat init.sls
  3. pcre-install:
  4. pkg.installed:
  5. - names:
  6. - pcre
  7. - pcre-devel
  8. [root@linux-node1 modules]# mkdir user
  9. [root@linux-node1 user]# cat www.sls
  10. www-user-group:
  11. group.present:
  12. - name: www
  13. - gid:
  14.  
  15. user.present:
  16. - name: www
  17. - fullname: www
  18. - shell: /sbin/nologin
  19. - uid:
  20. - gid:
  21. [root@linux-node1 modules]# mkdir nginx/files -p
  22. [root@linux-node1 nginx]# cp /usr/local/src/nginx-1.12..tar.gz files/
  23. [root@linux-node1 nginx]# tree
  24. .
  25. ├── files
  26. └── nginx-1.12..tar.gz
  27. └── install.sls
  28. [root@linux-node1 nginx]# cat install.sls
  29. include:
  30. - modules.pcre.init
  31. - modules.user.www
  32. - modules.pkg.pkg-init
  33.  
  34. nginx-source-install:
  35. file.managed:
  36. - name: /usr/local/src/nginx-1.12..tar.gz
  37. - source: salt://modules/nginx/files/nginx-1.12.2.tar.gz
  38. - user: root
  39. - group: root
  40. - mode:
  41. cmd.run:
  42. - name : cd /usr/local/src && tar -zxf nginx-1.12..tar.gz && cd nginx-1.12. && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module && make && make install && chown -R www.www /usrl/local/nginx
  43. - unless: test -d /usr/local/nginx
  44. - require:
  45. - user: www-user-group
  46. - file: nginx-source-install
  47. - pkg: pcre-install
  48. - pkg: pkg-init
  49. [root@linux-node1 nginx]# salt 'linux-node1*' state.sls modules.nginx.install saltenv=prod test=True

(2)PHP配置管理

  1. [root@linux-node1 modules]# mkdir php/files -p
  2. [root@linux-node1 php]# cp /usr/local/src/php-5.6./sapi/fpm/init.d.php-fpm files/
  3. [root@linux-node1 php]# cp /usr/local/php/etc/php-fpm.conf.default files/
  4. [root@linux-node1 php]# cp /usr/local/src/php-5.6./php.ini-production files/
  5. [root@linux-node1 php]# cp /usr/local/src/php-5.6..tar.gz files/
  6. [root@linux-node1 php]# tree
  7. .
  8. ├── files
  9. ├── init.d.php-fpm
  10. ├── php-5.6..tar.gz
  11. ├── php-fpm.conf.default
  12. └── php.ini-production
  13. └── install.sls
  14. [root@linux-node1 php]# cat install.sls
  15. include:
  16. - modules.user.www
  17.  
  18. pkg-php:
  19. pkg.installed:
  20. - names:
  21. - mysql-devel
  22. - openssl-devel
  23. - swig
  24. - libjpeg-turbo
  25. - libjpeg-turbo-devel
  26. - libpng
  27. - libpng-devel
  28. - freetype
  29. - freetype-devel
  30. - libxml2
  31. - libxml2-devel
  32. - zlib
  33. - zlib-devel
  34. - libcurl
  35. - libcurl-devel
  36.  
  37. php-source-install:
  38. file.managed:
  39. - name: /usr/local/src/php-5.6..tar.gz
  40. - source: salt://modules/php/files/php-5.6.9.tar.gz
  41. - user: root
  42. - gourp: root
  43. - mode:
  44. cmd.run:
  45. - name: cd /usr/local/src && tar -zxf php-5.6..tar.gz && cd php-5.6. && ./configure --prefix=/usr/local/php -with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-libxml-dir --with-curl --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --with-openssl --enable-mbstring --with-gd --enable-gd-native-ttf --with-freetype-dir=/usr/lib64 --with-gettext=/usr/lib64 --enable-sockets --with-xmlrpc --enable-zip --enable-soap --disable-debug --enable-opcache --enable-zip --with-config-file-path=/usr/local/php-fastcgi/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www && make && make install
  46. - require:
  47. - file: php-source-install
  48. - user: www-user-group
  49. - unless: test -d /user/local/php
  50.  
  51. php-ini:
  52. file.managed:
  53. - name: /usr/local/php/etc/php.ini
  54. - source: salt://modules/php/files/php.ini-production
  55. - user: root
  56. - group: root
  57. - mode:
  58.  
  59. php-fpm:
  60. file.managed:
  61. - name: /usr/local/php/etc/php-fpm.conf
  62. - source: salt://modules/php/files/php-fpm.conf.default
  63. - user: root
  64. - group: root
  65. - mode:
  66.  
  67. php-service:
  68. file.managed:
  69. - name: /etc/init.d/php-fpm
  70. - source: salt://modules/php/files/init.d.php-fpm
  71. - user: root
  72. - group: root
  73. - mode:
  74. cmd.run:
  75. - name: chkconfig --add php-fpm
  76. - unless: chkconfig --list | grep php-fpm
  77. - require:
  78. - file: php-service
  79. service.running:
  80. - name: php-fpm
  81. - enable: True
  82. - reload: True
  83. - require:
  84. - file: php-ini
  85. - file: php-fpm
  86. - file: php-service
  87. - cmd: php-service

统一使用的功能都抽象成一个模块,如安装以及基本配置(nginx中包含include,php中包含的include,那么就可以将nginx.conf放在功能模块,而虚拟主机配置文件,可以放在业务模块)。 
其它配置和服务启动可以抽象在一个业务模块,每一个业务都是使用不同的配置文件。

服务全部使用www用户,统一id,只开放8080端口,对于web服务只开放ssh的8022端口以及web的8080端口。其余不用的端口一律不开启

这里将nginx,php都抽象成一个模块,把安装和基础配置都放在了modules中,在nginx衍生的业务模块web目录下,做一个bbs的虚拟主机。

  1. [root@linux-node1 base]# vim top.sls
  2. prod:
  3. '*':
  4. - web.bbs
  5. [root@linux-node1 base]# salt '*' state.highstate

SaltStack入门篇(七)之架构部署实战的更多相关文章

  1. 【SSRS】入门篇(七) -- 报表发布

    原文:[SSRS]入门篇(七) -- 报表发布 完成[SSRS]入门篇(六) -- 分组和总计后,第一份简单的报表就已完成了,下面把报表发布到报表服务器上. (实际情况下,报表展示给用户未必是用报表服 ...

  2. SaltStack入门篇(六)之部署Redis主从实现和Job管理

    一.部署Redis主从 需求: 192.168.56.11是主,192.168.56.12是从 redis监听自己的ip地址,而不是0.0.0.0 分析: linux-node1 安装 配置 启动 l ...

  3. SaltStack入门篇(五)之salt-ssh的使用以及LAMP状态设计部署

    1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html ()安装salt-ssh [root@li ...

  4. SaltStack入门篇(一)之SaltStack部署

    一.SaltStack概述 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...

  5. Docker入门(七):部署app

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  6. SaltStack入门篇(四)之深入理解SaltStack远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

  7. SaltStack入门篇(三)之数据系统Grains、Pillar

    1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...

  8. SaltStack入门篇(二)之远程执行和配置管理

    1.远程执行 第一条命令: [root@linux-node1 master]# salt '*' test.ping linux-node2.example.com: True linux-node ...

  9. c++入门篇七

    拷贝构造函数的调用时机: class Person { public: //构造函数 Person() { //无参构造函数 } Person(int a) { //有参构造函数 cout <& ...

随机推荐

  1. redis几种加锁的实现

    1. redis加锁分类 redis能用的的加锁命令分表是INCR.SETNX.SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执 ...

  2. bzoj5153 [Wc2018]州区划分

    题目链接 正解:子集和变换. 考场上只会暴力和$p=0$的情况,还只会$O(2^{n}*n^{3})$的. 然而这题题面出锅,导致考场上一直在卡裸暴力,后面的部分分没写了..听$laofu$说$O(2 ...

  3. Vue - 如何实现一个双向绑定

    JS - 如何实现一个类似 vue 的双向绑定 Github JS 实现代码 先来看一张图: 这张图我做个简要的描述: 首先创建一个实例对象,分别触发了 compile  解析指令 和 observe ...

  4. 10-RabbitMQ-整合SpringBoot

    RabbitMQ整个SpringBoot SpringBoot因其配置简单.快速开发,已经成为热门的开发之一 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息 而消 ...

  5. Java50道经典习题-程序22 递归求阶乘

    题目:利用递归方法求5!.分析:递归公式:n*factorial(n-1); public class Prog22 { public static void main(String[] args) ...

  6. Emgu学习之(三)——操作图像数据

    Visual Studio Community 2015 工程和代码:http://pan.baidu.com/s/1jHmlQeE 内容 在这篇文章中将提到以下内容: 修改像素值 图像ROI 图像加 ...

  7. VC++ UDP网络控制台程序

     采用的是VC2008,控制台应用程序,使用UDP编写. 1.服务端代码 //UDPServer.cpp #include <WinSock2.h> #include <stdio. ...

  8. Unity3D-射线效果

    基于airplane_02 下面新建 Line Renderer 将上面的几个地方设置下 添加Script脚本: 脚本代码为: using System.Collections; using Syst ...

  9. [AHOI2001]多项式乘法

    \([Link](https://www.luogu.org/problemnew/show/P2553)\) \(\color{red}{\mathcal{Description}}\) 给出两个多 ...

  10. SDN测量论文粗读(二)9.21

    Monocle: Dynamic,Fine-Grained Data Plane Monitoring 论文来源:CoNext 发表时间:2015 解决问题及所做贡献:Monocle:检测交换机中硬件 ...