- hosts: sqlserver gather_facts: no vars: ansible_python_interpreter: "{{ local_python_interpreter }}" tasks: - name: Test SQLServer connection mssql_script: login_user: "{{ jms_account.username }}" login_password: "{{ jms_account.secret }}" login_host: "{{ jms_asset.address }}" login_port: "{{ jms_asset.port }}" name: '{{ jms_asset.spec_info.db_name }}' encryption: "{{ jms_asset.encryption | default(None) }}" tds_version: "{{ jms_asset.tds_version | default(None) }}" script: | SELECT @@version register: db_info - name: SQLServer version set_fact: info: version: "{{ db_info.query_results[0][0][0][0].splitlines()[0] }}" - debug: var: info - name: Check whether SQLServer User exist mssql_script: login_user: "{{ jms_account.username }}" login_password: "{{ jms_account.secret }}" login_host: "{{ jms_asset.address }}" login_port: "{{ jms_asset.port }}" name: '{{ jms_asset.spec_info.db_name }}' encryption: "{{ jms_asset.encryption | default(None) }}" tds_version: "{{ jms_asset.tds_version | default(None) }}" script: "SELECT 1 from sys.sql_logins WHERE name='{{ account.username }}';" when: db_info is succeeded register: user_exist - name: Change SQLServer password mssql_script: login_user: "{{ jms_account.username }}" login_password: "{{ jms_account.secret }}" login_host: "{{ jms_asset.address }}" login_port: "{{ jms_asset.port }}" name: '{{ jms_asset.spec_info.db_name }}' encryption: "{{ jms_asset.encryption | default(None) }}" tds_version: "{{ jms_asset.tds_version | default(None) }}" script: "ALTER LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}', DEFAULT_DATABASE = {{ jms_asset.spec_info.db_name }}; select @@version" ignore_errors: true when: user_exist.query_results[0] | length != 0 - name: Add SQLServer user mssql_script: login_user: "{{ jms_account.username }}" login_password: "{{ jms_account.secret }}" login_host: "{{ jms_asset.address }}" login_port: "{{ jms_asset.port }}" name: '{{ jms_asset.spec_info.db_name }}' encryption: "{{ jms_asset.encryption | default(None) }}" tds_version: "{{ jms_asset.tds_version | default(None) }}" script: "CREATE LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}', DEFAULT_DATABASE = {{ jms_asset.spec_info.db_name }}; CREATE USER {{ account.username }} FOR LOGIN {{ account.username }}; select @@version" ignore_errors: true when: user_exist.query_results[0] | length == 0 - name: Verify password mssql_script: login_user: "{{ account.username }}" login_password: "{{ account.secret }}" login_host: "{{ jms_asset.address }}" login_port: "{{ jms_asset.port }}" name: '{{ jms_asset.spec_info.db_name }}' encryption: "{{ jms_asset.encryption | default(None) }}" tds_version: "{{ jms_asset.tds_version | default(None) }}" script: | SELECT @@version when: check_conn_after_change