查看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. IOS6学习笔记(二)

    四.使用关联引用为分类添加数据 虽然不能在分类中创建实例变量,但是可以创建关联引用(associative reference).通过关联引用,你可以向任何对象中添加键-值(key-value)数据. ...

  2. SAP内存/ABAP内存/共享内存区别

    (1).读取和使用方法不同SAP内存使用SET/GET parameters方法:SET PARAMETER ID 'MAT' field p_matnr.GET PARAMETER ID 'MAT' ...

  3. SharePoint 2010 文档管理系列之星级评论功能

    前言:正如我们前面介绍的是,文档管理就是让大家更加直观.方便的对手里的文档,进行统筹掌控,哪些文档是有价值的,哪些文档更受大家欢迎,所有就带来了这个星级评论. 当然,这个是SharePoint 201 ...

  4. android Android-PullToRefresh 下拉刷新

    1.github下载地址 原作者:  https://github.com/chrisbanes/Android-PullToRefresh 我自己的:  https://github.com/zyj ...

  5. CoreAnimation(CA)

    开发者真会玩,原来我看到CA都懵了.啥是CA?原来就是Core Animation.哎,读书少啊,被虐成

  6. JAVA基础学习day14--集合一

    一.集合的出现 1.1.集合简述 面向对象语言对事物的体现都是以对象形式,为了方便对多个对象的操作,就对象对象进行存储,集合就是存仪储对象最常用的一种试 1.2.数组和集合都是容器 数组也存对象,存储 ...

  7. CSS 类选择器(四)

    一.类选择器 类选择用使用"."(英文点号)进行标识,后面紧跟类名 如: .red{color:red;} 类样式可以应用于文档中的多个元素,这体现了CSS代码的可重用性,帮助用户 ...

  8. unity学习网站汇总

    由于最近要学习unity3d 开发,把自己找来的资料汇总下 unity3D官方学习资源:https://www.assetstore.unity3d.com/ unity3D API查询网站:http ...

  9. 关于Tomcat启动时报The APR based Apache Tomcat Native library which allows optimal performanc e in production environments was not found on the java.library.path

    错误信息如下 八月 01, 2016 10:11:15 上午 org.apache.catalina.core.AprLifecycleListener initINFO: The APR based ...

  10. 比较全面的MySQL优化参考(上下篇)

    转自:http://imysql.com/2015/05/24/mysql-optimization-reference-1.shtml 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨 ...