Öğretici: sanal makine gizli dizilerini bir şekilde depolamak için Azure Key Vault kullanın
Bu hızlı başlangıçta, Azure Anahtar Kasası 'nda anormal olacak şekilde gizli dizi oluşturup buradan bir parola alacaksınız.
Önemli
Bu makaledeki örnek PlayBook 'ları çalıştırmak için anerişilebilir 2,9 (veya üzeri) gereklidir.
Bu makalede şunları öğreneceksiniz:
- Azure Anahtar Kasası örneği oluşturma
- Azure Anahtar Kasası 'nda gizli bir mağaza oluşturma
- Azure Anahtar Kasası 'ndan anormal olan gizli dizileri al
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure hizmet sorumlusu: bir hizmet sorumlusu oluşturunve şu değerleri aklınızda yapın: AppID, DisplayName, Passwordve Tenant.
Daha erişilebilir: aşağıdaki seçeneklerden birini yapın:
- Linux sanal makinesine, yükleyipyapılandırma
- Azure Cloud Shell'i yapılandırın
Azure Anahtar Kasası oluşturma
Anormal olarak, kaynaklarınızı dağıtmak için bir kaynak grubu gerekir.
create_kv.ymlKaynak grubu oluşturmak için aşağıdaki görevi ekleyin adlı bir Anerişilebilir PlayBook oluşturun:--- - name: Create Azure key vault hosts: localhost connection: local tasks: - name: Create resource group azure_rm_resourcegroup: name: ansible-kv-test-rg location: eastusKiracı KIMLIĞI, hizmet sorumlusu nesne KIMLIĞI ve kasa adı için gerekli değişkenleri tanımlayın.
--- vars: tenant_id: <tenantId> object_id: <servicePrincipalObjectId> vault_name: <vaultName><tenantId>,<servicePrincipalObjectId>Ve<vaultName>değerlerini uygun değerlerle değiştirin. ObjectID, anahtar kasasındaki gizli dizi erişimine izin vermek için kullanılır.anahtar noktası:
- Azure Anahtar Kasası adları genel olarak evrensel olarak benzersiz olmalıdır. Anahtar Kasası ve içindeki anahtarlar/gizli diziler URI aracılığıyla erişilir
https://{vault-name}.vault.azure.net.
- Azure Anahtar Kasası adları genel olarak evrensel olarak benzersiz olmalıdır. Anahtar Kasası ve içindeki anahtarlar/gizli diziler URI aracılığıyla erişilir
Görevi ekleyerek Azure Anahtar Kasası örneğini yapılandırın
create_kv.yml.--- - 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 - deletecreate_kv.ymlPlayBook 'u çalıştırın.ansible-playbook create_kv.ymlPLAY [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
Azure Anahtar Kasası oluşturma PlayBook 'u tamamlamayı doldurun
Bu bölümde, Azure Anahtar Kasası oluşturmak için tüm örnek anormal PlayBook 'lar listelenmektedir.
- 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
Anahtar Kasası 'nda gizli dizi oluşturma
Parolanın oluşturulabilmesi için, Anahtar Kasası URI 'SI gerekir.
Adlı başka bir PlayBook oluşturun
create_kv_secret.yml. Aşağıdaki kodu PlayBook 'a kopyalayın:--- - 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 }}"<vaultName>Anahtar Kasası adınızın adıyla ve<secretValue>gizli anahtar değeriyle değiştirin.Anahtar noktası:
azure_rm_keyvault_infoVeset_factsmodülleri, Anahtar Kasası URI 'sini bir değişken olarak kaydeder. Daha sonra bu değişken,azure_rm_keyvaultsecretparolayı oluşturmak için modüle geçirilir.
create_kv_secret.ymlPlayBook 'u çalıştırın.ansible-playbook create_kv_secret.ymlPLAY [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
Anahtar kasasından gizli dizileri al
Azure Anahtar Kasası 'nda depolanan gizli dizileri, erişilebilir değişkenleri doldurmak için kullanılabilir.
Anahtar Kasası gizli dizilerini almak için adlı yeni bir PlayBook oluşturun
get_kv_secrets.yml.Azure_preview_modules ile anerişilebilir 2,9
--- - 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 }}",,,
<tenantId><vaultName><servicePrincipalApplicationId>Ve<servicePrincipalSecret>değerlerini uygun değerlerle değiştirin.Hakkında daha fazla bilgi edinmek için
azure_preview_modules, bkz.azure_preview_modulessayfası.Azure. azcollection ile anerişilebilir 2,10
--- - 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 }}"<vaultName>Uygun değerle değiştirin.Hakkında daha fazla bilgi edinmek için
azcollectionbkz.azcollection.get-secret-value.ymlPlayBook 'u çalıştırın.ansible-playbook get-secret-value.ymlTASK [Output key vault secret] ************************************************* ok: [localhost] => { "msg": "<plainTextPassword>" }Yukarıdaki çıktıyı,
<plainTextPassword>daha önce Azure Anahtar Kasası 'nda oluşturulan gizli dizinin düz metin değeri olduğunu onaylayın.
Örnek Ansible playbook'unun tamamı
bu bölümde, bir Azure Windows sanal makinesini anahtar kasası parolası kullanarak yapılandırmaya yönelik örnek anormal bir playbook 'un tamamı listelenmektedir.
---
- 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
<key_vault_uri>Ve <key_vault_secret_name> değerlerini uygun değerlerle değiştirin.
Kaynakları temizleme
Aşağıdaki kodu olarak kaydedin
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgAnerişilebilir-PlayBook komutunu kullanarak PlayBook 'u çalıştırın. Yer tutucusunu, silinecek kaynak grubunun adıyla değiştirin. Kaynak grubundaki tüm kaynaklar silinir.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Anahtar noktaları:
registerdebugPlayBook 'un değişkeni ve bölümü nedeniyle, sonuçlar komutun bittiği zaman görüntülenir.