利用 Ansible 自动化部署 Veeam Backup & Replication 9.5U4b

利用 Ansible 自动化部署 Veeam Backup & Replication 9.5U4b

前言

上周出差期间接到一个做CMP(云管平台)Partner的需求,要在无人值守的安装 VBR,由于在过去的一年里 Veeeam 陆续的在国内的公有云平台登录,如:Azure、AWS、腾讯云、阿里云... 在这之前,我对 Veeam 的无人值守安装做过功课。在和这个兄弟攀谈的过程中,而和以前我做DRaaS和CMP时一样,在这个CMP的环境里,大部分自动化功能都是用 Ansible 来实现的,这对Veeam 今后在CMP Partner的推广还会有助力,说干就干。

本文主要内容

  • 1 Ansible 介绍
  • 2 前提:Veeam的静默安装模式
  • 3 Ansiable 自动化部署环境准备环境准备
    • 3.1 自动化引擎 -- Ansible 服务器的部署
    • 3.2 执行对象 -- Windows 服务器的部署
    • 3.3 WinRM 及 帐户身份验证模式
  • 4 连通性测试,win-ping
  • 5 编写 Asible Playbook 进行流程编排
  • 6 执行 Asible Playbook 实现自动化部署
  • 参考书籍与推荐阅读
  • 本文的原文链接

1 Ansible 介绍

在多云管理的世界里,大家经常会讨论自动化部署问题。而只要是涉及到Windows服务器,都不免一声叹息。因为很多工具对Windows的支持都不是太好,大部分情况下,我们都要为Windows搞一套独立的工具与环境。而我们都喜欢 ansible 的原因是,这个自动化运维工具广泛的支持各种系统,当然,最重要的是它支持windows ;-)

Ansible是杰出的自动化运维工具,使用Python进行开发,它博采众长,集多种运维工具(puppet、chef、func、fabric...)的优点于一身,可以实现批量系统配置和程序部署、运行命令等功能。如此优秀,以至于在 2015年被 redhat 收入怀中。Ansible 是基于模块进行工作的,本身是一个自动化引擎,我们通常会在 Playbook中用自动化语言定义什么样的操作会被执行。通俗的讲,Ansible就像是自动演奏的钢琴,而Playbook是乐谱,而Ansible Tower则是提供UI和Restful API的接口,Ansible 的架构如下:

Ansible

想更多的了解这个推荐 Jesse Keating 大神的《Mastering Ansible》也欢迎随时和我讨论。

《Mastering Ansible》 by Jesse Keating
https://www.ansible.com/resources/ebooks/mastering-ansible

2 前提:Veeam的静默安装模式

我创建的 Ansible Playbook 用于 在 Windows Server,(这里是我们使用 Windows Server 2019 做为 VBR 服务器)上安装与部署 Veeam Backup & Replication Server 9.5 Update 4b,使用 Ansible 实现的 Veeam Backup & Replication Server 的静默安装。

Veeam有非常优秀的静默安装模式,几乎所有的组件都可以进行自动安装,这样用户就可以在无人值守的情况下,进行试大批量的自定义的安装,对于灾备自动化来说也非常有帮助。

安装的顺序与模块如下,详情请参考,Veeam的官方文档。

User Guide for VMware vSphere > Deployment > Installing Veeam Backup & Replication in Unattended Mode

[《Veeam 静默安装 》] (https://helpcenter.veeam.com/docs/backup/vsphere/silent_mode.html?ver=95u4)

  • Veeam Backup Catalog
  • Veeam Backup & Replication Server
  • Veeam Backup & Replication Console
  • Veeam Explorers:
    • Veeam Explorer for Active Directory
    • Veeam Explorer for Exchange
    • Veeam Explorer for Oracle
    • Veeam Explorer for SharePoint
    • Veeam Explorer for Microsoft SQL
  • Veeam Update 4b

目前在云管理模式下, Veeam Backup Enterprise Manager 和 Cloud Connect Portal 都自定义部署,而且通常是多对一模式,在此我们没有涉及。

3 Ansiable 自动化部署环境准备

3.1 自动化引擎--Ansible 服务器的部署

Linux 版本与 扩展库配置

此处我们使用CentOS 7.7 做为Ansible 服务器,版本如下,我们只需要进行OS的最小化安装即可

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@localhost ~]# 

先为Yum库配置epel源,再安装Ansible

yum install -y epel-release
yum update -y
yum install -y ansible git vim htop

安装Python PiP 与 pywinrm

yum install -y python-pip
pip install --upgrade pip # optional
pip install pywinrm

配置Inventory文件,定义hosts

此处为了简便,我们使用Ansible默认的inventory文件,/etc/ansible/hosts

[VBR]
172.16.60.133

[VBR:vars]
ansible_connection=winrm
ansible_user="Administrator"
#ansible_ssh_pass=!vault | $ANSIBLE_VAULT;1.1;AES256
ansible_ssh_port=5985
ansible_winrm_server_cert_validation=ignore
ansible_winrm_transport=ntlm

