Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
O Ansible 2.7 (ou posterior) é necessário para executar os playbooks 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 seu servidor
- Conecte-se ao seu servidor MySql a partir do Azure Cloud Shell
- Consulte 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.
Instale 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 playbook 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 seguinte playbook 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 playbook, consulte as seguintes notas:
- Um grupo de recursos chamado
myResourceGroupé criado. - O grupo de recursos é criado no
eastuslocal:
Execute o livro de estratégias usando ansible-playbook
ansible-playbook rg.yml
Criar um servidor MySQL e banco de dados
O código do playbook nesta seção cria um servidor MySQL e uma instância de Banco de Dados do Azure para MySQL. O novo servidor MySQL é um servidor Gen 5 Basic Purpose com um vCore e é chamado mysqlserveransible. A instância do banco de dados é denominada mysqldbansible.
Para obter mais informações sobre camadas de preços, consulte Banco de Dados do Azure para camadas de preços MySQL.
Salve o seguinte playbook 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 playbook, consulte as seguintes notas:
- Na seção
vars, o valor demysqlserver_namedeve ser único. - Na secção
vars, substitua<server_admin_password>por uma senha.
Execute o livro de estratégias usando ansible-playbook
ansible-playbook mysql_create.yml
Configurar uma regra de firewall
Uma regra de firewall no nível de servidor permite que um aplicativo externo se conecte ao seu 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 playbook nesta seção cria uma regra de firewall chamada extenalaccess que permite conexões de qualquer endereço IP externo.
Salve o seguinte playbook 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 playbook, consulte as seguintes notas:
- Na seção vars, substitua
startIpAddresseendIpAddress. Use o intervalo de endereços IP que correspondem ao intervalo a partir do qual você estará se conectando. - 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 pode não ser permitido. Nesse caso, você não pode se conectar ao servidor, a menos que o departamento de TI abra a porta 3306.
- O playbook usa o
azure_rm_resourcemódulo, que permite o uso direto da API REST.
Execute o livro de estratégias usando ansible-playbook
ansible-playbook mysql_firewall.yml
Ligar ao servidor
Nesta seção, você usa o Azure Cloud Shell para se conectar ao servidor criado anteriormente.
Abra o shell.azure.com ao selecionar a opção abaixo.
Insira o seguinte código:
mysql -h mysqlserveransible.mysql.database.azure.com -u mysqladmin@mysqlserveransible -pNo prompt, digite o seguinte comando para consultar o status do servidor:
mysql> statusSe tudo correr bem, você verá resultados semelhantes aos seguintes resultados:
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 seguinte playbook 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
Execute o livro de estratégias usando ansible-playbook
ansible-playbook mysql_query.yml
Depois de executar o playbook, 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 vê 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"
}
]
Limpeza de recursos
- Ansible
- Azure CLI
- Azure PowerShell
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 à variável
registere à seçãodebugdo playbook, os resultados aparecem quando o comando é concluído.
- Devido à variável