Teilen über


Schnellstart: Bereitstellen von SQL Server für Linux mithilfe eines Ansible-Playbooks

Gilt für:SQL Server unter Linux

In diesem Schnellstart werden die Schritte zum Automatisieren einer Bereitstellung von SQL Server für Linux in Azure Virtual Machines mithilfe eines Ansible-Playbooks erläutert.

Ansible ist ein Open-Source-Produkt, mit dem die Cloudbereitstellung, Konfigurationsverwaltung und Anwendungsbereitstellungen automatisiert werden können.

Mit Ansible-Playbooks können Sie Ansible anweisen, Ihre Umgebung zu konfigurieren. Playbooks werden mit YAML codiert, damit sie für Menschen lesbar sind.

Voraussetzungen

  • Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.

  • Erstellen Sie eine neue Ressourcengruppe mit Azure CLI, die drei virtuelle Azure-Computer enthält:

    • Erstellt eine Azure VM, mit Red Hat Enterprise Linux (RHEL) 8.5 oder höher. Dieser virtuelle Computer (VM) wird zum Controllerknoten.

    • Erstellt eine Azure-VM, auf der RHEL ausgeführt wird und die als erster verwalteter Knoten fungiert.

    • Erstellt eine Azure-VM, auf der Ubuntu Server ausgeführt wird und die als zweiter verwalteter Knoten fungiert.

Übersicht

Die erste VM, auf der Sie Ansible Core konfigurieren, ist der Controllerknoten. Auf diesem Knoten installieren Sie die SQL Server-Systemrolle.

Die verbleibenden VMs sind die Zielcomputer (auch als verwaltete Knoten bezeichnet) zum Bereitstellen und Konfigurieren von SQL Server mithilfe der Systemrolle.

Installieren von Ansible Core

Ab RHEL 8.x auf Azure-VMs kann das ansible-core Paket aus dem vorkonfigurierten AppStream-Repository installiert werden. Mithilfe des folgenden Befehls können Sie Ansible Core auf dem Controllerknoten installieren:

sudo yum install ansible-core

Sie können mit dem folgenden Befehl bestätigen, dass die Installation erfolgreich war:

ansible --version

Ihnen wird daraufhin eine Ausgabe angezeigt, die in etwa wie im folgenden Beispiel aussieht:

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

Bearbeiten der Datei hosts auf dem Controllerknoten

Ansible erstellt eine hosts-Datei im /etc/ansible-Verzeichnis. Bearbeiten Sie diese Datei mithilfe Ihres bevorzugten Editors, um die Details der verwalteten Knoten entweder als Gruppeneintrag oder als nicht gruppierte Einträge hinzuzufügen. Informationen zum Erstellen Ihres eigenen Bestands finden Sie unter Erstellen Ihres Bestands.

In diesem Beispiel mit der Datei hosts ist die IP-Adresse für den ersten verwalteten Knoten 10.0.0.12 und die IP-Adresse für den zweiten verwalteten Knoten 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

Konfigurieren des kennwortlosen SSH-Zugriffs zwischen Knoten

Sie müssen eine Ssh-Verbindung (Secure Shell) zwischen dem Controllerknoten und allen verwalteten Knoten konfigurieren, auf denen SQL Server installiert werden soll.

Konfigurieren von SSH auf dem Controllerknoten

Wenn SSH bereits konfiguriert ist, können Sie diesen Schritt überspringen.

Verwenden Sie den Befehl ssh-keygen, um SSH-Schlüssel zu generieren. Wenn Sie den Befehl ausführen, werden Sie aufgefordert, die Standardwerte zu akzeptieren. Nach Abschluss des Vorgangs verfügen Sie über ein privates und öffentliches Schlüsselpaar.

Kopieren des öffentlichen Schlüssels zu den verwalteten Knoten

  1. Sie müssen auf jedem verwalteten Knoten den öffentlichen Schlüssel vom gerade erstellten Controllerknoten mithilfe des Befehls ssh-copy-id kopieren. Wenn Sie das Zielverzeichnis auf dem verwalteten Knoten angeben möchten, können Sie den Parameter -i verwenden.

  2. Im folgenden Befehl kann das Konto user das gleiche Konto sein, das Sie bei der Erstellung des virtuellen Computers für jeden verwalteten Knoten konfiguriert haben. Sie können auch das Konto root verwenden, aber dies wird in einer Produktionsumgebung nicht empfohlen.

    sudo ssh-copy-id user@10.0.0.12
    sudo ssh-copy-id user@10.0.0.14
    
  3. Um zu bestätigen, dass der öffentliche SSH-Schlüssel in jeden Knoten kopiert wurde, verwenden Sie den Befehl ssh auf dem Controllerknoten. Wenn Sie die Schlüssel ordnungsgemäß kopiert haben, werden Sie nicht zur Eingabe eines Kennworts aufgefordert, und die Verbindung wurde erfolgreich hergestellt.

    ssh user@10.0.0.12
    ssh user@10.0.0.14
    

Installieren der SQL Server-Systemrolle

Die Ansible-Systemrolle heißt ansible-collection-microsoft-sql. Führen Sie auf dem Controllerknoten den folgenden Befehl aus, um die SQL Server-Systemrolle zu installieren:

sudo yum install ansible-collection-microsoft-sql

Mit diesem Befehl wird die SQL Server-Rolle auf /usr/share/ansible/collections mit den folgenden Dateien installiert:

-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

Erstellen und Konfigurieren des Ansible-Playbooks

Nach der Installation der Systemrolle erstellen Sie die YAML-Datei für das SQL Server-Playbook. Informationen zu den verschiedenen Rollenvariablen finden Sie in der Dokumentation oder in der Datei „README.md“, die mit der SQL Server-Systemrolle bereitgestellt wurde.

Das folgende Beispiel zeigt eine Playbook-Datei mit Rollenvariablen, die zum Konfigurieren von SQL Server definiert sind und zusätzliche Funktionen aktivieren. Ersetzen Sie <password> durch ein gültiges Kennwort.

- 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: "<password>"
    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​

Bereitstellen von SQL Server auf den verwalteten Knoten

Um SQL Server mithilfe des Ansible-Playbooks auf verwalteten Knoten bereitzustellen, führen Sie den folgenden Befehl auf dem Controllerknoten aus:

sudo ansible-playbook -u user playbook.yaml

Mit diesem Vorgang beginnt die Bereitstellung, und am Ende sollten Sie eine Zusammenfassung der Wiedergabe sehen, die ähnlich wie diese Ausgabe aussieht:

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

Bereinigen von Ressourcen

Wenn Sie Ihre Azure-VMs nicht mehr verwenden möchten, denken Sie daran, sie zu entfernen. Wenn Sie die drei VMs in einer neuen Ressourcengruppe erstellt haben, können Sie alle Ressourcen in dieser Ressourcengruppe mithilfe der Azure CLI entfernen.