Можно ли перезаписать или создать новую версию секрета с помощью ansible в Azure? - PullRequest
2 голосов
/ 07 мая 2019

Мне нужно раскрыть свои секреты в хранилище ключей Azure через ansible.

Если секрет является новым (то есть он не существовал раньше), он работает отлично, секрет создан правильно.

Проблема возникла, когда мне нужно обновить секрет, он никогда не перезаписывается,Я попытался удалить его и создать его снова, но он также не работает, поскольку он выполняет мягкое удаление, поэтому его можно создать снова с тем же именем.

Вот что я пробовал до сих пор:

Секретное создание (работает нормально в первый раз, но не перезаписывает его)

 - name: "Create endpoint secret."
    azure_rm_keyvaultsecret:
      secret_name: mysecret
      secret_value: "desiredvalue"
      keyvault_uri: "https://{{ AZURE_KV_NAME }}.vault.azure.net/"
      tags:
          environment: "{{ ENV }}"
          role: "endpointsecret"

Вот как я сначала пытаюсь удалить его, а затем снова создать его

  - name: "Delete endpoint secret."
    azure_rm_keyvaultsecret:
      secret_name: mysecret
      keyvault_uri: "https://{{ AZURE_KV_NAME }}.vault.azure.net/"
      state: "absent"

  - name: "Create endpoint secret."
        azure_rm_keyvaultsecret:
          secret_name: mysecret
          secret_value: "desiredvalue"
          keyvault_uri: "https://{{ AZURE_KV_NAME }}.vault.azure.net/"
          tags:
              environment: "{{ ENV }}"
              role: "endpointsecret"

При попытке решить эту ошибку:

Secret mysecret is currently being deleted and cannot be re-created; retry later

** Секретное создание с состоянием: присутствует (новая версия также не создается) **

 - name: "Create endpoint secret."
    azure_rm_keyvaultsecret:
      secret_name: mysecret
      secret_value: "desiredvalue"
      keyvault_uri: "https://{{ AZURE_KV_NAME }}.vault.azure.net/"
      state: "present"
      tags:
          environment: "{{ ENV }}"
          role: "endpointsecret"

Любая идея, как перезаписать (создать новую версию) секрет или хотя бы выполнить полное удаление?

1 Ответ

0 голосов
/ 08 мая 2019

Я не нахожу другого способа, кроме как развернуть его через ARM

- name: "Create ingestion keyvault secrets."
  azure_rm_deployment:
    state: present
    resource_group_name: "{{ AZURE_RG_NAME }}"
    location: "{{ AZURE_RG_LOCATION }}"
    template:
      $schema: "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#"
      contentVersion: "1.0.0.0"
      parameters:
      variables:
      resources:
        - apiVersion: "2018-02-14"
          type: "Microsoft.KeyVault/vaults/secrets"
          name: "{{AZURE_KV_NAME}}/{{item.name}}"
          properties:
            value: "{{item.secret}}"
            contentType: "string"
  loop: "{{ SECRETLIST }}"
  register: publish_secrets
  async: 300  # Maximum runtime in seconds.
  poll: 0  # Fire and continue (never poll)

- name: Wait for the secret deployment task to finish
  async_status:
    jid: "{{ publish_secrets_item.ansible_job_id }}"
  loop: "{{publish_secrets.results}}"
  loop_control:
    loop_var: "publish_secrets_item"
  register: jobs_publish_secrets
  until: jobs_publish_secrets.finished
  retries: 5
  delay: 2

А затем в другом файле SECRETLIST объявлен как переменная:

SECRETLIST :
  - name: mysecret
    secret: "secretvalue"
  - name: othersecret
    secret: "secretvalue2"

Надеюсь, это поможет любому, ктопохожая проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...