欢迎来到小站.
svn checkout bat
svn checkout bat
windows 客户端安装subversion
windows svn-checkout.bat脚本编写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64/path/to/project/hooks/svn-checkout.bat:
@echo off
set PMSDIR=C:\clone_dir
set PMSVBS=%PMSDIR%\hooks\svn-update.vbs
set PMSBAT=%PMSDIR%\hooks\update.bat
set SVNURL=https://10.10.10.10/svn/test/
set SVNUSR=aaa
set SVNPWD=aaa
set SVNCMD="C:\Program Files (x86)\Subversion\bin\svn.exe"
if not exist %SVNCMD% (
echo 执行失败:
echo 系统未安装subversion,请先安装subversion后,在进行重新执行...
echo Subversion:https://sourceforge.net/projects/win32svn/
exit
)
if not exist %PMSDIR% (
echo 开始部署程序...
%SVNCMD% checkout %SVNURL% %PMSDIR% --username %SVNUSR% --password %SVNPWD%
echo 结束部署程序...
echo 开始执行vbs更新程序...
start %PMSVBS%
echo 结束执行vbs更新程序...
exit
) else (
echo 是否需要删除目录%PMSDIR%,并重新下载程序包?
echo 选择'yes',会删除目录%PMSDIR%,并重新下载程序包
echo 选择'no',默认会尝试更新目录%PMSDIR%
set /p input=请输入:
)
if %input% == yes (
taskkill /f /im wscript.exe
echo 已经停止wscript.exe服务
rd /s /Q %PMSDIR%
echo 已经删除目录%PMSDIR%
ping -n 3 127.0.0.1>nul
echo 开始重新部署程序...
%SVNCMD% checkout %SVNURL% %PMSDIR% --username %SVNUSR% --password %SVNPWD%
echo 结束重新部署程序...
echo 开始执行vbs更新程序...
call %PMSBAT%
echo 结束执行vbs更新程序...
) else (
echo 开始更新程序...
echo %SVNCMD% update %PMSDIR% --username %SVNUSR% --password %SVNPWD%
%SVNCMD% update %PMSDIR% --username %SVNUSR% --password %SVNPWD%
echo 结束更新程序...
)
pausewindows svn-update.bat脚本编写
1
2
3/path/to/project/hooks/svn-update.bat:
@echo off
"C:\Program Files (x86)\Subversion\bin\svn.exe" update "C:\clone_dir" --username "aaa" --password "aaa"windows svn-update.vbs脚本编写
1
2
3
4
5
6
7
8
9
10
11
12
13/path/to/project/hooks/svn-update.vbs:
'指定时间间隔调用.bat文件
'停止脚本请在任务管理器结束wscript.exe
Set ws=wscript.createobject("wscript.shell")
dim bat
'需运行的文件
bat="cmd.exe /c svn-update.bat"
do
'0表示不显示窗口,1显示,调试用
ws.run bat,0
'每60秒运行一次
wscript.sleep 60000
loopwindows update.bat脚本编写
1
2
3
4
5
6
7
8
9
10
11@echo off
set PMSDIR1=D:\clone_dir\hooks
set PMSVBS1=svn-update.vbs
if exist %PMSDIR1% (
cd /d %PMSDIR1%
echo 开始执行vbs程序:%PMSVBS1%
start %PMSVBS1%
echo 结束执行vbs程序:%PMSVBS1%
)
svn server for windows
nslookup dns search
nslookup dns search
1 | C:\Users\admin>nslookup |
kafka web console
kafka web console
Java install
1
2
3
4
5
6
7
8[root@localhost app]# tar xzf jdk-8u111-linux-x64.tar.gz
[root@localhost app]# mv jdk1.8.0_111 /mnt/app/java
[root@localhost app]# echo 'JAVA_HOME=/mnt/app/java' | tee /etc/profile.d/java.sh
[root@localhost app]# echo 'JRE_HOME=${JAVA_HOME}/jre' | tee -a /etc/profile.d/java.sh
[root@localhost app]# echo 'CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib' | tee -a /etc/profile.d/java.sh
[root@localhost app]# echo 'export PATH=${JAVA_HOME}/bin:$PATH' | tee -a /etc/profile.d/java.sh
[root@localhost app]# source /etc/profile
[root@localhost app]# java -versionsbt install
1
2
3
4
5
6
7
8
9
10[root@localhost app]# cat >/etc/yum.repos.d/bintray-sbt-rpm.repo<< eof
#bintray--sbt-rpm - packages by from Bintray
[bintray--sbt-rpm]
name=bintray--sbt-rpm
baseurl=https://sbt.bintray.com/rpm
gpgcheck=0
repo_gpgcheck=0
enabled=1
EOF
[root@localhost app]# yum -y install sbtscala install
1
2
3
4
5
6
7[root@localhost app]# wget https://downloads.lightbend.com/scala/2.11.6/scala-2.11.6.tgz
[root@localhost app]# tar xzf scala-2.11.6.tgz
[root@localhost app]# mv scala-2.11.6 /mnt/app/scala
[root@localhost app]# cat >/etc/profile.d/scala.sh <<EOF
export SCALA_HOME=/mnt/app/scala
export PATH=\$PATH:\$SCALA_HOME/bin
EOFkafka-web-console install
1
2
3
4
5
6
7
8
9
10
11
12[root@localhost app]# wget https://github.com/claudemamo/kafka-web-console/archive/master.zip
[root@localhost app]# unzip master
[root@localhost app]# cd kafka-web-console-master
[root@localhost kafka-web-console-master]# sbt package
[root@localhost kafka-web-console-master]# sbt dist
[root@localhost kafka-web-console-master]# sbt run //可以直接运行
[root@localhost kafka-web-console-master]# mkdir -p /mnt/app/kafka-web-console
[root@localhost kafka-web-console-master]# unzip target/universal/kafka-web-console-2.1.0-SNAPSHOT.zip /mnt/app/kafka-web-console
[root@localhost kafka-web-console-master]# cd /mnt/app/kafka-web-console
[root@localhost kafka-web-console]# bin/kafka-web-console -DapplyEvolutions.default=true
[root@localhost kafka-web-console]# bin/kafka-web-console -Dhttp.port=9001 >/dev/null 2>&1 &通过web浏览器进行查看
svn auto update
svn auto update
- svn自动更新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
241.找到版本库的克隆位置
找到hooks目录,在里面新建一个post-commit.bat文件
内容如下:
@echo off
"C:\Program Files (x86)\Subversion\bin\svn.exe" update "C:\Users\admin\Desktop\svntest" --username "username" --password "password"
2.手动执行一下bat脚本,验证是否OK
3.编写vbs脚本
callSvnUpdate.vbs内容如下:(前单引号"'"表示注释)
'指定时间间隔调用.bat文件
'停止脚本请在任务管理器结束wscript.exe
Set ws=wscript.createobject("wscript.shell")
dim bat
'需运行的文件
bat="cmd.exe /c svnUpdate.bat"
do
'0表示不显示窗口,1显示,调试用
ws.run bat,0
'每15秒运行一次
wscript.sleep 15000
loop
4.将vbs脚本和bat脚本放在同一个目录中,运行vbs脚本
salt manage event reactor
salt Event和Reactor系统
salt Event说明
1
2Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如:Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程.
Event也为扩展SaltStack提供了更加友好的接口.目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等查看event事件
1
[root@salt-master ~]# salt-run state.event pretty=True
salt Reactor系统
1
Reactor是基于Event的每个事件来做相应的操作(states).我们可以理解Reactor系统是一直监听着Event,然后触发一些States操作.例如:在我们日常大规模新机器上线或者初始化机器的时候,都希望Minion第一次服务起来的时候就能完成所有的配置,这个时候需要自动完成Minion的证书签发和根据不同的业务完成不同states配置.恰好Reactor就是干这个事情的.
master配置文件中添加如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34[root@salt-master ~]# vim /etc/salt/master
reactor:
- 'salt/auth': #监听证书认证event
- /mnt/data/salt.repo/reactor/minion.sls #执行states sls文件
- 'salt/minion/*/start': #监听Minion start event
- /mnt/data/salt.repo/reactor/auto.sls #执行states sls文件
[root@salt-master ~]# vim /mnt/data/salt.repo/reactor/minion.sls
{% if 'act' in data and data['act'] == 'pend' and data['id'].startswith('Min') %}
key_accept:
wheel.key.accept:
- match: {{ data['id'] }}
{% endif %}
[root@salt-master ~]# vim /mnt/data/salt.repo/reactor/auto.sls
run_state:
local.state.sls:
- tgt: {{ data['id'] }}
- arg:
- shencan
fun_init:
local.cmd.run:
- tgt: {{ data['id'] }}
- arg:
- echo initsok |tee /tmp/cpis
[root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/shencan.sls
/tmp/example:
file.managed:
- source: salt://example
5. 重启salt-master服务
6. 启动一台新的minion客户端,并且minion配置文件的ID中必须以"Min"开头即可.当minion启动时会自动初始化配置了
salt manage job
salt job管理
salt job说明
1
在SaltStack里面执行任何一个操作都会在Master上产生一个jid号.Minion端会在cache目录下的proc目录创建一个以jid为名称的文件,这个文件里面的内容就是此次操作的记录,当操作处理完成后该文件会自动删除.而Master端会记录每次操作的详细信息,这个记录都是存在Master端cache目录下jobs下.
通过salt-run来管理job
1
2
3
4
5
6
7
8//查看salt-run对job管理的一些用法
[root@salt-master ~]# salt-run -d |grep jobs
//查看job运行结果
[root@salt-master ~]# salt-run jobs.lookup_jid 2015050322312
//查看job详细记录
[root@salt-master ~]# salt-run jobs.list_job 2015050322312通过SaltStack Module来管理job
1
2
3
4
5
6
7
8
9
10salt-run对job管理功能比较局限,目前salt-run还不支持kill某个job.现在我们就开始介绍使用SaltStack自带的Module来管理job
//查看Module的用法
[root@salt-master ~]# salt \* sys.doc saltutil |grep job
//查看job信息
[root@salt-master ~]# salt 'Minion' saltutil.find_job 2015050322312
//杀掉job
[root@salt-master ~]# salt 'Minion' saltutil.kill_job 2015050322312
salt manage return
salt 执行结果处理
salt return组件说明
1
Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其他程序,它支持多种存储方式,比如:MySQL,MongoDB,Redis,Memcache等.通过Return我们可以对SaltStack的每次操作进行记录,对以后日志审计提供了数据来源.在选择和配置好要使用的Return后,只需在salt命令后面指定Return即可.
查看所有Return列表
1
[root@salt-master ~]# salt 'salt-minion-187' sys.list_returners
Return流程
1
2Return是在Master端触发任务,然后Minion接受处理任务后直接与Return存储服务器建立连接,然后把数据Return存到存储服务器.
关于这点大家一定要记住,因为这个过程都是Minion端操作存储服务器,所以要确保Minion端的配置跟依赖包是正确的使用Redis作为Return存储方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
221.修改配置文件
* Minion配置文件
* 在Minion上安装Redis Python Client
2.首先需要在Minion配置文件里面定义Return存储服务器信息.
[root@salt-minion-187 ~]# vim /etc/salt/minion
redis.db: '0'
redis.host: '192.168.10.1'
redis.port: 6379
3.因为是Minion直接操作Redis服务器,我们得确保Redis Python Client文件已经安装
[root@salt-minion-187 ~]# pip install redis
4.重启Minion服务
[root@salt-minion-187 ~]# systemctl salt-minion restart
5.验证
//在redis服务器上打开monitor
[root@redis ~]# redic-cli -p 6379 monitor
//在salt-master执行一个module
[root@salt-master ~]# salt 'salt-minion-187' cmd.run "hostname" –-return redis
salt manage states
salt 配置管理
salt states说明
1
2States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件.
比如:我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行.这里就需要我们编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能.这里需要说明的是编写的states sls文件都是YAML语法.当然states sls文件也支持使用Python语言来编写.查看minion所有states列表
1
[root@salt-master ~]# salt 'salt-minion-187' sys.list_state_modules
查看指定states的所有function
1
[root@salt-master ~]# salt 'salt-minion-187' sys.list_state_functions user
查看指定states用法
1
[root@salt-master ~]# salt 'salt-minion-187' sys.state_doc user.present
了解states
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
781.使用states的流程
* 编写top.sls文件(非必须)
* 编写states.sls文件
top.sls是states系统的入口文件,它在大规模配置管理工作中负责指定哪些设备调用哪些states.sls文件
如果我们只需简单对某台机器进行配置管理工作,我们可以直接使用state.sls命令指定states.sls文件即可
2.查看file_roots位置
[root@salt-master ~]# cat /etc/salt/master
file_roots:
base:
- /mnt/data/salt.repo/salt/base
3.新建一个one.sls state文件
[root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/one.sls
/tmp/foo.conf:
file.managed:
- source: salt://foo.conf
- user: root
- group: root
- mode: 644
- backup: minion
[root@salt-master ~]# echo "SaltStack Books" |tee /mnt/data/salt.repo/salt/base/foo.conf
4.对minion进行配置部署
[root@salt-master ~]# salt 'salt-minion-187' state.sls one
salt-minion-187:
----------
ID: /tmp/foo.conf
Function: file.managed
Result: True
Comment: File /tmp/foo.conf updated
Started: 10:33:26.113398
Duration: 36.989 ms
Changes:
----------
diff:
New file
mode:
0644
Summary for salt-minion-187
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 36.989 ms
5.在states的工作目录下新建top.sls文件
[root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/top.sls
base:
'*':
- one
6.通过top.sls执行
[root@salt-master ~]# salt 'salt-minion-187' state.apply saltenv=base test=True
或者:
[root@salt-master ~]# salt 'salt-minion-187' state.apply saltenv=base
或者:
[root@salt-master ~]# salt 'salt-minion-187' state.apply
salt-minion-187:
----------
ID: /tmp/foo.conf
Function: file.managed
Result: True
Comment: File /tmp/foo.conf is in the correct state
Started: 10:42:49.669735
Duration: 33.76 ms
Changes:
Summary for salt-minion-187
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 33.760 ms