Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Ansible 2.7 (atau yang lebih baru) diperlukan agar dapat menjalankan playbook contoh dalam artikel ini.
Azure Database for MySQL adalah layanan database relasional berdasarkan MySQL Community Edition. Azure Database for MySQL memungkinkan Anda mengelola database MySQL di aplikasi web Anda.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat server MySql
- Membuat database MySQL
- Mengonfigurasi aturan firewall sehingga aplikasi eksternal dapat tersambung ke server Anda
- Menyambungkan ke server MySql Anda dari Azure Cloud Shell
- Mengkueri server MySQL yang tersedia
- Mencantumkan semua database di server yang tersambung
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansible pada komputer virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke komputer virtual Linux - buat komputer virtual dengan Ansible.
Membuat grup sumber daya
Kode playbook pada bagian ini membuat grup sumber daya Azure. Grup sumber daya adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola.
Simpan playbook berikut sebagai rg.yml:
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Sebelum menjalankan playbook, lihat catatan berikut:
- Grup sumber daya bernama
myResourceGroupdibuat. - Grup sumber daya dibuat di
eastuslokasi:
Jalankan playbook menggunakan ansible-playbook
ansible-playbook rg.yml
Membuat server dan database MySQL
Kode playbook di bagian ini membuat server MySQL dan Azure Database for MySQL instance. Server MySQL baru adalah server Tujuan Dasar Gen 5 dengan satu vCore dan diberi nama mysqlserveransible. Instans database diberi nama mysqldbansible.
Untuk informasi selengkapnya tentang tingkat harga, lihat Tingkat harga Azure Database for MySQL.
Simpan playbook berikut sebagai 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 }}"
Sebelum menjalankan playbook, lihat catatan berikut:
- Pada bagian
vars, nilaimysqlserver_nameharus unik. - Di bagian ,
varsganti<server_admin_password>dengan kata sandi.
Jalankan playbook menggunakan ansible-playbook
ansible-playbook mysql_create.yml
Mengonfigurasi aturan firewall
Aturan firewall tingkat server memungkinkan aplikasi eksternal untuk terhubung ke server Anda melalui firewall layanan Azure MySQL. Contoh aplikasi eksternal adalah mysql alat baris perintah dan MySQL Workbench.
Kode playbook di bagian ini membuat aturan firewall bernama extenalaccess yang memungkinkan koneksi dari alamat IP eksternal apa pun.
Simpan playbook berikut sebagai 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"
Sebelum menjalankan playbook, lihat catatan berikut:
- Di bagian vars, ganti
startIpAddressdanendIpAddress. Gunakan rentang alamat IP yang sesuai dengan rentang dari mana Anda akan terhubung. - Koneksi ke Azure Database for MySQL berkomunikasi melalui port 3306. Jika Anda mencoba terhubung dari dalam jaringan perusahaan, lalu lintas keluar melalui port 3306 mungkin tidak diizinkan. Dalam hal ini, Anda tidak dapat terhubung ke server Anda kecuali departemen TI Anda membuka port 3306.
- Playbook menggunakan modul
azure_rm_resource, yang memungkinkan penggunaan langsung API REST.
Jalankan playbook menggunakan ansible-playbook
ansible-playbook mysql_firewall.yml
Terhubung ke server
Di bagian ini, Anda menggunakan Azure Cloud Shell untuk menyambungkan ke server yang Anda buat sebelumnya.
Buka shell.azure.com dengan memilih di bawah ini.
Masukkan kode berikut:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -pPada perintah , masukkan perintah berikut untuk mengkueri status server:
mysql> statusJika semuanya berjalan dengan baik, Anda akan melihat output yang mirip dengan hasil berikut:
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 --------------
Melakukan kueri pada server MySQL
Kode playbook di bagian ini mengirimkan kueri ke server MySQL di myResourceGroup dan mencantumkan database pada server yang ditemukan.
Simpan playbook berikut sebagai 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
Jalankan playbook menggunakan ansible-playbook
ansible-playbook mysql_query.yml
Setelah menjalankan playbook, Anda akan melihat output yang mirip dengan hasil berikut:
"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"
}
]
Anda juga melihat output berikut untuk database 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"
}
]
Membersihkan sumber daya
Simpan kode berikut sebagai
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgJalankan playbook menggunakan perintah ansible-playbook . Ganti placeholder dengan nama grup sumber daya yang akan dihapus. Semua sumber daya dalam grup sumber daya akan dihapus.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Poin utama:
-
registerKarena variabel dandebugbagian dari playbook, hasilnya ditampilkan saat perintah selesai.
-