Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
O Ansible 2.7 (ou posterior) é necessário para executar os guias estratégicos de exemplo neste artigo.
O Banco de Dados do Azure para MySQL é um serviço de banco de dados relacional baseado no MySQL Community Edition. O Banco de Dados do Azure para MySQL permite que você gerencie bancos de dados MySQL em seus aplicativos Web.
Neste artigo, você aprenderá a:
- Criar um servidor MySql
- Criar um banco de dados MySql
- Configurar uma regra de firewall para que um aplicativo externo possa se conectar ao servidor
- Conectar-se ao servidor MySql por meio do Azure Cloud Shell
- Consultar seus servidores MySQL disponíveis
- Listar todos os bancos de dados em seus servidores conectados
Pré-requisitos
- Assinatura do Azure: Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Instalar o Ansible: execute uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual linux
- Configure o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual linux, crie uma máquina virtual com o Ansible.
Criar um grupo de recursos
O código do guia estratégico nesta seção cria um grupo de recursos do Azure. Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.
Salve o guia estratégico a seguir como rg.yml:
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Antes de executar o guia estratégico, confira as seguintes anotações:
- Um grupo de recursos nomeado
myResourceGroupé criado. - O grupo de recursos é criado no
eastuslocal:
Executar o playbook usando ansible-playbook
ansible-playbook rg.yml
Criar um servidor e um banco de dados MySQL
O código do guia estratégico nesta seção cria um servidor MySQL e uma instância do Banco de Dados do Azure para MySQL. O novo servidor MySQL é um servidor de Finalidade Básica gen 5 com um vCore e é nomeado mysqlserveransible. A instância do banco de dados é nomeada mysqldbansible.
Para obter mais informações sobre tipos de preço, consulte os tipos de preço do Banco de Dados do Azure para MySQL.
Salve o guia estratégico a seguir como 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 }}"
Antes de executar o guia estratégico, confira as seguintes anotações:
- Na seção
vars, o valor domysqlserver_namedeve ser exclusivo. - Na seção
vars, substitua<server_admin_password>por uma senha.
Executar o playbook usando ansible-playbook
ansible-playbook mysql_create.yml
Configurar uma regra de firewall
Uma regra de firewall no nível do servidor permite que um aplicativo externo se conecte ao servidor por meio do firewall do serviço MySQL do Azure. Exemplos de aplicativos externos são a mysql ferramenta de linha de comando e o MySQL Workbench.
O código do guia estratégico nesta seção cria uma regra de firewall nomeada extenalaccess que permite conexões de qualquer endereço IP externo.
Salve o guia estratégico a seguir como 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"
Antes de executar o guia estratégico, confira as seguintes anotações:
- Na seção vars, substitua
startIpAddresseendIpAddress. Use o intervalo de endereços IP que corresponde ao intervalo do qual você se conectará. - As conexões com o Banco de Dados do Azure para MySQL se comunicam pela porta 3306. Se você tentar se conectar de dentro de uma rede corporativa, o tráfego de saída pela porta 3306 poderá não ser permitido. Nesse caso, você não pode se conectar ao servidor, a menos que seu departamento de TI abra a porta 3306.
- O guia estratégico usa o
azure_rm_resourcemódulo, que permite o uso direto da API REST.
Executar o playbook usando ansible-playbook
ansible-playbook mysql_firewall.yml
Conectar ao servidor
Nesta seção, você usará o Azure Cloud Shell para se conectar ao servidor criado anteriormente.
Abra shell.azure.com selecionando abaixo.
Insira o seguinte código:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -pNo prompt, insira o seguinte comando para consultar o status do servidor:
mysql> statusSe tudo correr bem, você verá um resultado semelhante aos resultados seguintes:
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 --------------
Consultar servidores MySQL
O código do playbook nesta seção consulta os servidores MySQL em myResourceGroup e lista os bancos de dados nos servidores encontrados.
Salve o guia estratégico a seguir como 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
Executar o playbook usando ansible-playbook
ansible-playbook mysql_query.yml
Depois de executar o guia estratégico, você verá uma saída semelhante aos seguintes resultados:
"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"
}
]
Você também verá a seguinte saída para o banco de dados 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"
}
]
Limpar os recursos
Salve o código a seguir como
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgExecute o playbook usando o comando ansible-playbook. Substitua o espaço reservado pelo nome do grupo de recursos a ser excluído. Todos os recursos dentro do grupo de recursos serão excluídos.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Pontos principais:
- Devido ao
registervariável e àdebugseção do livro de estratégias, os resultados são mostrados quando o comando é concluído.
- Devido ao