Skip to content

Commit

Permalink
feat: Add mssql_tools_versions to allow installing different versions
Browse files Browse the repository at this point in the history
Microsoft added a new version of the `mssql-tools` package -
`mssql-tools18`. This package adds some new functionality, which is not
backward-compatible with the previous versions, hence Microsoft added a
new package `mssql-tools18` instead of just bumping the version of
`mssql-tools`.
  • Loading branch information
spetrosi committed Nov 13, 2024
1 parent 2e0e77c commit e857b41
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 3 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,26 @@ Default: `null`

Type: `string`

#### mssql_tools_versions

List of versions of SQL Tools package (mssql-tools) to install and use `sqlcmd` from.

The role uses `sqlcmd` for the following tasks:

* Checking password for the sa user.
* Running T-SQL scripts with variables [mssql_pre_input_sql_file and mssql_post_input_sql_file](#mssql_pre_input_sql_file-and-mssql_post_input_sql_file), [mssql_pre_input_sql_content and mssql_post_input_sql_content](#mssql_pre_input_sql_content-and-mssql_post_input_sql_content).

By default, installs and uses the latest version 18.

You can set this variable to `[17, 18]` to install two versions in parallel.
In the case when this variable contains multiple elements, the role instals both but uses latest provided version.

The role does not remove mssql-tools packages if you unset a version with this variable.

Default: `[18]`

Type: `list`

#### mssql_enable_sql_agent

Optional: Set this variable to `true` or `false` to enable or disable the SQL agent.
Expand Down
1 change: 1 addition & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ mssql_version: null
mssql_upgrade: false
mssql_password: null
mssql_edition: null
mssql_tools_versions: [18]
mssql_tcp_port: 1433
mssql_manage_firewall: false
mssql_ip_address: null
Expand Down
8 changes: 8 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
- name: Ensure ansible_facts and variables used by role
include_tasks: set_vars.yml

- name: Temporary debug
debug:
var: "{{ item }}"
loop:
- mssql_tools_versions
- __sqlcmd_ver
- __sqlcmd_cli
- __mssql_client_packages
# This is required to prevent the role from using a __mssql_sqlcmd_login_cmd
# variable value from a previous role invocation
- name: Unset the __mssql_sqlcmd_login_cmd fact
Expand Down
2 changes: 1 addition & 1 deletion tasks/verify_password.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
{{ __ipaddress if __ipaddress else '127.0.0.1' if __tcpport else '' }}
set_fact:
__mssql_sqlcmd_login_cmd: >-
/opt/mssql-tools/bin/sqlcmd
{{ __sqlcmd_cli }}
{{ __s_arg }}
{{ __ipaddress_arg }}{{ ',' if __tcpport
else '' }}{{ __tcpport if __tcpport else '' }}
Expand Down
21 changes: 21 additions & 0 deletions tests/tasks/tests_password.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
vars:
mssql_password: "p@55w0rD"
mssql_edition: Evaluation
mssql_tools_versions: [17]

- name: Configure the mssql-server service start limit interval and burst
include_tasks: tasks/mssql-sever-increase-start-limit.yml
Expand All @@ -25,6 +26,12 @@
vars:
__verify_mssql_password: "p@55w0rD11"

- name: Verify the package {{ __mssql_verify_package_name }}
include_tasks: verify_package.yml
vars:
__mssql_verify_package_name: mssql-tools
__mssql_verify_package_installed: true

- name: Change the IP address setting.
include_role:
name: linux-system-roles.mssql
Expand All @@ -38,12 +45,19 @@
name: linux-system-roles.mssql
vars:
mssql_password: "p@55w0rD"
mssql_tools_versions: [17, 18]

- name: Verify settings
include_tasks: tasks/verify_settings.yml
vars:
__verify_mssql_password: "p@55w0rD"

- name: Verify the package {{ __mssql_verify_package_name }}
include_tasks: verify_package.yml
vars:
__mssql_verify_package_name: mssql-tools18
__mssql_verify_package_installed: true

- name: Change the TCP port setting.
include_role:
name: linux-system-roles.mssql
Expand All @@ -57,11 +71,18 @@
name: linux-system-roles.mssql
vars:
mssql_password: "p@55w0rD11"
mssql_tools_versions: [18]

- name: Verify settings
include_tasks: tasks/verify_settings.yml
vars:
__verify_mssql_password: "p@55w0rD11"

- name: Verify the package {{ __mssql_verify_package_name }}
include_tasks: verify_package.yml
vars:
__mssql_verify_package_name: mssql-tools18
__mssql_verify_package_installed: true

- name: Check the ansible_managed header in the configuration file
include_tasks: tasks/check_header.yml
2 changes: 1 addition & 1 deletion tests/tasks/verify_ad_auth.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
{{ ansible_fqdn }}
"echo {{ ad_integration_password | quote }}
| kinit {{ __mssql_kinit_user }} &&
/opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'"
/opt/mssql-tools18/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'"
register: __mssql_ad_test
changed_when: false
always:
Expand Down
8 changes: 7 additions & 1 deletion vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ __mssql_required_facts_subsets: "{{ ['!all', '!min'] +
__mssql_required_facts }}"
__mssql_server_packages: mssql-server
__mssql_server_selinux_packages: mssql-server-selinux
__mssql_client_packages: [mssql-tools, unixODBC-devel]
__sqlcmd_ver: "{{ mssql_tools_versions | sort | last }}"
__sqlcmd_cli: "{{
'/opt/mssql-tools/bin/sqlcmd' if __sqlcmd_ver == '17'
else '/opt/mssql-tools' + __sqlcmd_ver + '/bin/sqlcmd' }}"
__mssql_client_packages:
- mssql-tools{{ '' if __sqlcmd_ver == '17' else __sqlcmd_ver }}
- unixODBC-devel
__mssql_server_fts_packages: mssql-server-fts
__mssql_server_ha_packages: mssql-server-ha
__mssql_powershell_packages: powershell
Expand Down

0 comments on commit e857b41

Please sign in to comment.