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