deploy/ansible/roles-db/windows/4.4.0-mssql-install/tasks/4.4.0.0-mssql-prerequisites.yaml (66 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # /*---------------------------------------------------------------------------8 # | | # | Perform pre-requisites for MSSQL DB Instance installation | # | Generic: Install from Microsoft bits | # | SAP4SQL: Install from SAP provided bits | # | | # +------------------------------------4--------------------------------------*/ --- # Install the DSC modules - name: "WIN-SQL: Ensure DSC modules are installed" community.windows.win_psmodule: name: "{{ item }}" state: present loop: - NetworkingDsc - ComputerManagementDsc - PSDesiredStateConfiguration - WindowsDefender - ServerManager - SecurityPolicyDsc - StorageDsc - name: "WIN: Calculating the domain value from {{ domain_name }}" ansible.builtin.set_fact: domain: "{{ domain_name | split('.') | first }}" cacheable: true when: - domain_name is defined - domain_name | type_debug != 'NoneType' - domain_name | trim | length > 1 - domain is not defined # Examples for Assign Local Security # Reference: https://github.com/dsccommunity/SecurityPolicyDsc/blob/master/source/Examples/Resources/UserRightsAssignment/1-UserRightsAssignment_Basic_Config.ps1 # - name: "WIN-SQL: Assign Act_as_part_of_the_operating_system Policy" # win_dsc: # resource_name: UserRightsAssignment # Policy: Act_as_part_of_the_operating_system # #Identity: "Builtin\Administrators" # - name: "WIN-SQL: Assign Adjust_memory_quotas_for_a_process Policy" # win_dsc: # resource_name: UserRightsAssignment # Policy: Adjust_memory_quotas_for_a_process # #Identity: '"contoso\TestUser1", "contoso\TestUser2"' # add users to local admin group # - name: "WIN-SQL: Add users to local admin group" # win_dsc: # resource_name: UserRightsAssignment # Policy: Local_admin_group # #Identity: '"contoso\TestUser1", "contoso\TestUser2"' # Should add , {{ domain\sidadm }}" as well - name: "WIN-SQL: Assign Local Security Policies" ansible.windows.win_dsc: resource_name: UserRightsAssignment Policy: "{{ item }}" Identity: '"{{ orchestration_ansible_user }}", "{{ domain }}\{{ sap_sid }}adm"' loop: - Act_as_part_of_the_operating_system - Adjust_memory_quotas_for_a_process # - Local_admin_group - Lock_pages_in_memory - Log_on_as_a_service - Perform_volume_maintenance_tasks - Replace_a_process_level_token notify: "WIN-SQL: Restart SQL Server VM" # Disable UAC for admin accounts (https://launchpad.support.sap.com/#/notes/2729848) # Need to investigate this further. The two options which fit our needs are: # NeverNotifyAndDisableAll - Disable UAC for all users # NeverNotify - Disable UAC for all users except for the admin accounts # - name: "WIN-SQL: Disable UAC for admin accounts" # win_dsc: # resource_name: UserAccountControl # IsSingleInstance: "Yes" # NotificationLevel: "NeverNotify" # Disable Guest account # - name: "WIN-SQL: Disable Guest account" # win_dsc: # resource_name: User # Ensure: "Absent" # UserName: "Guest" - name: "WIN-SQL: Disable Guest account" ansible.windows.win_user: name: Guest account_disabled: true # state: absent # Reference: https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server-ver15?view=sql-server-ver15 - name: "WIN-SQL: Ensure .NET Framework 4.5 Core is present" ansible.windows.win_feature: name: NET-Framework-45-Core state: present include_sub_features: true # If we want to support older versions then we can add the following: # - name: "WIN-SQL: Additional .NET Framework components" # - block: # - name: "WIN-SQL: Ensure .NET Framework Core is present" # win_feature: # name: NET-Framework-Core # state: present # include_sub_features: True # # - name: "WIN-SQL: Ensure .NET Framework features are present" # win_feature: # name: NET-Framework-Features # state: present # mssql_version_name<- this needs to get set in the ansible_input_api file # when: mssql_version_name <= '2014' # - name: "WIN-SQL: Validate if a reboot is required" # debug: # msg: "Pending reboot detected" # changed_when: true # when: ansible_reboot_pending # notify: "WIN-SQL: Restart SQL Server VM" - name: "WIN-SQL:progress" ansible.builtin.debug: msg: "Starting Windows Update. Please wait" # set a check that the customer can select if it can be done or not. [make it an option] - name: "WIN-SQL: Ensure Installing the latest windows patches" ansible.windows.win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups reject_list: "{{ win_updates_reject_list }}" accept_list: "{{ win_updates_accept_list }}" register: win_updates notify: "WIN-SQL: Restart SQL Server VM" - name: "WIN-SQL: Reboot if required" ansible.windows.win_reboot: reboot_timeout: 600 post_reboot_delay: 120 test_command: 'exit (Get-Service -Name Netlogon).Status -ne "Running"' when: win_updates.reboot_required - name: "Force all notified handlers to run now" ansible.builtin.meta: flush_handlers # - name: "WIN-SQL: Add inbound Firewall rule for SAP ports" # win_dsc: # resource_name: Firewall # Name: SAPFirewallRule # DisplayName: SAP Inbound Firewall Rule # Group: SAP Firewall Rule Group # Ensure: Present # Enabled: true # Profile: ('Domain', 'Private','Public') # Direction: Inbound # LocalPort: ('3200-3299','8000-8099','44300-44399','30000-30099','50000-50020','1128','1129','4237','4239','3300-3399','3600-3699','15','30013-30049','50200-50205','8100-8105','44300-44305','8000-8005','50010-50015','30010-30015','8010-8015','50110-50115','30100-30115','443','3300-3310','3600-3610','3900-3910') # Protocol: TCP # Description: SAP Inbound Firewall Rule # - name: "WIN-SQL: Configure Windows Defender" # win_dsc: # resource_name: WindowsDefender # IsSingleInstance: "Yes" # ExclusionPath: "{{ win_defender_exclusion_path }}" # collation to use for SAP: SQL_Latin1_General_CP850_BIN2 ... # /*---------------------------------------------------------------------------8 # | END | # +------------------------------------4--------------------------------------*/