首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图在Terraform启动的实例上设置Windows

试图在Terraform启动的实例上设置Windows
EN

Stack Overflow用户
提问于 2022-06-02 09:02:18
回答 1查看 411关注 0票数 1

我试图在Terraform从AWS帐户启动的Windows实例上设置主机名。我可以通过host.ps1脚本来设置主机名。但是每次我启动一个新实例时,我都必须手动更改host.ps1脚本文件中硬编码的主机名。因此,我想通过我可以在运行时指定的变量或使用“Terraform”来完成这一任务。这是我正在尝试的代码,但没有发生。

我还想稍后在linux平台上做同样的事情,为此我知道我可能需要使用sh文件来完成这个任务,但我不知道确切的过程。

有人能帮我吗?

这是我的代码:

main.tf:

代码语言:javascript
运行
复制
    resource "aws_instance" "terra" {
  
   
    ami = "ami-*****"
    instance_type = "t3.xlarge"
    
    tags = {
      #Name = "terra-test-Pega8.7"
      Name = var.hostname
      Accesibility = "Public"
      
    }
    subnet_id = "subnet-0ba2da79c625a1513"
    security_groups = ["sg-0d433ad46d13b2a0c"]
    key_name = "windows-key"
    
    user_data = file("host.ps1 ${var.hostname}")  # (here i tried only the hostname first which 
                                                    worked but i wanted to put the hostname in a 
                                                    variable later , so i tried this)
  

}
  
  variable "hostname" {
     type = string
     description = "Sets a hostname of the created instance"
     #default = "terratest"
   } 


resource "aws_eip_association" "eip_assoc" {
  instance_id   = aws_instance.terra.id
  allocation_id = aws_eip.elasticip.id
}

resource "aws_eip" "elasticip" {
  vpc = true
}

下面是host.ps1文件:

代码语言:javascript
运行
复制
param([String]$hname)
Rename-Computer -NewName $hname -Force -Restart

下面是之前工作过的代码

代码语言:javascript
运行
复制
Rename-Computer -NewName 'terratest' -Force -Restart

**事实上,我对此非常陌生,所以对这些代码不太了解,所以如果有人能提供指导,这将是非常有帮助的。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-03 08:49:23

您正在尝试将参数传递到正在为您的user_data加载一个无法工作的文件的文件中。如果希望将terraform变量传递到您的user_data中,可以尝试将引导脚本内联到terraform文件中:

代码语言:javascript
运行
复制
resource "aws_instance" "terra" {
  // Your stuff here

  user_data = <<EOF
<powershell>
  Rename-Computer -NewName ${var.hostname} -Force -Restart
</powershell>
EOF
}

一种更简洁的方法是使用template_file:

代码语言:javascript
运行
复制
data "template_file" "user_datapowershell" {
  template = <<EOF
<powershell>
Rename-Computer -NewName ${var.hostname} -Force -Restart
</powershell>
EOF
}

resource "aws_instance" "terra" {
  // Your stuff here

  user_data = data.template_file.user_datapowershell.rendered
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72473532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档