terraform重试本地执行失败

terraform重试本地执行失败,terraform,Terraform,Terraform在第一次尝试失败的情况下重试本地执行。 这里的示例我尝试使用azvmrun命令在azurelinuxvm上安装python。我没有ssh访问VM的权限,所以我使用az cli在https上使用Azure API调用。由于网络问题,有时下载包或二进制文件失败,需要重新运行。对于terraform,如果出现此类问题,它将失败。在ansible中,我们可以选择重试,但我无法为terraform找到此类解决方案 支持重试的可解析代码 Ansible代码: Ansible和Terraf

Terraform在第一次尝试失败的情况下重试本地执行。 这里的示例我尝试使用azvmrun命令在azurelinuxvm上安装python。我没有ssh访问VM的权限,所以我使用az cli在https上使用Azure API调用。由于网络问题,有时下载包或二进制文件失败,需要重新运行。对于terraform,如果出现此类问题,它将失败。在ansible中,我们可以选择重试,但我无法为terraform找到此类解决方案
支持重试的可解析代码

Ansible代码:



Ansible和Terraform做两件截然不同的事情

  • Terraform是一个基础设施供应系统
  • Ansible是一个软件配置系统
理想情况下,两种方法都可以使用。使用Terraforms local exec运行Ansible playbook。因此,infra和软件最终都会达到您想要的状态<代码>右刀具右作业

- 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"
}
}