一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

 

不熟悉整个流程的朋友可以先看之前的部署文章,手动部署一遍

一步步教你在CentOS 7.9上安装SQL Server 2019

 

前言

这套Ansible脚本属于红帽官方出品,是一套mssql的自动化运维脚本,能够实现mssql的单实例部署和AlwaysOn集群的部署,它会自动判断当前操作系统的类型和版本,查找适合当前Linux系统安装的SQL Server版本, 然后更新相应的yum仓库,自动下载SQL Server安装包然后安装。

linux-system-roles脚本支持SQL Server 2017到SQL Server 2022。

因为这次部署的操作系统版本是CentOS7.9,所以只能安装的SQL Server最高版本是 SQL Server 2019,Ansible会自动安装好SQL Server 2019。

使用Ansible 2.9版本安装SQL Server

  • 0、查看当前的操作系统版本

可以看到当前版本是CentOS 7.9

[root@2_mssql_68 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)

 

  • 1、确保控制机已经安装好Ansible

Ansible版本是2.9,Python版本是2.7.5,即使是旧机器,这套ansible脚本也可以使用!

[root@2_mssqll_68 ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]



  • 2、创建主机文件inventory,因为在本机安装,直接使用local
echo "[sqlgroup]" > myhosts
echo localhost ansible_connection=local >> myhosts[root@2_mssqll_68 ~]# cat myhosts
[sqlgroup]
localhost ansible_connection=local



  • 3、 测试被控机器的连通性
[root@2_mssqll_68 ~]# ansible all -i myhosts -m ping
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}



  • 4、安装ansible角色

需要安装红帽官方的rhel-system-roles 角色

yum install -y ansible-collection-microsoft-sql rhel-system-roles



  • 5、编辑playbook文件mssql.yml

需要修改mssql.yml文件里的mssql_password和mssql_edition参数,实际上,还有其他的参数,参数比较多,文末会放出各个参数含义的文档,如果没有开启防火墙服务,那么需要去掉防火墙的那个play

mssql_edition的值有:Enterprise、Standard、Web、Developer、Express、Evaluation,或一个格式为 #####-#####-#####-#####-##### 的数据库产品密钥,其中 # 是数字或字母。如果要指定版本,可以使用参数mssql_version: 2019

vi mssql.yml
---
- hosts: localhostvars:mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: truemssql_accept_microsoft_cli_utilities_for_sql_server_eula: truemssql_accept_microsoft_sql_server_standard_eula: truemssql_password: 'RedH@123!'mssql_edition: 'Developer'mssql_enable_sql_agent: truemssql_install_fts: falsemssql_install_powershell: truemssql_tune_for_fua_storage: truemssql_datadir: "/data/mssql/1433/database"mssql_logdir: "/data/mssql/1433/database"roles:- microsoft.sql.server- hosts: localhosttasks:- firewalld:service: mssqlpermanent: yesimmediate: yesstate: enabled



  • 6、运行Playbook文件

在当前路径下执行,大概运行1分钟就安装完成,大概有30个任务tasks

[root@2_mssqll_68 ~]# ansible-playbook -vvv -i myhosts  mssql.yml 
TASK [microsoft.sql.server : Configure the forceencryption setting] ******************************
task path: /usr/share/ansible/collections/ansible_collections/microsoft/sql/roles/server/tasks/main.yml:472
skipping: [localhost] => {
    "changed": false, 
    "skip_reason": "Conditional result was False"
}
META: ran handlers
META: ran handlersPLAY RECAP ***************************************************************************************
localhost                  : ok=30   changed=0    unreachable=0    failed=0    skipped=41   rescued=0    ignored=0   



  • 7、查看SQL Server服务是否在运行

看到Active: active (running) 字样就表示SQL Server服务已经启动,安装成功

[root@2_mssqll_68 ~]# systemctl status mssql-server.service --no-pager
● mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2025-02-09 11:36:06 CST; 4s ago
     Docs: https://docs.microsoft.com/en-us/sql/linux
 Main PID: 999 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           └─999 /opt/mssql/bin/sqlservrFeb 09 11:36:06 2_mysql_68 systemd[1]: Started Microsoft SQL Server Database Engine.



  • 8、连接数据库并查看当前数据库版本

Ansible自动识别到当前操作系统版本是centos7.X,然后安装适配当前系统版本的最高SQL Server版本SQL Server 2019

/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "RedH@123!"  -Q "SELECT @@VERSION"

图片

  • 9、查看SQL Server实例的数据目录结构
  • 系统库和tempdb数据库都放在同一个目录下,如果是生产环境需要注意分开,/var/opt/mssql/secrets目录是用来存放证书文件,特别是在搭建AlwaysOn集群的时候
