设为首页 收藏本站
查看: 1944|回复: 0

[经验分享] ansible 部署基于windows 2008 r2+rsync+alwaysUp(守护进程)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-25 09:15:25 | 显示全部楼层 |阅读模式
准备:升级PowerShell3.0 及打开WinRM模块
                  alwaysUp https://www.coretechnologies.com/products/AlwaysUp/
                  AlwaysUpCLT https://www.coretechnologies.com/products/AlwaysUp/AlwaysUpCLT/
                  inno setup http://www.jrsoftware.org/isinfo.php 本机安装制作AlwaysUpCLT 安装包
rsync服务器文件同步使用,alwaysUp 守护进程工具应用程序启动使用 为了安全不提供安装文件
1、ansible 目录结构
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
├── alwaysUp
│   └── daemon_alwaysup.xml.j2 #alwaysup添加apps模板
├── AlwaysUpCLT.iss # AlwaysUpCLT 安装包 官方提供的是zip包 ansible 替换文件问题很多做成exe静默安装更快
├── alwaysUp.retry # ansible 运行产生的hosts文件
├── alwaysUp.yml # 使用ansible 导入alwaysup模板文件
├── hosts # 服务器ip存放文件
├── roles
│   ├── alwaysup
│   │   ├── defaults
│   │   ├── files
│   │   │   ├── AlwaysUpCLT.exe #客户机安装使用
│   │   │   └── AlwaysUp_Installer.exe #客户机安装使用
│   │   ├── handlers
│   │   ├── meta
│   │   ├── tasks
│   │   │   └── main.yml #ansible 安装守护进程文件
│   │   ├── templates
│   │   └── vars
│   └── cwRsyncServer
│       ├── defaults
│       ├── files
│       │   ├── cwRsyncServer_4.1.0_Installer.exe # rsync 服务器安装文件
│       │
│       ├── handlers
│       ├── meta
│       ├── tasks
│       │   └── main.yml #ansible 安装rsync文件
│       ├── templates
│       │   └── rsyncd.conf.j2 # rsync 服务器配置文件
│       └── vars
├── site.retry # ansible 运行产生的hosts文件
├── site.yml  # ansible 安装守护进程及rsync服务器使用
└── win_env.bat # 环境变量文件 ansible 操作 windows 环境变量很麻烦为了通



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
site.yml 说明:
- hosts: '{{host}}' #变量安装服务器别名
# gather_facts: False # 是否获取客户机的setup变量 部署软件建议注释掉
  vars:
    rsync_port: 9999 # rsync 服务器端口
    rsync_node: test # 访问rsync路径标签
    rsync_path: c/test # rsync 服务器配置路径
    sync_file: c:\test # 创建rsync 服务器数据路径
    rsync_ip: 192.168.0.210 , 192.168.7.233 # rsync 服务器允许访问IP
    win_env: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ # 使用ansible 操作环境变量默认系统环境变量每台服务器环境变量不一样不通用本案例没使用
    rsync_env: C:\"Program Files (x86)"\ICW\bin # rsync path变量
    alwaysup_env: C:\"Program Files (x86)"\AlwaysUp # AlwaysUp  path 变量
  roles:
    - cwRsyncServer #ansible 安装 cwRsyncServer  
    - alwaysup #ansible 安装alwaysup
  tasks:
    - name: evn
      #win_environment: #ansible 操作Windows 环境变量   
        #state: present
        #name: Path
        #value: '{{ win_env }};"{{ rsync_env }}";"{{ alwaysup_env }}"'
        #level: machine
     # when: ( rsync_path_register.stat.exists == False ) and (alwaysup_path_register.stat.exists == False)
      script: win_env.bat {{ rsync_env }} {{ alwaysup_env }} # 使用脚本操作系统环境变量
      when: ( rsync_path_register.stat.exists == False ) and (alwaysup_path_register.stat.exists == False)



alwaysup 安装文件说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- win_stat: path='C:/Program Files (x86)/AlwaysUp' #获取是否安装路径
  register: alwaysup_path_register
- win_stat: path='C:/temp' #获取是否创建 C:/temp
  register: temp_path_register
