svn checkout bat

svn checkout bat

  1. windows 客户端安装subversion

  2. 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 结束更新程序...
    )

    pause
  3. windows 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"
  4. 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
    loop
  5. windows 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%
    )

nslookup dns search

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
C:\Users\admin>nslookup
默认服务器: public1.114dns.com
Address: 114.114.114.114

> set q=ns
> www.baidu.com
服务器: public1.114dns.com
Address: 114.114.114.114

非权威应答:
www.baidu.com canonical name = www.a.shifen.com

a.shifen.com
primary name server = ns1.a.shifen.com
responsible mail addr = baidu_dns_master.baidu.com
serial = 1712080024
refresh = 5 (5 secs)
retry = 5 (5 secs)
expire = 86400 (1 day)
default TTL = 3600 (1 hour)
>
> set q=a
> ns1.a.shifen.com
服务器: public1.114dns.com
Address: 114.114.114.114

非权威应答:
名称: ns1.a.shifen.com

kafka web console

kafka web console

  1. 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 -version
  2. sbt 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 sbt
  3. scala 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
    EOF
  4. kafka-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 &
  5. 通过web浏览器进行查看

svn auto update

svn auto update

  1. svn自动更新
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    1.找到版本库的克隆位置
    找到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系统

  1. salt Event说明

    1
    2
    Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如:Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程.
    Event也为扩展SaltStack提供了更加友好的接口.目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等
  2. 查看event事件

    1
    [root@salt-master ~]# salt-run state.event pretty=True
  3. salt Reactor系统

    1
    Reactor是基于Event的每个事件来做相应的操作(states).我们可以理解Reactor系统是一直监听着Event,然后触发一些States操作.例如:在我们日常大规模新机器上线或者初始化机器的时候,都希望Minion第一次服务起来的时候就能完成所有的配置,这个时候需要自动完成Minion的证书签发和根据不同的业务完成不同states配置.恰好Reactor就是干这个事情的.
  4. 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管理

  1. salt job说明

    1
    在SaltStack里面执行任何一个操作都会在Master上产生一个jid号.Minion端会在cache目录下的proc目录创建一个以jid为名称的文件,这个文件里面的内容就是此次操作的记录,当操作处理完成后该文件会自动删除.而Master端会记录每次操作的详细信息,这个记录都是存在Master端cache目录下jobs下.
  2. 通过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
  3. 通过SaltStack Module来管理job

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    salt-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 执行结果处理

  1. salt return组件说明

    1
    Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其他程序,它支持多种存储方式,比如:MySQL,MongoDB,Redis,Memcache等.通过Return我们可以对SaltStack的每次操作进行记录,对以后日志审计提供了数据来源.在选择和配置好要使用的Return后,只需在salt命令后面指定Return即可.
  2. 查看所有Return列表

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.list_returners
  3. Return流程

    1
    2
    Return是在Master端触发任务,然后Minion接受处理任务后直接与Return存储服务器建立连接,然后把数据Return存到存储服务器.
    关于这点大家一定要记住,因为这个过程都是Minion端操作存储服务器,所以要确保Minion端的配置跟依赖包是正确的
  4. 使用Redis作为Return存储方式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    1.修改配置文件
    * 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 配置管理

  1. salt states说明

    1
    2
    States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件.
    比如:我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行.这里就需要我们编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能.这里需要说明的是编写的states sls文件都是YAML语法.当然states sls文件也支持使用Python语言来编写.
  2. 查看minion所有states列表

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.list_state_modules
  3. 查看指定states的所有function

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.list_state_functions user
  4. 查看指定states用法

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.state_doc user.present
  5. 了解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
    78
    1.使用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