diff --git a/README.md b/README.md index 24c74f4d..7ce79574 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/defaults/main.yml b/defaults/main.yml index ea659485..4bc9e2d9 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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 diff --git a/tasks/main.yml b/tasks/main.yml index c1bb6229..62b971f4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -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 diff --git a/tasks/verify_password.yml b/tasks/verify_password.yml index 68320d93..72084098 100644 --- a/tasks/verify_password.yml +++ b/tasks/verify_password.yml @@ -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 '' }} diff --git a/tests/tasks/tests_password.yml b/tests/tasks/tests_password.yml index 60b20291..9b71a665 100644 --- a/tests/tasks/tests_password.yml +++ b/tests/tasks/tests_password.yml @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/tests/tasks/verify_ad_auth.yml b/tests/tasks/verify_ad_auth.yml index 27804c05..d4f7a426 100644 --- a/tests/tasks/verify_ad_auth.yml +++ b/tests/tasks/verify_ad_auth.yml @@ -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: diff --git a/vars/main.yml b/vars/main.yml index ad79f4ca..96296e29 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -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