Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.7 (veya üzeri) gereklidir.
MySQL için Azure Veritabanı, MySQL Community Edition'ı temel alan bir ilişkisel veritabanı hizmetidir. MySQL için Azure Veritabanı, web uygulamalarınızdaki MySQL veritabanlarını yönetmenizi sağlar.
Bu makalede şunları öğreneceksiniz:
- MySql sunucusu oluşturma
- MySql veritabanı oluşturma
- Dış uygulamanın sunucunuza bağlanabilmesi için güvenlik duvarı kuralı yapılandırma
- Azure Cloud Shell'den MySql sunucunuza bağlanma
- Kullanılabilir MySQL sunucularınızı sorgulama
- Bağlı sunucularınızdaki tüm veritabanlarını listeleme
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Ansible'ı Yükleme: Aşağıdaki seçeneklerden birini yapın:
- Ansible'ı Linux sanal makinesine yükleme ve yapılandırma
- Azure Cloud Shell'i yapılandırın ve Linux sanal makinesine erişiminiz yoksa Ansible ile bir sanal makine oluşturun.
Bir kaynak grubu oluşturun
Bu bölümdeki playbook kodu bir Azure kaynak grubu oluşturur. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir kapsayıcıdır.
Aşağıdaki playbook'u rg.yml olarak kaydedin.
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
- adlı
myResourceGroupbir kaynak grubu oluşturulur. - Kaynak grubu şu konumda
eastusoluşturulur:
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook rg.yml
MySQL sunucusu ve veritabanı oluşturma
Bu bölümdeki playbook kodu bir MySQL sunucusu ve MySQL için Azure Veritabanı örneği oluşturur. Yeni MySQL sunucusu, bir sanal çekirdek içeren 5. Nesil Temel Amaçlı bir sunucudur ve olarak adlandırılır mysqlserveransible. Veritabanı örneği olarak adlandırılır mysqldbansible.
Fiyatlandırma katmanları hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı fiyatlandırma katmanları.
Aşağıdaki playbook'u mysql_create.yml olarak kaydedin.
- 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 }}"
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
-
varsbölümündemysqlserver_namedeğerinin benzersiz olması gerekir. -
varsbölümünde<server_admin_password>yerine bir parola yazın.
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook mysql_create.yml
Güvenlik duvarı kuralı yapılandırma
Sunucu düzeyinde güvenlik duvarı kuralı, dış uygulamanın Azure MySQL hizmeti güvenlik duvarı üzerinden sunucunuza bağlanmasına olanak tanır. Dış uygulamalara örnek olarak mysql komut satırı aracı ve MySQL Workbench verilebilir.
Bu bölümdeki playbook kodu, herhangi bir dış IP adresinden bağlantılara izin veren adlı extenalaccess bir güvenlik duvarı kuralı oluşturur.
Aşağıdaki playbook'u mysql_firewall.yml olarak kaydedin.
- 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"
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
- vars bölümünde
startIpAddressveendIpAddressöğelerini değiştirin. Bağlandığınız aralığa karşılık gelen IP adresleri aralığını kullanın. - MySQL için Azure Veritabanı bağlantıları 3306 numaralı bağlantı noktası üzerinden iletişim kurar. Şirket ağı içinden bağlanmaya çalışırsanız 3306 numaralı bağlantı noktası üzerinden giden trafiğe izin verilmiyor olabilir. Bu durumda, BT departmanınız 3306 numaralı bağlantı noktasını açmadığı sürece sunucunuza bağlanamazsınız.
- Playbook, REST API'nin
azure_rm_resourcedoğrudan kullanımına izin veren modülünü kullanır.
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook mysql_firewall.yml
Sunucuya bağlanma
Bu bölümde, daha önce oluşturduğunuz sunucuya bağlanmak için Azure Cloud Shell'i kullanacaksınız.
Aşağıdan seçim yaparak shell.azure.com açın.
Aşağıdaki kodu girin:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -pİstemde, sunucu durumunu sorgulamak için aşağıdaki komutu girin:
mysql> statusHer şey yolunda giderse aşağıdaki sonuçlara benzer bir çıkış görürsünüz:
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 --------------
MySQL sunucularını sorgulama
Bu bölümdeki playbook kodu içindeki myResourceGroup MySQL sunucularını sorgular ve bulunan sunuculardaki veritabanlarını listeler.
Aşağıdaki playbook'u mysql_query.yml olarak kaydedin.
- 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
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook mysql_query.yml
Playbook'u çalıştırdıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:
"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"
}
]
MySQL veritabanı için aşağıdaki çıkışı da görürsünüz:
"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"
}
]
Kaynakları temizle
Aşağıdaki kodu olarak
delete_rg.ymlkaydedin.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgansible-playbook komutunu kullanarak playbook'u çalıştırın. Yer tutucuyu silinecek kaynak grubunun adıyla değiştirin. Kaynak grubundaki tüm kaynaklar silinir.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Önemli noktalar:
- Playbook'un
registerdeğişkeni vedebugbölümü nedeniyle, komut tamamlandığında sonuçlar görüntülenir.
- Playbook'un