888974111 发表于 2025-2-13 08:20:55

一分钟搞定!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
# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 


[*]1、确保控制机已经安装好Ansible
Ansible版本是2.9,Python版本是2.7.5,即使是旧机器,这套ansible脚本也可以使用!
# ansible --versionansible 2.9.27  config file = /etc/ansible/ansible.cfg  configured module search path =   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)



[*]2、创建主机文件inventory,因为在本机安装,直接使用local
echo "" > myhostsecho localhost ansible_connection=local >> myhosts# cat myhostslocalhost ansible_connection=local



[*]3、 测试被控机器的连通性
# ansible all -i myhosts -m pinglocalhost | 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: true    mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true    mssql_accept_microsoft_sql_server_standard_eula: true    mssql_password: 'RedH@123!'    mssql_edition: 'Developer'    mssql_enable_sql_agent: true    mssql_install_fts: false    mssql_install_powershell: true    mssql_tune_for_fua_storage: true    mssql_datadir: "/data/mssql/1433/database"    mssql_logdir: "/data/mssql/1433/database"roles:    - microsoft.sql.server- hosts: localhosttasks:    - firewalld:      service: mssql      permanent: yes      immediate: yes      state: enabled



[*]6、运行Playbook文件
在当前路径下执行,大概运行1分钟就安装完成,大概有30个任务tasks
# ansible-playbook -vvv -i myhosts  mssql.yml TASK ******************************task path: /usr/share/ansible/collections/ansible_collections/microsoft/sql/roles/server/tasks/main.yml:472skipping: => {    "changed": false,     "skip_reason": "Conditional result was False"}META: ran handlersMETA: 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服务已经启动,安装成功
# 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: 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集群的时候
#  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

[*] 
 
 
本文版权归作者所有,未经作者同意不得转载。
页: [1]
查看完整版本: 一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019