- name: create c:\temp to  client
  raw:  'CMD /C "mkdir  c:\temp "' # 创建C:/temp 如果没有
  when: temp_path_register.stat.exists == False
  #copy AlwaysUp_Installer.exe config to client
- win_copy: src={{ item }} dest=c:/TEMP/{{ item }} # 上传文件到客户机c:/TEMP
  with_items:
     - AlwaysUp_Installer.exe
     - AlwaysUpCLT.exe
  when: alwaysup_path_register.stat.exists == False
- name: intsatll AlwaysUp to clien # 安装AlwaysUp
  raw: c:/TEMP/AlwaysUp_Installer.exe  /sp- /verysilent /norestart
  when: alwaysup_path_register.stat.exists == False
- name: intsatll AlwaysUpCLT to clien # 安装AlwaysUpCLT
  raw: c:/TEMP/AlwaysUpCLT.exe /VERYSILENT -SP
  when: alwaysup_path_register.stat.exists == False
- name: rd c:\temp 删除 c:\temp 文件
  raw: CMD /C 'del /s /q /f c:\temp\*.*'
  when: alwaysup_path_register.stat.exists == False



cwRsyncServer 说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- win_stat: path='C:/Program Files (x86)/ICW/bin' # 判断是否安装rsync
  register: rsync_path_register
- win_stat: path='C:/temp' # 判断是否创建 C:/temp
  register: temp_path_register
- name: create c:\temp to  client
  raw:  'CMD /C "mkdir  c:\temp" ' #没有就创建C:/temp
  when: temp_path_register.stat.exists == False
  #create c:\{{ sync_file }} rsyncserver to clien
- win_file: path={{ sync_file }} state=directory # 创建rsync 数据存放文件夹
  when: rsync_path_register.stat.exists == False
  #copy rsync config to client
- win_copy: src=cwRsyncServer_4.1.0_Installer.exe dest=c:/TEMP/cwRsyncServer_4.1.0_Installer.exe # 上传rsync 安装文件
  when: rsync_path_register.stat.exists == False
- name: intsatll rsyncserver to clien
  raw: CMD /C 'c:\TEMP\cwRsyncServer_4.1.0_Installer.exe /S' # 安装rsync服务 文件名字有改变请修改脚本文件
  when: rsync_path_register.stat.exists == False
  #cp rsyncd.conf # 上传rsync 配置文件
- win_template:
    src=\'#\'" /C 'del /s /q /f c:\temp\*.*' # 删除 c:\temp 文件
  when: rsync_path_register.stat.exists == False



alwaysUp.yml 说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- hosts: '{{host}}' # host 标签
  #gather_facts: False
  vars:
   daemon_ver: 9.7.2.88 # AlwaysUp 版本好apps xml文件用到
   daemon_name: notepad # AlwaysUp 友好名字
   daemon_path: C:\Windows\system32\notepad.exe # 服务器启动路径绝对路径
   daemon_parameter:  # 文件启动参数如:.\.\test.ini -d 参数
  tasks:
    - win_file: path=c:/alwaysUp state=directory # 创建appsxml文件存放文件夹
    - win_template:
         src=\'#\'" /daemon_alwaysup.xml.j2 # 上传 apps 文件
         dest: 'c:/alwaysUp/{{ daemon_name }}_alwaysup.xml'
    - name: Import "{{ daemon_name }}"_alwaysup.xml
      raw: CMD /C 'InstallService.exe -xml c:\alwaysUp\{{ daemon_name }}_alwaysup.xml' 导入xml 到 alwaysUp 守护进程



rsync 使用简单说明:
1
2
3
4
5
6
7
上传文件到rsync服务器
cd /d C:\Program Files (x86)\cwRsync\bin
rsync --port=9999 -rvzc --ignore-errors --no-iconv --delete --progress --exclude-from='/cygdrive/F/scripts/exclude' 排除文件配置   /cygdrive/F/test/ 本地地址  rsync://192.168.1.19/test/ 服务器路径
下载rsync 文件
cd /d C:\Program Files (x86)\cwRsync\bin
rsync --port=9999 -rvzc --ignore-errors --no-iconv --delete --progress --exclude-from='/cygdrive/F/scripts/exclude' 排除文件配置  rsync://192.168.1.19/test/ 服务器路径  /cygdrive/F/test/ 本地地址
可以使用Jenkins 推送文件到服务器 也可以使用ansible  拉去文件



