查看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. saltstack 基础入门文档

    saltstack 和 Puppet Chef 一样可以让你同时在多台服务器上执行命令也包括安装和配置软件.Salt 有两个主要的功能:配置管理和远程执行.这里讲述了saltstack的基本使用方法. ...

  2. 年薪20万Python工程师进阶(7):Python资源大全,让你相见恨晚的Python库

    我是 环境管理 管理 Python 版本和环境的工具 pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. virtualenv – 创建独立 Python 环 ...

  3. 【SaltStack】SaltStack研究心得

    基础篇 ------------------------------------------------------------------------------------------------ ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. nodejs进阶(4)—读取图片到页面

    我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...

  6. JavaScript进阶之路(一)初学者的开始

    一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...

  7. nodejs进阶(3)—路由处理

    1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...

  8. nodejs进阶(5)—接收请求参数

    1. get请求参数接收 我们简单举一个需要接收参数的例子 如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球.通过前面的进 ...

  9. nodejs进阶(1)—输出hello world

    下面将带领大家一步步学习nodejs,知道怎么使用nodejs搭建服务器,响应get/post请求,连接数据库等. 搭建服务器页面输出hello world var  http  =  require ...

随机推荐

  1. 移除VS解决方案和TFS服务器的关系

    有时候会遇到服务器IP服务器变更,甚至TFS服务器坏了,或者将项目重新上传至新的TFS区: 可以使用notepad之类的软件打开解决方案(.sln文件),删掉类似下面的部分: GlobalSectio ...

  2. Hbase单机安装及使用hbase shell进行简单操作

    一,配置环境变量 在etc/prifile中加入java环境变量及hbase环境变量: #set java environment JAVA_HOME=/usr/local/lhc/jdk1.8.0_ ...

  3. 【LG4148】简单题

    [LG4148]简单题 题面 洛谷 题解 \(kdt\)模板题呀... #include <iostream> #include <cstdio> #include <c ...

  4. L018-课前练习以及知识巩固笔记

    L018-课前练习以及知识巩固笔记 OK,今天课前做了几道题,算是对以往知识的巩固. 1.请描述下列路径的内容是做什么的?/etc/sysctl.conf/etc/rc.local/etc/hosts ...

  5. C++从静态对象的初始化顺序理解static关键字

    问题 首先考虑一个全局变量的初始化顺序问题 在头文件1中: extern int b; ; 在头文件2中: extern int a; ; 源文件中包含了头文件1和头文件2,这种情况下a和b可能的值是 ...

  6. Keil出错解决方法

    1.安装KEIL5后创建工程后出现这个报错 解决方法:打开下图目录的文件. Keil.STM32F1xx_DFP.pdsc文件是只读文件,必须将只读属性取消. 如下图所示,注释掉红色圆圈的哪一行,保存 ...

  7. Spring Cloud Learning(一): 服务注册

    官网https://projects.spring.io/spring-cloud/,spring cloud官网各组件版本为: Component Edgware.SR4 Finchley.SR1 ...

  8. JUC——TimeUnit工具类(二)

    TimeUnit工具类 在java.util.concurrent开发包里面提供有一个TimeUnit类,这个类单独看它的描述是一个时间单元类.该类是一个枚举类,这也是juc开包里面唯一的一个枚举类. ...

  9. python序列和其它类型的比较

    序列对象可以与相同类型的其他对象比较.它们使用 字典顺序 进行比较:首先比较两个python序列的第一个元素,如果不同,那么这就决定了比较操作的结果.如果它们相同,就再比较每个序列的第二个元素,以此类 ...

  10. Spring Cloud(三):服务提供与调用 Eureka【Finchley 版】

    Spring Cloud(三):服务提供与调用 Eureka[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  上一篇文章我们介绍了 Eureka 服务 ...