Terraform`local-exec`设置本地别名

时间:2015-09-01 10:26:13

标签: shell alias terraform

我正在尝试设置一个别名,以便在中创建AWS实例时快速ssh到新创建的主机中。我这样做是通过运行

$new_name=time().".".$extension;// new name with current timestamp
move_uploaded_file($_FILES["file"]["tmp_name"],"docmument_upload/" .  $new_name);

当我看到此执行的输出时:

# Handy alias to quickly ssh into newly created host
provisioner "local-exec" {
    command = "alias sshopenldap='ssh -i ${var.key_path} ubuntu@${aws_instance.ldap_instance.public_dns}'"
}

似乎没问题,但是没有设置别名。这可能是命令运行的方式,它将它包装在一个新的范围而不是当前的shell之一?如果我将命令复制粘贴到控制台,则别名设置正确。

有解决方法吗?

我在MacOS X Mountain Lion的终端上运行terraform。

2 个答案:

答案 0 :(得分:2)

您可以尝试以下方式:

# Handy alias to quickly ssh into newly created host
provisioner "local-exec" {
  command = "echo \"alias sshopenldap='ssh -i ${var.key_path} ubuntu@${aws_instance.ldap_instance.public_dns}'\" > script.sh && source script.sh && rm -rf source.sh"
}

不确定报价如何逃脱...

答案 1 :(得分:1)

确实无法在脚本文件中为当前shell设置别名,这正是您尝试执行的操作。摆脱这种情况的唯一方法是运行脚本,而是来源它。所以:

source somefile.sh

而不是执行它应该做的伎俩。