Saltstack-进阶篇
查看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-进阶篇的更多相关文章
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- idea 插件的使用 进阶篇
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...
- 2. web前端开发分享-css,js进阶篇
一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...
- windows系统快捷操作の进阶篇
上次介绍了windows系统上一些自带的常用快捷键,有些确实很方便,也满足了我们的一部分需求.但是我们追求效率的步伐怎会止步于此?这一次我将会进一步介绍windows上提升效率的方法. 一:运行 打开 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- 最快让你上手ReactiveCocoa之进阶篇
前言 由于时间的问题,暂且只更新这么多了,后续还会持续更新本文<最快让你上手ReactiveCocoa之进阶篇>,目前只是简短的介绍了些RAC核心的一些方法,后续还需要加上MVVM+Rea ...
- SQL Server调优系列进阶篇(查询优化器的运行方式)
前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符. ...
- SQL Server调优系列进阶篇(查询语句运行几个指标值监测)
前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...
- SQL Server调优系列进阶篇(深入剖析统计信息)
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL Server调优系列进阶篇(如何索引调优)
前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本 ...
随机推荐
- Ajax基本知识
1.创建xhr对象 var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari x ...
- c# Json Dictionary序列化和反序列化
说明:Dictionary对象本身不支持序列化和反序列化,需要定义一个继承自Dictionary, IXmlSerializable类的自定义类来实现该功能.感觉完全可以把这样的类封装到C#库中,很具 ...
- Failed to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 if SQL Server version was lower than 2012
I tried to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 for client. after generated n ...
- [ html canvas createImageData 创建万花筒效果 ] canvas绘图属性 createImageData 属性讲解 及创建万花筒效果
<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q100-Q103)
Question 100You create a Web Part.You need to display the number of visits to a SharePoint site coll ...
- IOS Quartz2D 通过UIColor生成图片
普通生成 示例代码: //这里实现普通生成图片的方法 - (void)drawRect:(CGRect)rect { CGRect cxRect = CGRectMake(, , , ); UIGra ...
- IOS 应用跳转 (IOS9白名单)
跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 ...
- NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别
英文原文是这样的: A timer object can be registered in only one run loop at a time, although it can be added ...
- 在virtualbox下使用vm映像文件
virtualbox可以直接打开vmdk 创建虚拟机时先不要创建虚拟硬盘. 虚拟机创建成功后,在设置窗口,点击[存储],添加虚拟硬盘,点击选择现有的虚拟盘. 参考链接
- JSP基础--JAVA遇见HTML
1.手工编写第一个WEB应用程序 2.默认访问服务器网页首页欢迎界面是 index.jsp,就是网页链接访问其所在的文件夹目录,不访问这个文件,也会自动访问的.如果这个文件夹目录下没有index.js ...