Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Rozwiązanie Ansible w wersji 2.7 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.
Azure Database for MySQL to usługa relacyjnej bazy danych oparta na programie MySQL Community Edition. Usługa Azure Database for MySQL umożliwia zarządzanie bazami danych MySQL w aplikacjach internetowych.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Tworzenie serwera MySql
- Tworzenie bazy danych MySql
- Konfigurowanie reguły zapory tak, aby aplikacja zewnętrzna mogła łączyć się z serwerem
- Połączenie do serwera MySql z usługi Azure Cloud Shell
- Wykonywanie zapytań względem dostępnych serwerów MySQL
- Wyświetlanie listy wszystkich baz danych na połączonych serwerach
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Skonfiguruj usługę Azure Cloud Shell i — jeśli nie masz dostępu do maszyny wirtualnej z systemem Linux — utwórz maszynę wirtualną za pomocą rozwiązania Ansible.
Tworzenie grupy zasobów
Kod podręcznika w tej sekcji tworzy grupę zasobów platformy Azure. Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
Zapisz następujący podręcznik jako rg.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
- Zostanie utworzona grupa zasobów o nazwie
myResourceGroup
. - Grupa zasobów jest tworzona
eastus
w lokalizacji:
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook rg.yml
Tworzenie serwera MySQL i bazy danych
Kod podręcznika w tej sekcji tworzy serwer MySQL i wystąpienie usługi Azure Database for MySQL. Nowy serwer MySQL jest serwerem podstawowego przeznaczenia 5. generacji z jednym rdzeniem wirtualnym i nosi nazwę mysqlserveransible
. Wystąpienie bazy danych nosi nazwę mysqldbansible
.
Aby uzyskać więcej informacji na temat warstw cenowych, zobacz Warstwy cenowe usługi Azure Database for MySQL.
Zapisz następujący podręcznik jako 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 }}"
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
vars
W sekcji wartość musi być unikatowamysqlserver_name
.vars
W sekcji zastąp<server_admin_password>
ciąg hasłem.
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook mysql_create.yml
Konfigurowanie reguły zapory
Reguła zapory na poziomie serwera umożliwia aplikacji zewnętrznej łączenie się z serwerem za pośrednictwem zapory usługi Azure MySQL. Przykłady aplikacji zewnętrznych to mysql
narzędzie wiersza polecenia i aplikacja MySQL Workbench.
Kod podręcznika w tej sekcji tworzy regułę zapory o nazwie extenalaccess
, która zezwala na połączenia z dowolnego zewnętrznego adresu IP.
Zapisz następujący podręcznik jako 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"
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
- W sekcji vars zastąp wartości
startIpAddress
iendIpAddress
. Użyj zakresu adresów IP odpowiadających zakresowi, z którego będziesz się łączyć. - Połączenia z usługą Azure Database for MySQL korzystają z portu 3306. Jeśli próbujesz nawiązać połączenie z sieci firmowej, ruch wychodzący na porcie 3306 może być zablokowany. W takim przypadku nie będzie można nawiązać połączenia z serwerem, chyba że dział informatyczny otworzy port 3306.
- Podręcznik używa modułu
azure_rm_resource
, który umożliwia bezpośrednie korzystanie z interfejsu API REST.
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook mysql_firewall.yml
Nawiązywanie połączenia z serwerem
W tej sekcji użyjesz usługi Azure Cloud Shell do nawiązania połączenia z utworzonym wcześniej serwerem.
Otwórz shell.azure.com, wybierając poniżej.
Wprowadź następujące kod:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -p
W wierszu polecenia wprowadź następujące polecenie, aby wysłać zapytanie dotyczące stanu serwera:
mysql> status
Jeśli wszystko pójdzie dobrze, zobaczysz dane wyjściowe podobne do następujących wyników:
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 --------------
Wykonywanie zapytań względem serwerów MySQL
Kod podręcznika w tej sekcji wykonuje zapytania dotyczące serwerów MySQL w programie myResourceGroup
i wyświetla listę baz danych na znalezionych serwerach.
Zapisz następujący podręcznik jako 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
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook mysql_query.yml
Po uruchomieniu podręcznika zobaczysz dane wyjściowe podobne do następujących wyników:
"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"
}
]
Zobaczysz również następujące dane wyjściowe dla bazy danych MySQL:
"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"
}
]
Czyszczenie zasobów
Zapisz następujący kod jako
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Uruchom podręcznik przy użyciu polecenia ansible-playbook . Zastąp symbol zastępczy nazwą grupy zasobów, która ma zostać usunięta. Wszystkie zasoby w grupie zasobów zostaną usunięte.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Kluczowe punkty:
- Ze względu na zmienną
register
idebug
sekcję podręcznika wyniki są wyświetlane po zakończeniu polecenia.
- Ze względu na zmienną