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
Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
Creare un nuovo gruppo di risorse usando l'interfaccia della riga di comando di Azure, contenente tre Macchine virtuali di Azure (VM):
Creare una macchina virtuale di Azure, che esegue Red Hat Enterprise Linux (RHEL) 8.5 o versione successiva. Questa macchina virtuale diventa il nodo del controller.
Creare una macchina virtuale di Azure, che esegue RHEL, per fungere da primo nodo gestito.
Creare una macchina virtuale di Azure, che esegue Ubuntu Server, per fungere da secondo nodo gestito.
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
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
.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'accountroot
, 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
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.