AlwaysUp 使用说明:
1
2
3
4
5
6
7
8
9
10
11
UninstallService.exe "test" # 删除守护进程apps
InstallService.exe -xml c:\test_alwaysup.xml # 导入apps守护进程
AlwaysUp.exe -start-all-in-current-session # 启动所有程序并显示界面
AlwaysUp.exe -start-all # 启动所有程序
AlwaysUp.exe -restart-all-in-current-session # 重启所有程序
AlwaysUp.exe -start-in-current-session "test" # 启动某个程序并显示界面 如果有
AlwaysUp.exe -start-in "test" #启动摸个程序
AlwaysUp.exe -restart-in-current-session "test" #重启某个程序并显示界面 如果有
AlwaysUp.exe -restart "test" #重启某个程序
AlwaysUp.exe -stop "test" #关闭某个程序
AlwaysUp.exe -stop-all # 关闭所有程序守护进程不在守护



AlwaysUpCLT.iss 说明:
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
;------------------------------------------------
;
;             AlwaysUpCLT安装脚本
;------------------------------------------------
[Setup]
;公司信息
AppName=AlwaysUpCLTUpCLT
AppVerName=AlwaysUpCLT
AppPublisher=www.coretechnologies.com
AppCopyright=www.coretechnologies.com
AppPublisherURL=www.coretechnologies.com
AppId =www.coretechnologies.com


;版本信息
VersionInfoVersion=6.0.1.0
VersionInfoDescription="AlwaysUpCLTUpCLT"


;安装目录
DefaultDirName=C:\Program Files (x86)\AlwaysUp # 安装路径
DefaultGroupName=AlwaysUpCLTUpCLT


;输出配置
OutputDir= D:\桌面\aa # 打包输出exe 路径
SourceDir= D:\桌面\aa\AlwaysUpCLT # 打包源码路径
OutputBaseFilename=AlwaysUpCLT # 打包生成的exe文件名字

;编译选项
Compression=zip/9 # 压缩比例
SolidCompression=yes

;环境选项
Uninstallable=no
DisableDirPage=yes
CreateUninstallRegKey=no
UsePreviousAppDir=no
[Files]

;AlwaysUpCLT
Source: "AlwaysUpService.exe"; DestDir: "{app}"; Flags: igNoreversion
Source: "InstallService.exe"; DestDir: "{app}"; Flags: igNoreversion
Source: "UninstallService.exe"; DestDir: "{app}"; Flags: igNoreversion
Source: "EventMessageFile.dll"; DestDir: "{app}"; Flags: igNoreversion
Source: "GHCrUtils.dll"; DestDir: "{app}"; Flags: igNoreversion
Source: "XML\*"; DestDir: "{app}\XML\"; Flags: igNoreversion recursesubdirs createallsubdirs
Source: "SanityCheck\*"; DestDir: "{app}\SanityCheck\"; Flags: igNoreversion recursesubdirs createallsubdirs
Source: "Documentation\*"; DestDir: "{app}\Documentation\"; Flags: igNoreversion recursesubdirs createallsubdirs



其它:
1
2
3
4
5
6
7
使用ansible 安装程序
ansible-playbook -i hosts site.yml -verbose --extra-vars "host=test(hosts 文件配置节点)"
导入 alwaysUp 守护进程apps配置文件
  ansible-playbook -i hosts alwaysUp.yml -verbose --extra-vars "host=test daemon_name=calc daemon_path=C:\Windows\System32\calc.exe daemon_parameter=-a" 强制使用外部参数这样就能随机创建启动apps
  xml 模板文件还可以根据自己情况进行修改添加邮件报警端口监控等等。
  alwaysUp  注册机附带附件建议在本地电脑运行,不用复制到服务器。
  所有脚本放到附件



ansible 部署基于windows 2008 r2 rsync alwaysUp(守护进程)脚本.zip (121.94 KB, 下载次数: 8)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305290-1-1.html 上篇帖子: YAML基础语法-ansible使用ansible-playbook 下篇帖子: ansible--循环
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表