Devops/Ansible 10

MSSQL CU Update, Ansible 로 업데이트 하기

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..

Devops/Ansible 2023.03.19

DB 서비스가 실행 중인지 확인하는 Ansible 코드

DB 엔진을 설치할 때 이미 DB가 실행되고 있는 경우가 있다. 가끔 IP기반으로 설치하다보니 서비스를 중복으로 설치하는 분들이 있어서 방어 코드를 추가 하였다. defaults/main.ymldb_port_check: - 1433 - 3306 - 27017 . . . tasks/port_check.yml- name: netstat shell: | /bin/netstat -tln | grep ":{{ item }} " | sed -e 's/.*\///' register: netstat_result with_items: - "{{ db_port_check }}" - name: result set_fact: process_result: "{{ netstat_result.results | map(attribu..

Devops/Ansible 2023.03.17

MySQL MHA 구성을 위한 공개키 공유 Ansible

Ansible Role로 구성하여 실행하는 MHA 자동화 구성 중 공개키 공유를 위한 playbook 부분을 발췌하였습니다. 구성되어야 할 서버들에 대해 MHA 동작이 가능하게 하려면 공개키를 미리 생성하여 배포하고 ssh로 동작이 가능한 명령을 실행하게 됩니다. 이 때 사용되는 공개키는 각각의 서버에서 생성하고 known_hosts에 등록하게 되는데 이 작업을 매번 처리하다 보면 실수가 발생할 수 있어 MHA 구성을 위한 공개키 공유 부분부터 모두 Ansible을 통해 구성이 가능하도록 작성하였습니다. defaults main.yml mha_ip_host: "ip1" : "host명1" "ip2" : "host명2" "ip3" : "host명3" "ip4" : "host명4" "ip5" : "host명..

Devops/Ansible 2023.03.15

병렬 백업과 복원을 위한 async 작업

Ansible을 통한 병렬 백업/복원 작업 순서 1. 병렬 작업이 될 수 있도록 백업, 복원 대상이 되는 DB 카탈로그 명을 변수로 작업하는 SP 생성 2. 1번 sp를 배포하고 필요한 TargetDB를 변수로 async 모드 실행 (async: 780/ poll: 0)으로 설정 - async 780은 DB 백업에 필요한 총 시간 기준 산정 - poll 0은 0으로 설정할 경우 with_items에 있는 TargetDB 숫자까지 win_shell 작업을 바로 또 실행하여 병렬 처리처럼 작동하게 된다. (약 1~2초 간의 작업 지연 발생 가능) - name: "Execute restore_parallel SP" win_shell: "invoke-sqlcmd -Querytimeout 0 -Serverinst..

Devops/Ansible 2022.08.30

MSSQL 별칭 관리

SQLServer Alias 등록/삭제를 위한 Ansible Role SQL Server alias는 접속을 위해 도메인 정보, 포트 정보등을 생략하고 별칭으로 접속하고자 할 때 생성하여 사용 Ansible 사용 모듈 defaults/main.yml sql_version: "{% if (mssql2014_configure==true) %}2014{% elif (mssql2016_configure==true) %}2016{% elif (mssql2017_configure==true) %}2017{% elif (mssql2019_configure==true) %}2019{% else %}''{% endif %}" sql_serverlist: "Alias명1" : "IP1" "Alias명2" : "IP2" "..

Devops/Ansible 2022.08.30

Windows에서 Ansible 사용하기

Windows서버에 원격으로 작업하기 위해서 WinRM 을 사용한다. WinRM은 SOAP 베이스 프로토콜로 HTTP/HTTPS로 통신하며 최신 Windows 운영체제 (Windows Server 2012부터 default enabled) 에서 사용가능하다. Ansible은 pywinrm 패키지를 통하 WinRM을 사용하며 따로 설치해 주어야 한다. 또, Ansible의 Windows 서버 인증을 위한 여러가지 방법이 있는데 여기서는 Domain 계정 접속을 위해 Kerberos 인증 방식을 사용하였다. OptionLocal AccountsActive Directory AccountsCredential DelegationHTTP Encryption Basic Yes No No No Certificate ..

Devops/Ansible 2019.06.25

Ansible : Public Key 자동 배포

Ansible은 remote 서버로의 명령어 실행 시 key를 통해 접속을 시도할 경우 ~/.ssh/authorized_keys 디렉토리에 public key를 배포해야 한다. 아래 페이지는 https://medium.com/@visualskyrim/ansible-playbook-deploy-the-public-key-to-remote-hosts-da3f3b4b5481 에서 발췌 Manual 수동 배포 cd ~ ssh-copy-id ansibleUSER@remoteServer 확인 cd .ssh cat known_hosts 정상적으로 배포되었다면 ~/.ssh/known_hosts에 원격 서버 정보가 등록된다. Ansible Playbook으로 배포하는 방법 실행 (1회 비밀번호 타이핑 필요) ansibl..

Devops/Ansible 2019.04.12

Ansible Roles

아래는 https://docs.ansible.com/ansible/2.4/playbooks_reuse_roles.html#embedding-modules-and-plugins-in-roles 다음 페이지를 참조하였음. Role은 특정 vars_files, tasks, handler를 파일 구조에 맞게 자동으로 가져온다. Role로 Grouping 되어 있으면 공유가 쉬운 장점이 있다. Role 디렉토리 구조 Role은 다음 디렉토리를 꼭 포함해야 하며, 사용하지 않으면 포함하지 않아도 된다. 사용할 경우 각 디렉토리(defaults, handlers, meta, tasks) 에 main.yml 파일은 꼭 포함되어야 한다. tasks : role에 의해 실행되는 main task list handlers ..

Devops/Ansible 2019.04.12