查看minion端的文件内容 
[root@linux-node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager 
nameserver 10.0.0.2 
[root@linux-node1 salt]# cd /srv/salt/base/ 
[root@linux-node1 base]# ll 
总用量 8 
-rw-r--r-- 1 root root 172 10月 31 15:40 apache.sls 
-rw-r--r-- 1 root root 186 11月  7 10:24 top.sls 
[root@linux-node1 base]# vim dns.sls 
[root@linux-node1 base]# cat dns.sls 
/etc/resolv.conf:                          #到minion端的路径 
  file.managed:                            #使用file模块下面的managed方法 
    - source: salt://files/resolv.conf     #master端的路径,salt是相对于当前所在的环境,现在是base环境路径下面的files 
    - user: root 
    - group: root 
    - mode: 644 
[root@linux-node1 base]# cp /etc/resolv.conf  ./files/ 
[root@linux-node1 base]# vim files/resolv.conf 
[root@linux-node1 base]# salt '*' state.sls dns               #执行方式一:这是直接执行dns.sls文件 
linux-node2.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 10:31:10.425201 
    Duration: 237.159 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,2 +1,1 @@ 
                  -# Generated by NetworkManager 
                   nameserver 10.0.0.2 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1 
linux-node1.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 10:31:10.554220 
    Duration: 208.259 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,2 +1,1 @@ 
                  -# Generated by NetworkManager 
                   nameserver 10.0.0.2 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1 
[root@linux-node2 ~]# cat /etc/resolv.conf 
nameserver 10.0.0.2 
=========================================================== 
[root@linux-node1 base]# cat top.sls                #编辑top.sls文件 
base: 
  '*': 
    - dns 
[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf     
#HAHFHDA 
nameserver 10.0.0.2 
[root@linux-node1 base]# salt '*' state.highstate    #第二种执行方式:高级状态执行 
linux-node2.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 10:33:58.727056 
    Duration: 47.411 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,1 +1,2 @@ 
                  +#HAHFHDA 
                   nameserver 10.0.0.2 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1 
linux-node1.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 10:33:58.721217 
    Duration: 51.418 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,1 +1,2 @@ 
                  +#HAHFHDA 
                   nameserver 10.0.0.2 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1

==========================================================

salt语法:YAML 
规则一:缩进 
        两个空格组成 
        不要使用tab键 
规则二:冒号 
        他的结果是以字典的方式 
        以冒号结尾和路径不需要加冒号 
        以冒号结尾 
规则三:短横线线 
        表示是一种列表关系(字典中的列表)      
        短横线后加空格        
[root@linux-node1 salt]# cd /srv/salt/base/ 
[root@linux-node1 base]# ls 
apache.sls  dns.sls  files  top.sls 
[root@linux-node1 base]# vim dns.sls 
[root@linux-node1 base]# cat dns.sls 
/etc/resolv.conf: 
  file.managed: 
    - source: salt://files/resolv.conf 
    - user: root 
    - group: root 
    - mode: 644 
    - template: jinja 
    - defaults: 
      DNS_SERVER: 10.0.0.2 
[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf    
#HAHFHDA 
nameserver {{DNS_SERVER}}                   #这里的变量名就是上面定义的变量名 
[root@linux-node1 base]# salt '*' state.highstate 
linux-node2.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 11:22:05.528398 
    Duration: 66.329 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,2 +1,2 @@ 
                   #HAHFHDA 
                  -nameserver 10.0.0.2 
                  +nameserver 10.0.0.3 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1 
linux-node1.example.com: 
---------- 
          ID: /etc/resolv.conf 
    Function: file.managed 
      Result: True 
     Comment: File /etc/resolv.conf updated 
     Started: 11:22:05.594718 
    Duration: 85.029 ms 
     Changes:   
              ---------- 
              diff: 
                  ---  
                  +++  
                  @@ -1,2 +1,2 @@ 
                   #HAHFHDA 
                  -nameserver 10.0.0.2 
                  +nameserver 10.0.0.3 
Summary 
------------ 
Succeeded: 1 (changed=1) 
Failed:    0 
------------ 
Total states run:     1      
[root@linux-node1 files]# cat /srv/salt/base/files/resolv.conf 
#HAHFHDA 
#{{ grains['fqdn_ip4'] }} 
nameserver 10.0.0.2 
[root@linux-node1 files]# salt '*' grains.item fqdn_ip4 
linux-node2.example.com: 
    ---------- 
    fqdn_ip4: 
        - 10.0.0.8 
linux-node1.example.com: 
    ---------- 
    fqdn_ip4:

- 10.0.0.7

==========================================================

执行模块   Pillar

=======================================================

第一部分:系统的初始化模块

[root@linux-node1 base]# vim /etc/salt/master

file_roots:

base: 
    - /srv/salt/base 
  test: 
    - /srv/salt/test 
  prod:

- /srv/salt/prod

1、dns解析

[root@linux-node1 base]# mv * /tmp

[root@linux-node1 base]# mkdir init

[root@linux-node1 base]# cp /tmp/dns.sls init/

[root@linux-node1 base]# cat init/dns.sls

/etc/resolv.conf:

file.managed:

- source: salt://init/files/resolv.conf

- user: root

- group: root

- mode: 644

[root@linux-node1 base]# mkdir init/files

[root@linux-node1 base]# cp /etc/resolv.conf init/files/

2、让history记住时间

使用file模块的append追加方式

[root@linux-node1 init]# vim history.sls

[root@linux-node1 init]# cat history.sls

/etc/profile:

file.append:

- text:

- export HISTTIMEFORMAT="%F %T `whoami` "

3、历史记录

[root@linux-node1 init]# cat audit.sls

/etc/bashrc:

file.append:

- text:

- export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";}'

4、内核参数调优

使用sysctl.present:模块修改

[root@linux-node1 init]# cat sysctl.sls

vm.swappiness:

sysctl.present:

- value: 0

net.ipv4.ip_local_port_range:

sysctl.present:

- value: 10000 65000

fs.file-max:

sysctl.present:

- value: 100000

--------------------------------

此模块找/proc/sys下找东西,点分隔

/proc/sys/net/ipv4/ip_local_port_range

5、把上面四个包括进来

[root@linux-node1 init]# cat env_init.sls

include:

- init.dns

- init.history

- init.audit

- init.sysctl

[root@linux-node1 base]# cat /srv/salt/base/top.sls

base:

'*':

- init.env_init

测试一下

[root@linux-node1 init]# salt '*' state.highstate test=TRUE

2:功能模块

[root@linux-node1 ~]# mkdir /srv/salt/prod/pkg -p 
[root@linux-node1 ~]# mkdir /srv/salt/prod/haproxy/files -p 
[root@linux-node1 ~]# cd /srv/salt/prod/pkg/ 
[root@linux-node1 pkg]# vim pkg-init.sls 
pkg-init: 
  pkg.installed: 
    - names: 
      - gcc 
      - gcc-c++ 
      - glibc 
      - make 
      - autoconf 
      - openssl 
      - openssl-devel 
[root@linux-node1 files]# cd /srv/salt/prod/haproxy/files 
[root@linux-node1 init]# cd /srv/salt/prod/haproxy/files/ 
[root@linux-node1 files]# ll 
总用量 22580                                                 
drwxrwxr-x 9 root root     4096 11月  7 14:42 haproxy-1.6.2 
-rw-r--r-- 1 root root  1538976 11月  7 09:04 haproxy-1.6.2.tar.gz 
-rw-r--r-- 1 root root     2395 11月  7 14:44 haproxy.init 
-rw-r--r-- 1 root root   330164 7月   7 22:18 keepalived-1.2.19.tar.gz 
-rw-r--r-- 1 root root   884733 10月 27 22:04 nginx-1.9.6.tar.gz 
-rw-r--r-- 1 root root  2041593 11月  5 17:48 pcre-8.37.tar.gz 
-rw-r--r-- 1 root root 18312905 11月  5 17:51 php-5.6.15.tar.gz 
[root@linux-node1 files]# tar xf haproxy-1.6.2.tar.gz 
[root@linux-node1 files]# cd haproxy-1.6.2 
[root@linux-node1 haproxy-1.6.2]# make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy 
[root@linux-node1 haproxy-1.6.2]# cd examples/ 
[root@linux-node1 examples]# vim haproxy.init(修改启动脚本为) 
BIN=/usr/local/haproxy/sbin/$BASENAME 
[root@linux-node1 examples]# cp haproxy.init /srv/salt/prod/haproxy/files/ 
[root@linux-node1 examples]# cd /srv/salt/prod/haproxy/ 
[root@linux-node1 haproxy]# vim install.sls 
include: 
  - pkg.pkg-init 
haproxy-install: 
  file.managed: 
    - name: /usr/local/src/haproxy-1.6.2.tar.gz 
    - source: salt://haproxy/files/haproxy-1.6.2.tar.gz 
    - user: root 
    - group: root 
    - mode: 755 
  cmd.run: 
    - name: cd /usr/local/src && tar zxf haproxy-1.6.2.tar.gz && cd haproxy-1.6.2 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy 
    - unless: test -d /usr/local/haproxy 
    - require: 
      - pkg: pkg-init 
      - file: haproxy-install 
haproxy-init: 
  file.managed: 
    - name: /etc/init.d/haproxy 
    - source: salt://haproxy/files/haproxy.init 
    - user: root 
    - group: root 
    - mode: 755 
    - require: 
      - cmd: haproxy-install 
  cmd.run: 
    - name: chkconfig --add haproxy 
    - unless: chkconfig --list | grep haproxy 
    - require: 
      - file: haproxy-init 
net.ipv4.ip_nonlocal_bind: 
  sysctl.present: 
    - value: 1 
haproxy-config-dir: 
  file.directory: 
    - name: /etc/haproxy 
    - user: root 
    - group: root

- mode: 755

3:业务模块

[root@linux-node1 files]#mkdir /srv/salt/prod/cluster/files -p 
[root@linux-node1 files]#cd /srv/salt/prod/cluster/files 
[root@linux-node1 files]# vim haproxy-outside.cfg 
global 
maxconn 100000 
chroot /usr/local/haproxy 
uid 99  
gid 99 
daemon 
nbproc 1 
pidfile /usr/local/haproxy/logs/haproxy.pid 
log 127.0.0.1 local3 info 
#默认参数设置 
defaults 
option http-keep-alive 
maxconn 100000 
mode http 
timeout connect 5000ms 
timeout client  50000ms 
timeout server 50000ms 
#开启Haproxy Status状态监控,增加验证 
listen stats 
mode http 
bind 0.0.0.0:8888 
stats enable 
stats uri     /haproxy-status 
stats auth    haproxy:saltstack 
#前端设置 
frontend frontend_www_example_com 
bind 192.168.56.20:80 
mode http 
option httplog 
log global 
    default_backend backend_www_example_com 
#后端设置 
backend backend_www_example_com 
option forwardfor header X-REAL-IP 
option httpchk HEAD / HTTP/1.0 
balance source 
server web-node1  10.0.0.7:8080 check inter 2000 rise 30 fall 15

server web-node2  10.0.0.8:8080 check inter 2000 rise 30 fall 15

##############################################

#将web---httpd的配置文件中的端口改成8080

#将haproxy的端口改成8888

##############################################

[root@linux-node1 cluster]# cat /srv/salt/prod/cluster/haproxy-outside.sls  
include: 
  - haproxy.install 
haproxy-service: 
  file.managed: 
    - name: /etc/haproxy/haproxy.cfg 
    - source: salt://cluster/files/haproxy-outside.cfg 
    - user: root 
    - group: root 
    - mode: 644 
  service.running: 
    - name: haproxy 
    - enable: True 
    - reload: True 
    - require: 
      - cmd: haproxy-init 
    - watch: 
      - file: haproxy-service 
[root@linux-node1 prod]# tree cluster/          
cluster/ 
├── files 
│   └── haproxy-outside.cfg

└── haproxy-outside.sls

Saltstack-进阶篇的更多相关文章

  1. Membership三步曲之进阶篇 - 深入剖析Provider Model

    Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...

  2. idea 插件的使用 进阶篇

    CSDN 2016博客之星评选结果公布    [系列直播]零基础学习微信小程序!      "我的2016"主题征文活动   博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...

  3. 2. web前端开发分享-css,js进阶篇

    一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...

  4. windows系统快捷操作の进阶篇

    上次介绍了windows系统上一些自带的常用快捷键,有些确实很方便,也满足了我们的一部分需求.但是我们追求效率的步伐怎会止步于此?这一次我将会进一步介绍windows上提升效率的方法. 一:运行 打开 ...

  5. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  6. 最快让你上手ReactiveCocoa之进阶篇

    前言 由于时间的问题,暂且只更新这么多了,后续还会持续更新本文<最快让你上手ReactiveCocoa之进阶篇>,目前只是简短的介绍了些RAC核心的一些方法,后续还需要加上MVVM+Rea ...

  7. SQL Server调优系列进阶篇(查询优化器的运行方式)

    前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符. ...

  8. SQL Server调优系列进阶篇(查询语句运行几个指标值监测)

    前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...

  9. SQL Server调优系列进阶篇(深入剖析统计信息)

    前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...

  10. SQL Server调优系列进阶篇(如何索引调优)

    前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本 ...

随机推荐

  1. SAP_Web_Service开发配置

    第一章    SAP创建WS 1.1       概要技术说明 1.2       创建RFC函数 1.3       创建WS 1.4       外部系统访问配置 第二章    SAP调用WS 2 ...

  2. RecyclerView添加头部和底部视图的实现

    ListView是有addHeaderView和 addFooterView两个方法的. 但是作为官方推荐的ListView的升级版RecyclerView缺无法实现这两个方法. 那么如果使用Recy ...

  3. 如何改进iOS App的离线使用体验

    App Store中的App分析 App已经与我们形影不离了,不管在地铁上.公交上还是在会场你总能看到很多人拿出来手机,刷一刷微博,看看新闻. 据不完全统计有近一半的用户在非Wifi环境打开App,以 ...

  4. Mac搭建本地svn服务器,并用Cornerstone连接服务器

    Mac默认已经安装了svn,我们只需要进行配置并开启就可以了 首先我们可以验证一下是否安装了svn,打开终端,输入命令 svnserve --version 这里可以看到目前svn的版本号,说明已经安 ...

  5. vs(vistual studio)项目文件名字重复问题

    今天遇到一情况,比较神奇,vs项目,我更新SVN的时候,发现竟然出现文件名字重复的现象. [caption id="" align="alignnone" wi ...

  6. 使用batch insert解决MySQL的insert吞吐量问题

    最近使用了一个非常简单易用的方法解决了业务上的一个insert吞吐量的问题,在此总结一下. 首先我们明确一下,insert吞吐量其实并不是指的IPS(insert per second),而是指的RP ...

  7. 整理了一些jQuery关于事件冒泡和事件委托的技巧

    首先,大家都知道,jQuery事件触发时有2种机制,一种是事件委托,另一种是事件冒泡(IE情况暂时不考虑).拿click事件做例子,先附上一段代码: html: <body> <di ...

  8. android中的坐标系以及获取坐标的方法

    android中有两种坐标系,分别称之为Android坐标系和视图坐标系.而对应的也有一些相关的方法可以获取坐标系中的 坐标值.只有搞清楚这些区别,才能在实现的时候不至于出错或者得不到你想要的效果. ...

  9. OSX下VirtualBox安装CentOS

    1.OSX上下载安装VirtualBox 2.新建虚拟机(所有选项默认即可) 3.启动虚拟机,选择CentOS安装镜像 CentOS-6.7-x86_64-minimal.iso 此处下载的是最小镜像 ...

  10. c++基础回顾

    #include <iostream> #include <vector> #include <string> int main(int argc, const c ...