3.2 执行对象--Windows 服务器的部署

在我们的环境中,Windows是我们自动化安装VBR的服务器。 为了使 Windows Server 准备授予 WinRM 访问权限,我使用了以下脚本使我们环境可以快速的Ready!

ConfigureRemotingForAnsible.ps1 脚本,您可以前往Ansible社区的Github下载,脚本执行如下
ConfigureRemotingForAnsible.ps1

PS C:\Users\Administrator\Desktop\code> .\ConfigRemotingForAnsiable.ps1 -Verbose
VERBOSE: Verifying WinRM service.
VERBOSE: PS Remoting is already enabled.
VERBOSE: SSL listener is already active.
VERBOSE: Basic auth is already enabled.
VERBOSE: Firewall rule already exists to allow WinRM HTTPS.
VERBOSE: HTTP: Enabled | HTTPS: Enabled
VERBOSE: PS Remoting has been successfully configured for Ansible.
PS C:\Users\Administrator\Desktop\code>

3.3 WinRM 及 帐户身份验证模式

Ansible 从1.7之后的版本支持 Windows服务的管理,管理机仍然需要一台Linux服务器,通信方式为PowerShell,为了与Windows通信管理机还须要安装WinRm模块,方可和远程Windows主机正常通信。

WinRM使用帐户身份验证时,可以使用几种不同的选项,在这里我选择了 NTLM + Ansiable 加密模块 的方式作为 WinRM 帐户身份验证。

<mark>注意:在本文中使用的密码方式,是通过Ansible 加密做为密码传递基础的,您可以使用不同的选项,如明文密码。此方法在Hosts文件定义主机时,和在YAML文件中定义Playbook的方法相同。Ansible 加密方法不是本文讨论的重点,如关心此处请查看Ansible 手册 <mark>

选项 本地账户 AD账户 凭据委托 HTTP 加密
Basic
Certificate
Kerberos
<mark>NTLM</mark>
CredSSP

4 连通性测试,win-ping

ansible 有一个非常好的工具win-ping,专门用来测试与Windows的Host定义是不是可以联通。详情可以参照,Asiable的手册。

