MSSQL 2019부터 CU업데이트 (2017에도 진행했지만 잘 사용하는 버전이 아니어서 2019부터 사용) 설치가 필요하였고 여러 대의 서버에 자동화된 설치를 위해 playbook role을 개발하여 사용합니다.
Ansible 로 CU update 시 .exe 파일을 사용하고,
설치 후에는 reboot이 필요하다는 return code 3010을 보내면서 Ansible이 정상 완료로 처리하는 0이 아니기 때문에
에러가 발생합니다. 이 부분을 ignore_error로 하였는데 설치 부분에서 실제 에러가 발생할 경우에는 확인하는 절차가 필요하기 때문에 return code 3010 이 아닐 경우에 대해서는 예외 처리를 할 예정입니다.
defaults/main.yml
SQLServerCU:
mssql2019_cu11: SQLServer2019-CU11-x64.exe
mssql2019_cu18: SQLServer2019-CU18-x64.exe
tasks/sql2019_cu_update.yml
- name: CU update file copy
win_copy:
remote_src: no
src:"{{ source_path }}{{ item.update_exe_file }}"
dest: "{{ dest_path }}"
when: "{{ item.when }}"
with_items:
- { update_exe_file: "{{ SQLServerCU.mssql2019_cu11 }}", when: Version=='SQL2019_CU11' }
- { update_exe_file: "{{ SQLServerCU.mssql2019_cu18 }}", when: Version=='SQL2019_CU18' }
# Adding "ignore_error": it returns "3010" code which is not "0" as an expected success return code. (it means need to reboot.)
- name: CU update
win_command: "{{ dest_path }}{{ item.update_exe_file }} /quiet /Action=Patch /IAcceptSQLServerLicenseTerms /AllInstances"
when: "{{ item.when }}"
with_items:
- { update_exe_file: "{{ SQLServerCU.mssql2019_cu11 }}", when: Version=='SQL2019_CU11' }
- { update_exe_file: "{{ SQLServerCU.mssql2019_cu18 }}", when: Version=='SQL2019_CU18' }
ignore_errors: true
- name: reboot
win_reboot:
- name: Check its version
win_shell: Invoke-sqlcmd -Serverinstance "{{ inventory_hostname }}.cloud.ncsoft,62222" -Username 데이터베이스계정 -Password 데이터베이스비밀번호 -Database "master" -Query "select LEFT(@@version, 70)"
register: present_cu_version
- name: Send result mail
win_shell: |
$Servername = "{{ mail_nodename }}"
$From = 발신자주소
$To = 수신자주소
$Subject = "Report from $Servername"
$SmtpServer = 메일서버주소
$Body = "Installed Cu version - {{ present_cu_version.stdout_lines[3] }}"
$Attachement = Get-ChildItem -Path "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\Summary.txt" | %{$_/FullName}
Send-MailMessage -From $From -To $To -Subject $Subject -Body -SmtpServer $SmtpServer
'Devops > Ansible' 카테고리의 다른 글
DB 서비스가 실행 중인지 확인하는 Ansible 코드 (0) | 2023.03.17 |
---|---|
MySQL MHA 구성을 위한 공개키 공유 Ansible (0) | 2023.03.15 |
Ansible DB 설치 설정 구성 배포 자동화 발표 (0) | 2023.03.12 |
병렬 백업과 복원을 위한 async 작업 (0) | 2022.08.30 |
MSSQL 별칭 관리 (0) | 2022.08.30 |