1

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

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

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

aws_instance.ldap_instance (local-exec): Executing: /bin/sh -c "alias sshopenldap='ssh -i ~/.ssh/mykey.pem ubuntu@ec2-IP.compute-1.amazonaws.com'"

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

有解决方法吗?

我正在运行 terraform 一个 MacOS X Mountain Lion 的终端。

4

2 回答 2

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

不知道报价转义将如何...

于 2015-09-11T07:11:46.817 回答
1

确实不可能在脚本文件中为当前 shell 设置别名,这是您正在尝试做的。摆脱这种情况的唯一方法是运行脚本,而是获取它。所以:

source somefile.sh

而不是执行它应该可以解决问题。

于 2015-09-03T07:57:23.383 回答