Condividi tramite


Avvio rapido: distribuire SQL Server in Linux usando un playbook Ansible

Si applica a: SQL Server - Linux

Questa guida introduttiva illustra i passaggi per automatizzare una distribuzione di SQL Server in Linux in Macchine virtuali di Azure, usando un playbook Ansible.

Ansible è un prodotto open source che consente di automatizzare il provisioning cloud, la gestione della configurazione e le distribuzioni di applicazioni.

I playbook Ansible consentono di usare Ansible per configurare l'ambiente. I playbook vengono codificati usando YAML in modo che siano leggibili dall'utente.

Prerequisiti

Panoramica

La prima macchina virtuale, in cui si configura Ansible Core, è il nodo del controller. In questo nodo si installerà il ruolo di sistema SQL Server.

Le macchine virtuali rimanenti sono i computer di destinazione, noti anche come nodi gestiti, per la distribuzione e la configurazione di SQL Server usando il ruolo di sistema.

Installare Ansible Core

A partire da RHEL 8.x nelle macchine virtuali di Azure, il pacchetto ansible-core può essere installato dal repository AppStream preconfigurato. È possibile installare Ansible Core nel nodo controller usando il comando seguente:

sudo yum install ansible-core

È possibile verificare che l'installazione sia avvenuta correttamente digitando il comando seguente:

ansible --version

L'output sarà simile all'esempio seguente:

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

Modificare il file hosts nel nodo del controller

Ansible creerà un file hosts nella directory /etc/ansible. Modificare questo file usando l'editor preferito per aggiungere i dettagli del nodo gestito, come voce di gruppo o come voci non raggruppate. Per informazioni su come creare un inventario personalizzato, vedere Come creare l'inventario.

In questo esempio usando il file hosts, l'indirizzo IP per il primo nodo gestito è 10.0.0.12 e l'indirizzo IP per il secondo nodo gestito è 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

Configurare l'accesso SSH senza password tra nodi

È necessario configurare una connessione Secure Shell (SSH) tra il nodo del controller e tutti i nodi gestiti in cui è necessario installare SQL Server.

Configurare SSH nel nodo del controller

Se SSH è già stato configurato, è possibile ignorare questo passaggio.

Usare il comando ssh-keygen per generare chiavi SSH. Quando si esegue il comando, viene richiesto di accettare i valori predefiniti. Al termine, si avrà una coppia di chiavi privata e pubblica.

Copiare la chiave pubblica nei nodi gestiti

  1. In ogni nodo gestito è necessario copiare la chiave pubblica dal nodo del controller appena creato usando il comando ssh-copy-id. Se si vuole specificare la directory di destinazione nel nodo gestito, è possibile usare il parametro -i.

  2. Nel comando seguente l'account user può essere lo stesso account configurato per ogni nodo gestito durante la creazione della macchina virtuale. È anche possibile usare l'account root, ma questo non è consigliato in un ambiente di produzione.

    sudo ssh-copy-id user@10.0.0.12
    sudo ssh-copy-id user@10.0.0.14
    
  3. Per verificare che la chiave pubblica SSH sia stata copiata in ogni nodo, usare il comando ssh dal nodo del controller. Se le chiavi sono state copiate correttamente, non viene richiesta una password e la connessione ha esito positivo.

    ssh user@10.0.0.12
    ssh user@10.0.0.14
    

Installare il ruolo di sistema SQL Server

Il ruolo di sistema Ansible è denominato ansible-collection-microsoft-sql. Nel nodo controller eseguire il comando seguente per installare il ruolo di sistema SQL Server:

sudo yum install ansible-collection-microsoft-sql

Questo comando installa il ruolo SQL Server in /usr/share/ansible/collections, con i file illustrati di seguito:

-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

Creare e configurare il playbook Ansible

Dopo aver installato il ruolo di sistema, verrà creato il file YAML del playbook SQL Server. Per riconoscere le varie variabili di ruolo, fare riferimento alla documentazione o al file README.md incluso nel ruolo di sistema SQL Server.

L'esempio seguente mostra un file playbook, con variabili di ruolo definite per configurare SQL Server e abilitare funzionalità aggiuntive:

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

Distribuire SQL Server nei nodi gestiti

Per distribuire SQL Server nei nodi gestiti usando il playbook Ansible, eseguire il comando seguente dal nodo del controller.

sudo ansible-playbook -u user playbook.yaml

Questo processo inizia la distribuzione e alla fine verrà visualizzato un riepilogo della riproduzione simile al seguente:

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

Pulire le risorse

Se non si continua a utilizzare le macchine virtuali di Azure, ricordarsi di rimuoverle. Se sono state create le tre macchine virtuali in un nuovo gruppo di risorse, è possibile rimuovere tutte le risorse all'interno di tale gruppo di risorse usando l'interfaccia della riga di comando di Azure.