[《Ansible 用户手册》] (https://https://docs.ansible.com/ansible/2.5/user_guide/quickstart.html)

[root@localhost ~]# ansible VBR -m win_ping --vault-password-file vault_pass.txt 

172.16.60.133 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

5 编写 Asible Playbook 进行自动化编排

Playbook中的所有预定义应答,请参考Veeam的手册,在这里我们定义的服务器为VBR,这与真实的主机名已经解偶,Playbook中继承了 win_package Ansible 模块,这可以自动处理参数中所需的大多数转义。在软件源的定义中,我给出了最简单的路径,您可以按照需求进行定义。

- name: VBR Community Edition Setup
  hosts: VBR
  gather_facts: yes
  vars:
    vbr_source: "D:\\"
    sql_username: "svc_sql"
    sql_userpassword: !vault|
        $ANSIBLE_VAULT;1.1;AES256
    sql_sapassword: !vault |
        $ANSIBLE_VAULT;1.1;AES256
  tasks:
  - name: Pre - Install 2012 System CLR Types
    win_package:
        path: "{{ vbr_source }}Redistr\\x64\\SQLSysClrTypes.msi"
        state: present
    tags: pre
  - name: Pre - Install 2012 Shared management objects
    win_package:
        path: "{{ vbr_source }}Redistr\\x64\\SharedManagementObjects.msi"
        state: present
    tags: pre
  - name: SQL - Create Local SQL User
    win_user:
        name: "{{ sql_username }}"
        password: "{{ sql_userpassword }}"
        password_never_expires: yes
        state: present
        groups:
            - Users
    tags: pre
  - name: SQL - Install SQL 2016 Express
    win_package:
        path: "{{ vbr_source }}Redistr\\x64\\SqlExpress\\2016SP1\\SQLEXPR_x64_ENU.exe"
        product_id: SQL 2016 Express
        arguments: 
        - '/q'
        - '/ACTION=Install'
        - '/IACCEPTSQLSERVERLICENSETERMS' 
        - '/FEATURES=SQL' 
        - '/INSTANCENAME=VEEAMSQL2016'
        - '/SQLSVCACCOUNT={{ sql_username }}'
        - '/SQLSVCPASSWORD={{ sql_userpassword }}'
        - '/SECURITYMODE=SQL'
        - '/SAPWD={{ sql_sapassword }}'
        - '/ADDCURRENTUSERASSQLADMIN'
        - '/UPDATEENABLED=0'
        - '/TCPENABLED=1'
        - '/NPENABLED=1'
    tags: sql
  - name: Install VBR Catalog
    win_package:
        path: "{{ vbr_source }}Catalog\\VeeamBackupCatalog64.msi"
        state: present
        arguments:
            - 'VBRC_SERVICE_ACCOUNT_TYPE=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Server
    win_package:
        path: "{{ vbr_source }}Backup\\Server.x64.msi"
        state: present
        arguments: "VBR_SERVICE_ACCOUNT_TYPE=1 VBR_SQLSERVER_AUTHENTICATION=1 VBR_SQLSERVER_SERVER=(local)\\VEEAMSQL2016 VBR_SQLSERVER_USERNAME=sa VBR_SQLSERVER_PASSWORD={{ sql_sapassword }} ACCEPT_THIRDPARTY_LICENSES=1 ACCEPTEULA=YES"
    tags: vbr
  - name: Install VBR Console
    win_package:
        path: "{{ vbr_source }}Backup\\Shell.x64.msi"
        state: present
        arguments:
            - 'ACCEPTEULA=YES'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Explorer for ActiveDirectory
    win_package:
        path: "{{ vbr_source }}Explorers\\VeeamExplorerForActiveDirectory.msi"
        state: present
        arguments:
            - 'ACCEPT_EULA=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Explorer for Exchange
    win_package:
        path: "{{ vbr_source }}Explorers\\VeeamExplorerForExchange.msi"
        state: present
        arguments:
            - 'ACCEPT_EULA=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Explorer for Oracle
    win_package:
        path: "{{ vbr_source }}Explorers\\VeeamExplorerForOracle.msi"
        state: present
        arguments:
            - 'ACCEPT_EULA=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Explorer for SharePoint
    win_package:
        path: "{{ vbr_source }}Explorers\\VeeamExplorerForSharePoint.msi"
        state: present
        arguments:
            - 'ACCEPT_EULA=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Explorer for SQL
    win_package:
        path: "{{ vbr_source }}Explorers\\VeeamExplorerForSQL.msi"
        state: present
        arguments:
            - 'ACCEPT_EULA=1'
            - 'ACCEPT_THIRDPARTY_LICENSES=1'
    tags: vbr
  - name: Install VBR Update 4b
    win_package:
        path: "{{ vbr_source }}Updates\\veeam_backup_9.5.4.2866.update4b_setup.exe"
        product_id: VBR Update 4b
        arguments: "/silent /noreboot VBR_AUTO_UPGRADE=1"
    tags: update


6 执行 Asible Playbook 实现自动化安装

[root@localhost ~]# ansible-playbook ./Veeam_setup.yml --vault-password-file vault_pass.txt 

PLAY [VBR Community Edition Setup] *******************************************************************************

TASK [Gathering Facts] *******************************************************************************************
ok: [172.16.60.133]

TASK [Pre - Install 2012 System CLR Types] ***********************************************************************
changed: [172.16.60.133]

TASK [Pre - Install 2012 Shared management objects] **************************************************************
changed: [172.16.60.133]

TASK [SQL - Create Local SQL User] *******************************************************************************
ok: [172.16.60.133]

TASK [SQL - Install SQL 2016 Express] ****************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Catalog] ***************************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Server] ****************************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Console] ***************************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Explorer for ActiveDirectory] ******************************************************************
changed: [172.16.60.133]

TASK [Install VBR Explorer for Exchange] *************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Explorer for Oracle] ***************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Explorer for SharePoint] ***********************************************************************
changed: [172.16.60.133]

TASK [Install VBR Explorer for SQL] ******************************************************************************
changed: [172.16.60.133]

TASK [Install VBR Update 4b] *************************************************************************************
changed: [172.16.60.133]

PLAY RECAP *******************************************************************************************************
172.16.60.133              : ok=14   changed=12   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

此时,可以看到服务器的上我们需要的服务都已经启动

PS C:\Users\Administrator> Get-service Veeam*

Status   Name               DisplayName
------   ----               -----------
Running  VeeamBackupSvc     Veeam Backup Service
Running  VeeamBrokerSvc     Veeam Broker Service
Running  VeeamCatalogSvc    Veeam Guest Catalog Service
Running  VeeamCloudSvc      Veeam Cloud Connect Service
Running  VeeamDeploySvc     Veeam Installer Service
Running  VeeamDistributi... Veeam Distribution Service
Running  VeeamMountSvc      Veeam Mount Service
Running  VeeamNFSSvc        Veeam vPower NFS Service
Running  VeeamTransportSvc  Veeam Data Mover Service


PS C:\Users\Administrator> Get-service SQL*

Status   Name               DisplayName
------   ----               -----------
Stopped  SQLAgent$VEEAMS... SQL Server Agent (VEEAMSQL2016)
Running  SQLBrowser         SQL Server Browser
Running  SQLTELEMETRY$VE... SQL Server CEIP service (VEEAMSQL2016)
Running  SQLWriter          SQL Server VSS Writer

参考书籍与推荐阅读

1.《Veeam 静默安装 》
https://helpcenter.veeam.com/docs/backup/vsphere/silent_mode.html?ver=95u4

2.《Ansible 用户手册》
https://www.ansible.com/resources/ebooks/mastering-ansible

3.《Mastering Ansible》 by Jesse Keating
https://www.ansible.com/resources/ebooks/mastering-ansible

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容