33.3. 使用 microsoft.sql.server Ansible 系统角色,使用自定义存储路径安装和配置 SQL Server,
当您使用 microsoft.sql.server
Ansible 系统角色来安装和配置新的 SQL Server 时,您可以自定义数据的路径和模式,以及日志目录。例如,如果要将数据库和日志文件存储在具有多个存储的不同的目录中,请配置自定义路径。
如果您更改了数据或日志路径,并重新运行 playbook,之前使用的目录及其所有内容都保持在原始路径。只有新的数据库和日志保存在新位置。
类型 | 目录 | 模式 | 所有者 | 组 |
---|---|---|---|---|
data |
|
|
| |
Logs |
|
|
| |
[a]
如果目录存在,则角色保留模式。如果目录不存在,角色在创建目录时在受管节点上应用默认 umask 。
|
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 -
您已在控制节点上安装了
ansible-collection-microsoft-sql
软件包或microsoft.sql
集合。 - 受管节点安装了 2 GB 或更多 RAM。
- 受管节点使用以下版本之一: RHEL 7.9、RHEL 8、RHEL 9.4 或更高版本。
流程
将您的敏感变量存储在一个加密文件中:
创建 vault :
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:sa_pwd: <sa_password>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
编辑一个现有的 playbook 文件,如
~/playbook.yml
,并添加存储和日志相关的变量:--- - name: Installing and configuring Microsoft SQL Server hosts: managed-node-01.example.com vars_files: - vault.yml tasks: - name: SQL Server with custom storage paths ansible.builtin.include_role: name: microsoft.sql.server vars: 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_version: 2022 mssql_password: "{{ sa_pwd }}" mssql_edition: Developer mssql_tcp_port: 1433 mssql_manage_firewall: true mssql_datadir: /var/lib/mssql/ mssql_datadir_mode: '0700' mssql_logdir: /var/log/mssql/ mssql_logdir_mode: '0700'
示例 playbook 中指定的设置包括以下内容:
mssql_datadir_mode
andmssql_logdir_mode
- 设置权限模式。在单引号中指定值,以确保角色将值解析为字符串,而不是解析为八进制数。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/microsoft.sql-server/README.md
文件。验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook.yml
验证
显示数据目录的模式:
$ ansible managed-node-01.example.com -m command -a 'ls -ld /var/lib/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/lib/mssql/
显示日志目录的模式:
$ ansible managed-node-01.example.com -m command -a 'ls -ld /var/log/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/log/mssql/
其他资源
-
/usr/share/ansible/roles/microsoft.sql-server/README.md
文件 - Ansible vault