[root@2_mssqll_68 ~]#  tree /var/opt/mssql/
/var/opt/mssql/
├── data
│   ├── Entropy.bin
│   ├── master.mdf
│   ├── mastlog.ldf
│   ├── modellog.ldf
│   ├── model.mdf
│   ├── model_msdbdata.mdf
│   ├── model_msdblog.ldf
│   ├── model_replicatedmaster.ldf
│   ├── model_replicatedmaster.mdf
│   ├── msdbdata.mdf
│   ├── msdblog.ldf
│   ├── tempdb2.ndf
│   ├── tempdb3.ndf
│   ├── tempdb4.ndf
│   ├── tempdb.mdf
│   └── templog.ldf
├── log
│   ├── errorlog
│   ├── errorlog.1
│   ├── errorlog.2
│   ├── errorlog.3
│   ├── errorlog.4
│   ├── HkEngineEventFile_0_133835034943490000.xel
│   ├── HkEngineEventFile_0_133835034997660000.xel
│   ├── HkEngineEventFile_0_133835048280420000.xel
│   ├── HkEngineEventFile_0_133835457796360000.xel
│   ├── log_1.trc
│   ├── log_2.trc
│   ├── log_3.trc
│   ├── log.trc
│   ├── mssql-conf
│   │   └── mssql-conf.log
│   ├── sqlagent.1
│   ├── sqlagent.out
│   ├── sqlagentstartup.log
│   ├── system_health_0_133835034957910000.xel
│   ├── system_health_0_133835035001390000.xel
│   ├── system_health_0_133835048284420000.xel
│   └── system_health_0_133835457809610000.xel
├── mssql.conf
└── secrets
    └── machine-key4 directories, 39 files



Playbook脚本中用到的参数解释和Playbook脚本源代码地址

需要解释的是,这套脚本可以完成mssql的单实例安装和AlwaysOn集群的部署,可以说红帽官方真的非常贴心!编写好Playbook脚本五分钟就可以部署好3个节点的AlwaysOn集群!

第一个网址有AlwaysOn搭建示例参考

  • https://github.com/linux-system-roles/mssql

  • https://github.com/redhat-cop/sqlserver-coi/tree/master/ansible
    图片

  •  

     

 

本文版权归作者所有,未经作者同意不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/883063.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux如何查看JDK的安装路径

如何在一台Linux服务器上查找JDK的安装路径呢?有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢?下面总结了一下如何查找JDK安装路径的方法. 1、echo $JAVA_HOME 使用$JAVA_HOME的话能定位JDK的安装路径的前提是配置了环境变量$JAVA_HOME,否则如下所示,根本定位不…

[虚拟化/Docker] Docker Desktop 安装与使用

0 序:DeepSeek 等AI大模型在Windows的私有化部署DeepSeek 等AI大模型在Windows的私有化部署,最流行的开源AI终端应用————Dify,依赖于 Docker 环境。由此,必然离不开:Docker Desktop1 概述:Docker Desktopdocker desktop 是一款Docker容器运行管理工具,用于在本地机器…

【VUE框架】渗透测试的一些技巧(实现自动化测试)

以下文章来源于渗透测试之道 ,作者kk1230 一、什么是VUEVue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。而 Webpack 是一个模块打包工具,用于将项目中的各种资源(如 JavaScript 模块、CSS 样式文件、图片等)打包成浏览器可以识别的文件。 Webpack概念机制Webpack…

案例 百万数据批量插入测试

1、jpa、mybatis-plus、jdbc、load data infile测试比较2、load data infile语法测试3、相关代码 测试package com.xm;import com.xm.entity.UserP; import com.xm.task.JdbcInsert2Task; import com.xm.task.JdbcInsertTask; import com.xm.task.MybatisPlusInsert2Task; impo…

案例 百万级数据批量插入测试

1、jpa、mybatis-plus、jdbc、load data infile测试比较2、load data infile语法测试注:测试有限,仅供参考。雨淋淋过的季节

【向量嵌入】 大型语言模型的基础

一、向量是机器的语言 向量在 LLM 和生成式 AI 的功能中起着至关重要的作用。要了解它们的重要性,就需要理解什么是向量以及它们如何在 LLM 中生成和利用。 在数学和物理学中,向量是同时具有大小和方向的对象。它可以在几何上表示为有向线段,其中线的长度表示大小,箭头指向…

DeepSeekSelfTool :流量分析、JS代码审计、进程分析

# DeepSeek;# AI ;# 代码审计;# 0day;# 渗透测试;# 通用 免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!! 前言 首个由DeepSe…

【安全运营】告警如何区分自己人

前言 安全运营小伙伴可能都遇到过这样的情况,安全系统突然出现大量告警,看告警详情信息真真切切,凭感觉就是有攻击者在搞事情,于是立马启动应急响应,进入紧急状态,查询源目IP信息,电话联系相关人员开启三连问:这是什么系统,目前有做什么操作,能不能临时停用。最后一顿…

panellook筛选所有18寸面板

筛选后方便查看当前有哪些型号 https://www.panelook.com/sizmodlist.php?sizes[]=1800

大米CMS靶场支付漏洞

在大米CMS上购买一个商品,选择站内扣款并提交订单,BP抓包2. 根据抓包内容找到带有敏感信息的数据包(URL 带有dobuy),分析敏感信息 根据数据包中的信息我们可以获取下面可能有用的敏感信息 商品id,数量qty,价格price, 其他信息:是否购物车结算iscart,付款方式trade_type…

Spacedesk: 轻松实现手机控制电脑

这款强大的软件可以将您手头的手机或平板变身为电脑的第二块显示屏,轻松实现屏幕面积的扩展。告别昂贵的外接显示器,Spacedesk 为您打造无限可能的工作空间。最大的亮点在于,Spacedesk 不仅能扩展屏幕,还支持触控操作。您可以在手机或平板上直接进行各种操作,体验全新的交互方式…