terraform повторить попытку local-exec не удалось - PullRequest
0 голосов
/ 04 апреля 2019

Terraform, чтобы повторить local-exec в случае неудачи с первой попытки. Пример Здесь я пытаюсь установить python на виртуальной машине Azure Linux с помощью команды запуска z vm. У меня нет доступа по виртуальной машине через ssh, поэтому я использую вызов API Azure по https с помощью az cli. Из-за проблем с сетью иногда загружаются пакеты или происходит сбой двоичного файла, и необходимо выполнить повторный запуск С терраформой это не получается в случае возникновения таких проблем. В ansible у нас есть возможность повторить попытку, но я не могу найти такое решение для terraform
Ansible код, который поддерживает повтор

Ansible код:


- hosts: 127.0.0.1
connection: local
tasks:
name: Install App
shell: |
  yum install myapp
register: task_result
until: task_result.rc == 0
retries: 2
delay: 5
ignore_errors: yes
Terraform code
enter code here
#Install python27-python-pip 
resource "null_resource" "prerequisites" {
  depends_on = [ "null_resource.zipfile" ]
    provisioner "local-exec" {
      command = "az vm run-command invoke -g 
'${azurerm_virtual_machine.myserver.resource_group_name}' -n 
'${azurerm_virtual_machine.myserver.resource_group_name}' -- 
command-id RunShellScript --scripts 'yum -y install python27-python- 
pip && scl enable python27 bash >> /tmp/install.log'"
on_failure = "fail"
}
}

1 Ответ

0 голосов
/ 05 апреля 2019

Ansible и Terraform делают две совершенно разные вещи.

  • Terraform - система обеспечения инфраструктуры.
  • Ansible - система конфигурации программного обеспечения.

В идеале вы бы использовали ОБА. Используйте Terraforms local-exec для запуска книги воспроизведения Ansible. Таким образом, как инфраструктура, так и программное обеспечение находятся в желаемом вами состоянии. Right tool right job.

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