Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Für die Ausführung der Beispielplaybooks in diesem Artikel ist mindestens Ansible 2.7 erforderlich.
Azure Database for MySQL ist ein relationaler Datenbankdienst, der auf der MySQL Community-Edition basiert. Mit Azure Database for MySQL können Sie MySQL-Datenbanken in Ihren Web-Apps verwalten.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Erstellen eines MySQL-Servers
- Erstellen einer MySQL-Datenbank
- Konfigurieren einer Firewallregel, damit eine externe App eine Verbindung mit Ihrem Server herstellen kann
- Herstellen einer Verbindung mit Ihrem MySQL-Server über Azure Cloud Shell
- Abfragen Ihrer verfügbaren MySQL-Server
- Auflisten aller Datenbanken Ihrer verbundenen Server
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Installieren von Ansible: Verwenden Sie eine der folgenden Optionen:
- Installieren und Konfigurieren von Ansible auf einem virtuellen Linux-Computer
- Konfigurieren Sie Azure Cloud Shell. Sollten Sie keinen Zugriff auf einen virtuellen Linux-Computer haben, können Sie mit Ansible einen virtuellen Computer erstellen.
Erstellen einer Ressourcengruppe
Mit dem Playbookcode in diesem Abschnitt wird eine Azure-Ressourcengruppe erstellt. Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.
Speichern Sie das folgende Playbook als rg.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Eine Ressourcengruppe mit dem Namen
myResourceGroup
wird erstellt. - Die Ressourcengruppe wird am Standort
eastus
erstellt:
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook rg.yml
Erstellen eines MySQL-Servers und einer Datenbank
Mit dem Playbookcode in diesem Abschnitt werden ein MySQL-Server und eine Azure Database for MySQL-Instanz erstellt. Der neue MySQL-Server ist ein Server vom Typ „Gen 5 Basic“ mit einem V-Kern und dem Namen mysqlserveransible
. Die Datenbankinstanz hat den Namen mysqldbansible
.
Weitere Informationen zu Tarifen finden Sie unter Azure Database for MySQL – Tarife.
Speichern Sie das folgende Playbook als mysql_create.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
mysqlserver_name: mysqlserveransible
mysqldb_name: mysqldbansible
admin_username: mysqladmin
admin_password: <server_admin_password>
tasks:
- name: Create MySQL Server
azure_rm_mysqlserver:
resource_group: "{{ resource_group }}"
name: "{{ mysqlserver_name }}"
sku:
name: B_Gen5_1
tier: Basic
location: "{{ location }}"
version: 5.6
enforce_ssl: True
admin_username: "{{ admin_username }}"
admin_password: "{{ admin_password }}"
storage_mb: 51200
- name: Create instance of MySQL Database
azure_rm_mysqldatabase:
resource_group: "{{ resource_group }}"
server_name: "{{ mysqlserver_name }}"
name: "{{ mysqldb_name }}"
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Im Abschnitt
vars
muss der Wert vonmysqlserver_name
eindeutig sein. - Ersetzen Sie im Abschnitt
vars
den Platzhalter<server_admin_password>
durch ein Kennwort.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook mysql_create.yml
Konfigurieren einer Firewallregel
Eine Firewallregel auf Serverebene ermöglicht es einer externen App, über die Firewall des Azure MySQL-Diensts eine Verbindung mit Ihrem Server herzustellen. Beispiele für externe Apps sind das Befehlszeilentool mysql
und MySQL Workbench.
Mit dem Playbookcode in diesem Abschnitt wird eine Firewallregel mit dem Namen extenalaccess
erstellt, die Verbindungen von allen externen IP-Adressen ermöglicht.
Speichern Sie das folgende Playbook als mysql_firewall.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
mysqlserver_name: mysqlserveransible
tasks:
- name: Open firewall to access MySQL Server from outside
azure_rm_resource:
api_version: '2017-12-01'
resource_group: "{{ resource_group }}"
provider: dbformysql
resource_type: servers
resource_name: "{{ mysqlserver_name }}"
subresource:
- type: firewallrules
name: externalaccess
body:
properties:
startIpAddress: "0.0.0.0"
endIpAddress: "255.255.255.255"
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Ersetzen Sie im Abschnitt „vars“ die Elemente
startIpAddress
undendIpAddress
. Verwenden Sie den Bereich mit den IP-Adressen, die dem Bereich entsprechen, von dem aus Sie die Verbindung herstellen. - Die Kommunikation für Verbindungen mit Azure-Datenbank für MySQL erfolgt über Port 3306. Wenn Sie versuchen, eine Verbindung über ein Unternehmensnetzwerk herzustellen, wird ausgehender Datenverkehr über Port 3306 unter Umständen nicht zugelassen. In diesem Fall können Sie nur dann eine Verbindung mit Ihrem Server herstellen, wenn Ihre IT-Abteilung Port 3306 öffnet.
- Im Playbook wird das Modul
azure_rm_resource
verwendet, das die direkte Nutzung der REST-API ermöglicht.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook mysql_firewall.yml
Herstellen einer Verbindung mit dem Server
In diesem Abschnitt verwenden Sie Azure Cloud Shell, um eine Verbindung mit dem zuvor erstellten Server herzustellen.
Öffnen Sie „shell.azure.com“, indem Sie Folgendes auswählen:
Geben Sie den folgenden Code ein:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -p
Geben Sie an der Eingabeaufforderung den folgenden Befehl zum Abfragen des Serverstatus ein:
mysql> status
Wenn keine Fehler auftreten, wird in etwa die folgende Ausgabe angezeigt:
demo@Azure:~$ mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65233 Server version: 5.6.39.0 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> status -------------- mysql Ver 14.14 Distrib 5.7.23, for Linux (x86_64) using EditLine wrapper Connection id: 65233 Current database: Current user: mysqladmin@13.76.42.93 SSL: Cipher in use is AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.6.39.0 MySQL Community Server (GPL) Protocol version: 10 Connection: mysqlserveransible.mysql.database.azure.com via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 36 min 21 sec Threads: 5 Questions: 559 Slow queries: 0 Opens: 96 Flush tables: 3 Open tables: 10 Queries per second avg: 0.256 --------------
Abfragen von MySQL-Servern
Mit dem Playbookcode in diesem Abschnitt werden MySQL-Server in myResourceGroup
abgefragt und die Datenbanken der gefundenen Server aufgelistet.
Speichern Sie das folgende Playbook als mysql_query.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
mysqlserver_name: mysqlserveransible
tasks:
- name: Query MySQL Servers in current resource group
azure_rm_mysqlserver_facts:
resource_group: "{{ resource_group }}"
register: mysqlserverfacts
- name: Dump MySQL Server facts
debug:
var: mysqlserverfacts
- name: Query MySQL Databases
azure_rm_mysqldatabase_facts:
resource_group: "{{ resource_group }}"
server_name: "{{ mysqlserver_name }}"
register: mysqldatabasefacts
- name: Dump MySQL Database Facts
debug:
var: mysqldatabasefacts
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook mysql_query.yml
Nach dem Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
"servers": [
{
"admin_username": "mysqladmin",
"enforce_ssl": false,
"fully_qualified_domain_name": "mysqlserveransible.mysql.database.azure.com",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.DBforMySQL/servers/mysqlserveransible",
"location": "eastus",
"name": "mysqlserveransible",
"resource_group": "myResourceGroup",
"sku": {
"capacity": 1,
"family": "Gen5",
"name": "B_Gen5_1",
"tier": "Basic"
},
"storage_mb": 5120,
"user_visible_state": "Ready",
"version": "5.6"
}
]
Darüber hinaus wird die folgende Ausgabe für die MySQL-Datenbank angezeigt:
"databases": [
{
"charset": "utf8",
"collation": "utf8_general_ci",
"name": "information_schema",
"resource_group": "myResourceGroup",
"server_name": "mysqlserveransible"
},
{
"charset": "latin1",
"collation": "latin1_swedish_ci",
"name": "mysql",
"resource_group": "myResourceGroup",
"server_name": "mysqlserveransibler"
},
{
"charset": "latin1",
"collation": "latin1_swedish_ci",
"name": "mysqldbansible",
"resource_group": "myResourceGroup",
"server_name": "mysqlserveransible"
},
{
"charset": "utf8",
"collation": "utf8_general_ci",
"name": "performance_schema",
"resource_group": "myResourceGroup",
"server_name": "mysqlserveransible"
}
]
Bereinigen von Ressourcen
Speichern Sie den folgenden Code als
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Führen Sie das Playbook mithilfe des Befehls ansible-playbook aus. Ersetzen Sie den Platzhalter durch den Namen der zu löschenden Ressourcengruppe. Alle Ressourcen innerhalb der Ressourcengruppe werden gelöscht.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Die wichtigsten Punkte:
- Aufgrund der Variablen
register
und des Abschnittsdebug
des Playbooks werden die Ergebnisse angezeigt, wenn der Befehl abgeschlossen ist.
- Aufgrund der Variablen