evento
17/03, 23 - 21/03, 23
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agoraEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Neste início rápido, você criará e recuperará segredos do cofre de chaves do Azure com o Ansible.
Importante
O Ansible 2.9 (ou posterior) é necessário para executar os playbooks de exemplo neste artigo.
Neste artigo, vai aprender a:
Instale o Ansible: execute uma das seguintes opções:
O Ansible precisa de um grupo de recursos para implantar seus recursos.
Crie um playbook do Ansible chamado create_kv.yml
adicionar a seguinte tarefa para criar um grupo de recursos:
---
- name: Create Azure key vault
hosts: localhost
connection: local
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: ansible-kv-test-rg
location: eastus
Defina as variáveis necessárias para o ID do locatário, ID do objeto principal do serviço e nome do cofre.
---
vars:
tenant_id: <tenantId>
object_id: <servicePrincipalObjectId>
vault_name: <vaultName>
Substitua <tenantId>
, <servicePrincipalObjectId>
e <vaultName>
com os valores apropriados. O objectId é usado para conceder acesso a segredos dentro do cofre de chaves.
Ponto Chave:
https://{vault-name}.vault.azure.net
URI.Configure a instância do cofre de chaves do Azure adicionando a create_kv.yml
tarefa.
---
- name: Create key vault instance
azure_rm_keyvault:
resource_group: ansible-kv-test-rg
vault_name: "{{ vault_name }}"
enabled_for_deployment: yes
vault_tenant: "{{ tenant_id }}"
sku:
name: standard
access_policies:
- tenant_id: "{{ tenant_id }}"
object_id: "{{ object_id }}"
secrets:
- get
- list
- set
- delete
Execute o create_kv.yml
playbook.
ansible-playbook create_kv.yml
PLAY [localhost] *******************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]
TASK [Create resource group] *******************************************************************************************
ok: [localhost]
TASK [Create key vault instance] ************************************************************************************
ok: [localhost]
PLAY RECAP *************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Esta seção lista todo o manual de exemplo do Ansible para criar um cofre de chaves do Azure.
- hosts: localhost
connection: local
vars:
tenant_id: <tenantId>
object_id: <servicePrincipalObjectId>
vault_name: <vaultName>
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: ansible-kv-test-rg
location: eastus
- name: Create instance of Key Vault
azure_rm_keyvault:
resource_group: ansible-kv-test-rg
vault_name: "{{ vault_name }}"
enabled_for_deployment: yes
vault_tenant: "{{ tenant_id }}"
sku:
name: standard
access_policies:
- tenant_id: "{{ tenant_id }}"
object_id: "{{ object_id }}"
secrets:
- get
- list
- set
- delete
Antes que o segredo possa ser criado, você precisará do URI do keyvault.
Crie outro manual chamado create_kv_secret.yml
. Copie o seguinte código para o playbook:
---
- hosts: localhost
connection: local
tasks:
- name: Get Key Vault by name
azure_rm_keyvault_info:
resource_group: ansible-kv-test-rg
name: <vaultName>
register: keyvault
- name: set KeyVault uri fact
set_fact: keyvaulturi="{{ keyvault['keyvaults'][0]['vault_uri'] }}"
- name: Create a secret
azure_rm_keyvaultsecret:
secret_name: adminPassword
secret_value: <secretValue>
keyvault_uri: "{{ keyvaulturi }}"
Substitua <vaultName>
pelo nome do cofre de chaves e <secretValue>
pelo valor do segredo.
Ponto principal:
azure_rm_keyvault_info
e set_facts
modules registra o URI do cofre de chaves como uma variável. Essa variável é então passada para o módulo para criar o azure_rm_keyvaultsecret
segredo.Execute o create_kv_secret.yml
playbook.
ansible-playbook create_kv_secret.yml
PLAY [localhost] *******************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]
TASK [Get Key Vault by name] *******************************************************************************************
ok: [localhost]
TASK [set KeyVault uri fact] *******************************************************************************************
ok: [localhost]
TASK [Create a secret] *************************************************************************************************
ok: [localhost]
PLAY RECAP *************************************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Os segredos armazenados no cofre de chaves do Azure podem ser usados para preencher variáveis do Ansible.
Crie um novo manual chamado get_kv_secrets.yml
para recuperar segredos do cofre de chaves com o Ansible.
Ansible 2.9 com azure_preview_modules
---
- hosts: localhost
connection: local
roles:
- { role: azure.azure_preview_modules }
vars:
tenant_id: <tenantId>
vault_name: <vaultName>
secret_name: adminPassword
client_id: <servicePrincipalApplicationId>
client_secret: <servicePrincipalSecret>
tasks:
- name: Get Key Vault by name
azure_rm_keyvault_info:
resource_group: ansible-kv-test-rg
name: "{{ vault_name }}"
register: keyvault
- name: Set key vault URI fact
set_fact: keyvaulturi="{{ keyvault['keyvaults'][0]['vault_uri'] }}"
- name: Set key vault secret fact
set_fact: secretValue={{ lookup('azure_keyvault_secret',secret_name,vault_url=keyvaulturi, client_id=client_id, secret=client_secret, tenant_id=tenant_id) }}
- name: Output key vault secret
debug:
msg: "{{ secretValue }}"
Substitua <tenantId>
, , , <vaultName>
<servicePrincipalApplicationId>
e <servicePrincipalSecret>
pelos valores apropriados.
Para saber mais sobre azure_preview_modules
o , consulte a página do Ansible Galaxy .
Ansible 2.10 com azure.azcollection
---
- hosts: localhost
connection: local
collections:
- azure.azcollection
vars:
vault_name: ansible-kv-test-01
secret_name: adminPassword
tasks:
- name: Get Key Vault by name
azure_rm_keyvault_info:
resource_group: ansible-kv-test-rg
name: "{{ vault_name }}"
register: keyvault
- name: Set key vault URI fact
set_fact: keyvaulturi="{{ keyvault['keyvaults'][0]['vault_uri'] }}"
- name: Get secret value
azure_rm_keyvaultsecret_info:
vault_uri: "{{ keyvaulturi }}"
name: "{{ secret_name }}"
register: kvSecret
- name: set secret fact
set_fact: secretValue="{{ kvSecret['secrets'][0]['secret'] }}"
- name: Output key vault secret
debug:
msg="{{ secretValue }}"
Substitua <vaultName>
pelo valor apropriado.
Para saber mais sobre azcollection
o , consulte Coleção Ansible para Azure.
Execute o get-secret-value.yml
playbook.
ansible-playbook get-secret-value.yml
TASK [Output key vault secret] *************************************************
ok: [localhost] => {
"msg": "<plainTextPassword>"
}
Confirme se a saída substituída <plainTextPassword>
é o valor de texto sem formatação do segredo criado anteriormente no cofre de chaves do Azure.
Esta seção lista todo o manual de exemplo do Ansible para configurar uma VM do Windows do Azure usando um segredo do cofre de chaves.
---
- name: Create Azure VM
hosts: localhost
connection: local
gather_facts: false
collections:
- azure.azcollection
vars:
vault_uri: <key_vault_uri>
secret_name: <key_vault_secret_name>
tasks:
- name: Get latest version of a secret
azure_rm_keyvaultsecret_info:
vault_uri: "{{ vault_uri }}"
name: "{{ secret_name }}"
register: kvSecret
- name: Set secret fact
set_fact: secret_value="{{ kvSecret['secrets'][0]['secret'] }}"
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: vNet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: subnet
address_prefix: "10.0.1.0/24"
virtual_network: vNet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: pip
register: output_ip_address
- name: Output public IP
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}"
- name: Create Network Security Group
azure_rm_securitygroup:
resource_group: myResourceGroup
name: networkSecurityGroup
rules:
- name: 'allow_rdp'
protocol: Tcp
destination_port_range: 3389
access: Allow
priority: 1001
direction: Inbound
- name: Create a network interface
azure_rm_networkinterface:
name: nic
resource_group: myResourceGroup
virtual_network: vNet
subnet_name: subnet
security_group: networkSecurityGroup
ip_configurations:
- name: default
public_ip_address_name: pip
primary: True
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: win-vm
vm_size: Standard_DS1_v2
admin_username: azureuser
admin_password: "{{ secret_value }}"
network_interfaces: nic
os_type: Windows
image:
offer: WindowsServer
publisher: MicrosoftWindowsServer
sku: 2019-Datacenter
version: latest
no_log: true
Substitua <key_vault_uri>
e <key_vault_secret_name>
com os valores apropriados.
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: rg
Execute 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:
debug
à register
seção do playbook, os resultados são exibidos quando o comando é concluído.evento
17/03, 23 - 21/03, 23
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agora