Можно ли отправлять файлы на общий ресурс Azure с помощью terraform?

Я использую terraform для настройки учетной записи хранения, контейнеров, общих ресурсов.

Возник вопрос - могу ли я загрузить файл в файловую папку учетной записи хранения Azure с помощью terraform? Я не могу найти соответствующий ресурс.

ИЗМЕНИТЬ 1

Возникает идея использовать null_resource. Интересно, как это сочетается с преимуществами использования terraform, которые, на мой взгляд, заключаются в следующем:

  1. Его также можно рассматривать как документацию по вашей инфраструктуре.
  2. Он может сказать вам, что он собирается сделать, прежде чем это сделать.
  3. Вариант (2) - дает возможность автоматически проверять план и применять политики.
  4. Его состояние можно использовать для ответа на вопросы аудита о том, что именно подготовил конвейер выпуска.
  5. У него очень простой декларативный язык.

Другие потенциальные преимущества могут заключаться в обеспечении желаемого состояния, хотя это скорее потенциально и в будущем, чем в настоящее время. Действительно, попробуйте удалить ресурс вне terraform. Теоретически и в будущем он мог бы распознать это и воссоздать, но сегодня он просто терпит неудачу. Но потенциал есть.

Все эти преимущества достаточны, чтобы оправдать его использование, хотя иногда мне хочется биться головой об стену, пытаясь что-то с этим сделать.

Теперь, как все эти преимущества вписываются в выполнение пользовательского сценария в null_resource? Разумеется, проверка плана не поможет с универсальным сценарием внутри ресурса. Интересно, как это сочетается с другими преимуществами?


person mark    schedule 06.06.2020    source источник
comment
Конечно, первое, что приходит в голову, это использование null_resource   -  person Helder Sepulveda    schedule 07.06.2020
comment
Я никогда этим не пользовался. В чем преимущество использования null_resource перед запуском какого-нибудь скрипта после завершения терраформирования?   -  person mark    schedule 08.06.2020
comment
позвольте мне ответить на ваш вопрос вопросом ... В чем преимущество использования terraform перед запуском некоторых скриптов   -  person Helder Sepulveda    schedule 08.06.2020
comment
@HelderSepulveda - см. ИЗМЕНИТЬ 1   -  person mark    schedule 09.06.2020
comment
Это лучший вопрос, я голосую за его повторное открытие ... не могли бы вы посмотреть Storage Resources, этот выглядит как хороший кандидат: terraform.io/docs/providers/azurerm/r/storage_blob.html   -  person Helder Sepulveda    schedule 09.06.2020
comment
Я не уверен, что вы имеете в виду: проверка плана не поможет с универсальным сценарием внутри ресурса. ... если вы правильно закодируете свой null_resource, план покажет ценную информацию о том, какие файлы были новыми, изменены или удалены   -  person Helder Sepulveda    schedule 09.06.2020
comment
По поводу вашего последнего комментария - это то, чего мне не хватает. Мне нужно понять, как это правильно писать. Пример был бы очень полезен. Это не обязательно должно касаться Azure, но если он продемонстрирует правильное использование null_resource, это будет полезно.   -  person mark    schedule 10.06.2020


Ответы (1)


Не уверен, что понял все ваши требования. Но, конечно, можно загружать файлы в Azure Share с помощью terraform.

Здесь есть аналогичный вопрос о копировании локальных файлов в общую папку Azure для справки. local-exec Provider позволяет вам вызывать локальные исполняемые сценарии PowerShell после ресурс создан. Ресурс null_resource реализует стандартный жизненный цикл ресурса, но не предпринимает никаких дальнейших действий.

Образец,

 resource "azurerm_storage_share" "example" {
      name                 = "sharename"
      storage_account_name = azurerm_storage_account.example.name
      quota                = 50
    }

    resource "null_resource" "uploadfile" {

      provisioner "local-exec" {


      command = <<-EOT
      $storageAcct = Get-AzStorageAccount -ResourceGroupName "${azurerm_resource_group.example.name}" -Name "${azurerm_storage_account.example.name}"
       Set-AzStorageFileContent `
       -Context $storageAcct.Context `
       -ShareName "${azurerm_storage_share.example.name}" `
       -Source "C:\Users\xxx\terraform\test.txt" `
       -Path "test.txt"

      EOT

      interpreter = ["PowerShell", "-Command"]
      }

}
person Nancy Xiong    schedule 30.06.2020
comment
Каковы подводные камни этого подхода? - person mark; 30.06.2020
comment
null_resource обрабатываются как обычные ресурсы, но он не предоставляет никаких атрибутов или выходных данных как обычные ресурсы. Если вам нужен вывод запроса внешней программы, вы можете получать данные с использованием внешних данных источник - person Nancy Xiong; 01.07.2020