terraform重试本地执行程序,以防失败

时间:2019-04-04 19:36:35

标签: terraform

在第一次尝试失败的情况下,Terraform重试local-exec。 示例在这里,我尝试使用az vm run-command在Azure Linux VM上安装python。我没有对VM的ssh访问权限,因此我正在使用az cli在https上使用Azure API调用。由于网络问题,有时下载软件包或二进制文件失败,需要重新运行。使用terraform时,如果出现此类问题,它将失败。在ansible中,我们可以选择重试,但是我无法找到terraform的解决方案
支持重试的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 :(得分:0)

Ansible和Terraform做了两个非常不同的事情。

  • Terraform是一个基础结构供应系统。
  • Ansible是一个软件配置系统。

理想情况下,您将同时使用。使用Terraforms local-exec运行Ansible剧本。因此,基础设施和软件最终都处于您想要的状态。 Right tool right job