빠른 시작: Ansible 플레이북을 사용하여 SQL Server on Linux 배포

적용 대상: SQL Server - Linux

이 빠른 시작에서는 Ansible 플레이북을 사용하여 Azure Virtual Machines에서의 SQL Server on Linux 배포를 자동화하는 단계를 안내합니다.

Ansible은 클라우드 프로비저닝, 구성 관리 및 애플리케이션 배포를 자동화하는 오픈 소스 제품입니다.

Ansible 플레이북을 사용하여 환경을 구성하도록 Ansible에 지시할 수 있습니다. 플레이북은 사람이 읽을 수 있도록 하기 위해 YAML을 사용하여 코딩합니다.

필수 구성 요소

개요

Ansible Core를 구성하는 첫 번째 VM은 컨트롤러 노드입니다. 이 노드에서는 SQL Server 시스템 역할을 설치합니다.

나머지 VM은 시스템 역할을 사용하여 SQL Server를 배포하고 구성하기 위해, 관리형 노드라고도 하는 대상 머신이 됩니다.

Ansible Core 설치

Azure VM에서는 RHEL 8.x부터 사전 구성된 AppStream 리포지토리에서 ansible-core 패키지를 설치할 수 있습니다. 다음 명령을 사용하여 컨트롤러 노드에 Ansible Core를 설치할 수 있습니다.

sudo yum install ansible-core

다음 명령을 사용하면 설치가 완료되었는지 확인할 수 있습니다.

ansible --version

다음 예제와 비슷한 출력이 표시됩니다.

ansible [core 2.12.2]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/<user>/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.12 (default, Sep 16 2021, 10:46:05) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = true

컨트롤러 노드에서 hosts 파일 편집

Ansible은 /etc/ansible 디렉터리에 hosts 파일을 만듭니다. 좋아하는 편집기를 이용해 이 파일을 편집하여 관리형 노드 세부 정보를 그룹 항목 또는 그룹화되지 않은 항목으로 추가합니다. 사용자 자체 인벤토리를 만드는 방법에 대한 자세한 내용은 인벤토리를 빌드하는 방법을 참조하세요.

hosts 파일을 사용하는 이 예제에서 첫 번째 관리형 노드의 IP 주소는 10.0.0.12이고, 두 번째 관리 노드의 IP 주소는 10.0.0.14입니다.

# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

10.0.0.12
10.0.0.14

노드 간에 암호 없는 SSH 액세스 구성

컨트롤러 노드와 SQL Server를 설치할 모든 관리형 노드 사이에 SSH(보안 셸) 연결을 구성해야 합니다.

컨트롤러 노드에서 SSH 구성

SSH가 이미 구성되었다면 이 단계를 건너뛰어도 됩니다.

ssh-keygen 명령을 사용하여 SSH 키를 생성합니다. 명령을 실행하면 기본값을 수락하라는 메시지가 표시됩니다. 완료되면 비공개 및 공개 키 쌍이 생성됩니다.

관리형 노드에 공개 키 복사

  1. 각 관리형 노드에서 ssh-copy-id 명령을 사용하여, 방금 생성된 컨트롤러 노드에서 공개 키를 복사해야 합니다. 관리되는 노드에서 대상 디렉터리를 지정하고 싶다면 -i 매개 변수를 사용하면 됩니다.

  2. 다음 명령에서 user 계정은 VM을 만들 때 각 관리형 노드에 대해 구성한 것과 동일한 계정일 수 있습니다. root 계정을 사용할 수도 있지만 프로덕션 환경에서는 권장되지 않습니다.

    sudo ssh-copy-id user@10.0.0.12
    sudo ssh-copy-id user@10.0.0.14
    
  3. SSH 공개 키가 각 노드에 복사되었는지 확인하려면 컨트롤러 노드의 ssh 명령을 사용하세요. 키를 올바르게 복사했다면 암호를 묻는 메시지가 표시되지 않으며 연결이 성공합니다.

    ssh user@10.0.0.12
    ssh user@10.0.0.14
    

SQL Server 시스템 역할 설치

Ansible 시스템 역할은 ansible-collection-microsoft-sql이라고 합니다. 컨트롤러 노드에서 다음 명령을 실행하여 SQL Server 시스템 역할을 설치합니다.

sudo yum install ansible-collection-microsoft-sql

이 명령은 SQL Server 역할을 아래에 표시된 파일과 함께 /usr/share/ansible/collections에 설치합니다.

-rw-r--r--. 1 user user 7592 Jul  2 20:22 FILES.json
-rw-r--r--. 1 user user 1053 Jul  2 20:22 LICENSE-server
-rw-r--r--. 1 user user  854 Jul  2 20:22 MANIFEST.json
-rw-r--r--. 1 user user 1278 Jul  2 20:22 README.md
drwxr-xr-x. 1 user user   20 Jul  2 20:22 roles
drwxr-xr-x. 1 user user   20 Jul  2 20:22 tests

Ansible 플레이북 만들기 및 구성

시스템 역할을 설치한 후에는 SQL Server 플레이북 YAML 파일을 만듭니다. 다양한 역할 변수를 이해하려면 설명서나 SQL Server 시스템 역할에 포함된 README.md를 참조하세요.

다음 예제에서는 SQL Server를 구성하고 추가 기능을 사용하도록 역할 변수가 정의된 플레이북 파일을 보여 줍니다.

- hosts: all
  vars:
    mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
    mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
    mssql_accept_microsoft_sql_server_standard_eula: true
    mssql_password: "YourP@ssw0rd"
    mssql_edition: Evaluation
    mssql_enable_sql_agent: true
    mssql_install_fts: true
    mssql_install_powershell: true
    mssql_tune_for_fua_storage: true
  roles:
    - microsoft.sql.server​

관리형 노드에 SQL Server 배포

Ansible 플레이북을 사용하여 관리형 노드에 SQL Server를 배포하려면 컨트롤러 노드에서 다음 명령을 실행하세요.

sudo ansible-playbook -u user playbook.yaml

이 프로세스는 배포를 시작하며, 마지막에는 다음과 유사한 플레이 요약이 표시됩니다.

PLAY RECAP *******

10.0.0.12                  : ok=31   changed=42   unreachable=0    failed=0    skipped=0   rescued=1    ignored=0

10.0.0.14                  : ok=31   changed=42   unreachable=0    failed=0    skipped=0   rescued=1    ignored=0

리소스 정리

Azure VM을 계속 사용할 생각이 아니라면 Azure VM을 제거해야 합니다. 새 리소스 그룹에 VM 세 개를 만든 경우 Azure CLI를 사용하여 리소스 그룹 내의 모든 리소스를 제거할 수 있습니다.