查看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. GetReadyForWin10Develop

    GetReadyForWin10Develop 序言 今年4月29日晚的微软的Build大会上,微软在现场为我们演示了Android和IOS应用移植到windows平台,加上原本可以开发win8应用的 ...

  2. Win10安装framework3.5

    .NET少不了framewrok,其版本也比较多,默认情况下win7及上版本没有安装framework3.5,但有些软件又需要它,比如arcgis软件在安装时会检测是否存在3.5,如果没有,将不会正常 ...

  3. Android破解之Lic文件加密程序(首例)

    我不会写Android,这是我第一个破解Android的例子,耗时接近一天,希望大神不要见笑! 本程序为商业软件,不便发布APK程序. 不要给我发消息,我不得回,有问题,直接回帖就可以了. 准备工作 ...

  4. MS10-046漏洞测试

    这次用到MS10-046这个远程执行漏洞(Windows快捷方式LNK文件自动执行代码漏洞攻击) 命令: 1.   msfconsole    //启动MSF Metasploit 2.   sear ...

  5. Mybatis学习记录(七)----Mybatis查询缓存

    1. 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时需要构造 sql ...

  6. 【转】android shape的使用

    shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: <?xml version="1.0" encoding="ut ...

  7. OC语言-07-OC语言-Foundation框架

    结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInteger location:表示一个元素在另一个元素中的位 ...

  8. IOS开发关于测试的好的网址资源

    1. 高级自动化单元测试,推荐看LeanCloud 工程师的李智维的自动化单元测试的直播录影李智维的演示github 2.iOS开发-单元测试 这只是一篇简单的ios测试介绍 3.iOS单元测试 来自 ...

  9. HttpClient使用方法(包括POST文件)

    最近在做跨系统的数据交互业务,从.Net的系统提交数据到Java的系统. 简单的表单Get.POST都没问题,但是有个功能是要提交普通文本和文件,试了好多都有问题,最后用HttpClient小折腾了一 ...

  10. 【mysql】关于IO/内存方面的一些优化

    这里使用的是mysql  Ver 14.14 Distrib 5.6.19, for Linux (i686) using  EditLine wrapper 一.mysql目录文件 ibdata1: ...