目录结构

|-- pillar
| |-- nginx
| | `-- nginx.sls #nginx变量(key:value)
| `-- top.sls
`-- salt|-- init #初始化目录
| `-- repos.sls #安装yum源
|-- roles #角色(nginx和php)
| |-- nginx #Nginx
| | |-- config.sls #copy和利用pillar渲染配置文件
| | |-- files #存放需要copy和渲染到客户端的文件
| | | |-- fastcgi_params
| | | |-- jim_fix_params
| | | |-- nginx-1.8.1.tar.gz
| | | |-- nginx.conf
| | | |-- test.php
| | | `-- vhosts.conf
| | |-- install.sls #安装Nginx
| | `-- service.sls #启动Nginx
| |-- php #PHP
| | |-- config.sls #COPY配置文件从master端到minion端
| | |-- files #存放需要copy到客户端的文件
| | | |-- php-fpm.conf
| | | |-- php.ini
| | | `-- timecash.conf
| | |-- install.sls #安装PHP
| | `-- service.sls #启动PHP
| `-- user #创建启动php和nginx的用户
| `-- www.sls #创建www用户
`-- top.sls #引用角色的

准备阶段

指定master端pillar和salt文件的目录

vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar file_roots:
base:
- /srv/salt

编写配置文件

pillar

/srv/salt/pillar/nginx/nginx.sls

vim  srv/pillar/nginx/nginx.sls
vhost:
server_name: zhai.timecash.cn #渲染nginx的vhost的server_name
target: /alidata1/nginx/conf/vhosts/zhai.conf #指定从master端把配置文件copy到minion叫的名字
web_dir: /alidata1/www/timecash22/zhai.timecash.cn #指定web程序路径

init

/srv/salt/init/repos.sls

vim /srv/salt/init/repos.sls
yum_epel_repo_release:
pkg.installed:
- sources:
- epel-release: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- unless: rpm -qa|grep epel-release-7-10
yum_webtatic_repo_release:
pkg.installed:
- sources:
- webtatic-replase: https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
- unless: rpm -qa |grep webtatic-release-7-3.noarch

roles

nginx

/srv/salt/roles/nginx/install.sls(安装Nginx)

 vim /srv/salt/roles/nginx/install.sls
nginx_source:
file.managed:
- name: /tmp/nginx-1.8.1.tar.gz
- unless: test -d /tmp/nginx-1.8.1.tar.gz
- user: root
- group: root
- makedirs: True
- source: salt://roles/nginx/files/nginx-1.8.1.tar.gz
nginx_extract:
cmd.run:
- cwd: /tmp
- names:
- tar -zxf nginx-1.8.1.tar.gz
- unless: test -d /tmp/nginx-1.8.1.tar.gz
- require:
- file: nginx_source
nginx_pkg:
pkg.installed:
- pkgs:
- gcc
- gcc-c++
- openssl-devel
- pcre-devel
- zlib-devel
nginx_compile:
cmd.run:
- cwd: /tmp/nginx-1.8.1
- names:
- ./configure --user=www --prefix=/alidata1/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_realip_module
- make
- make install
- require:
- cmd: nginx_extract
- pkg: nginx_pkg
- unless: test -d /usr/local/nginx

/srv/salt/roles/nginx/config.sls(渲染Nginx配置文件并copy到minion端)

vim /srv/salt/roles/nginx/config.sls
nginx-conf:
file.managed:
- name: /alidata1/nginx/conf/nginx.conf
- source: salt://roles/nginx/files/nginx.conf
- user: root
- group: root
- template: jinja
- defaults:
num_cpus: {{ grains['num_cpus'] }} #master端的nginx.conf中num_cpus变量用grains['num_cpus']渲染之后发送到minion端
vhost-conf:
file.managed:
- name: {{ pillar['vhost']['target'] }} #从master端copy到minion端叫的名字,在pillar里定义的
- source: salt://roles/nginx/files/vhosts.conf
- template: jinja
- defaults:
server_name: {{ pillar['vhost']['server_name'] }} #master端vhosts.conf中server_name变量,用pillar里的渲染,并发送到minion端 fastcgi-params:
file.managed:
- name: /alidata1/nginx/conf/fastcgi_params
- source: salt://roles/nginx/files/fastcgi_params
- user: root
- group: root
jim-fix-params:
file.managed:
- name: /alidata1/nginx/conf/jim_fix_params
- source: salt://roles/nginx/files/jim_fix_params
- user: root
- group: root
create_dir:
cmd.run:
- names:
- mkdir -p /alidata1/nginx/conf/vhosts/
- mkdir -p {{ pillar['vhost']['web_dir'] }}

php

/srv/salt/roles/php/install.sls(安装PHP)

vim /srv/salt/roles/php/install.sls
php_pkg:
pkg.installed:
- pkgs:
- gcc
- gcc-c++
- autoconf
- automake
- zlib
- zlib-devel
- openssl
- openssl-devel
- pcre
- pcre-devel
php_install:
pkg.installed:
- pkgs:
- php56w.x86_64
- php56w-bcmath.x86_64
- php56w-cli.x86_64
- php56w-common.x86_64
- php56w-devel.x86_64
- php56w-fpm.x86_64
- php56w-gd.x86_64
- php56w-mbstring.x86_64
- php56w-mcrypt.x86_64
- php56w-mysql.x86_64
- php56w-opcache.x86_64
- php56w-pdo.x86_64
- php56w-soap.x86_64
- php56w-xml.x86_64
- php56w-xmlrpc.x86_64

/srv/salt/roles/php/config.sls(copy配置文件到minion端)

vim /srv/salt/roles/php/config.sls
php_log_dir:
file.directory:
- name: /alidata1/php/logs/
- user: root
- group: root
- makedirs: True
rm_default_config:
cmd.run:
- name: rm -rf /etc/php-fpm.d/www.conf
php-ini:
file.managed:
- name: /etc/php.ini
- source: salt://roles/php/files/php.ini
- user: root
- group: root
php-fpm-conf:
file.managed:
- name: /etc/php-fpm.conf
- source: salt://roles/php/files/php-fpm.conf
- user: root
- group: root
timecash-conf:
file.managed:
- name: /etc/php-fpm.d/timecash.conf
- source: salt://roles/php/files/timecash.conf
- user: root
- group: root

top

/srv/salt/top.sls

vim /srv/salt/top.sls
base:
'*':
- roles.nginx.install
- roles.nginx.config
- roles.php.install
- roles.php.config

最新文章

  1. py-faster-rcnn之从solver文件创建solver对象,建立pythonlayer
  2. case break结构与return的有关要点
  3. REPEATABLE-READ下批量更新数据的问题
  4. Outlook2003收到的邮件不能显示图片,但转发或回复可以 故障排错
  5. javamail 收邮件并解析附件
  6. React中props.children和React.Children的区别
  7. 父类构造函数中的this指针在子类构造对象后,这个this指针指向什么
  8. Android UI——分享一个登录缓冲界面
  9. Introducing RecyclerView(一)
  10. JSON 解析(门店)
  11. no drawer view found with gravity RIGHT(Android实现侧滑菜单从右面滑出) 解决办法
  12. Java 生成本文文件的时候,Dos格式转成Unix格式
  13. ASP.NET MVC 使用TryUpdateModel 更新的技巧
  14. 一位资深程序员大牛给予Java提升技术的学习路线建议
  15. python---数据类型---列表
  16. mybatis的使用
  17. 什么是ZooKeeper?
  18. webpack学习笔记——--save-dev和--save
  19. wangEditor-基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费(2)
  20. Qt 编程指南 9 软件打包

热门文章

  1. BotFramework学习-02
  2. java.math.BigDecimal类multiply的使用
  3. E. String Multiplication
  4. Win10上 visual studio设置为本地IIS运行网站时 必须以管理员身份加载项目的解决方法
  5. ssh架包下载地址
  6. 「 Luogu P3137 」X 「 USACO16FEB 」 圆形谷仓
  7. POJ 1637 Sightseeing tour 建图+网络流
  8. 笔试算法题(38):并查集(Union-Find Sets)
  9. PHP:GD库 图片水印处理
  10. LeetCode(46)Permutations