我一直在努力能够在使用 UserData 字段创建时将 EFS 卷安装到 EC2 实例。我正在使用 Pulumi 的 Go 库,我拥有的内容如下所示:
// ... EFS with proper security groups and mountTarget created above ...
dir := configuration.Deployment.Efs.MountPoint
availabilityZone := configuration.Deployment.AvailabilityZone
region := configuration.Deployment.Region
userdata := args.Efs.ID().ToStringOutput().ApplyT(func(id string) (string, error) {
script := `
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
mkdir -p %s
echo "%s.%s.%s.amazonaws.com:/ %s nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0" | tee -a /etc/fstab
mount -a
`
return fmt.Sprintf(script, dir, availabilityZone, id, region, dir), nil
}).(pulumi.StringOutput)
ec2, err := ec2.NewInstance(ctx, fmt.Sprintf("%s_instance", name), &ec2.InstanceArgs{
// ... (other fields) ...
UserData: userdata,
// ... (other fields) ...
})
但是当我使用 Pulumi 创建所有资源时,UserData 脚本根本不运行。我的假设是 EFS ID 在创建 EC2 实例时没有及时解析,但我认为 Pulumi 会自动处理依赖排序,因为 EC2 实例现在依赖于 EFS 卷。我还添加了一个 explicitDependsOn()来查看这是否可能是问题所在,但它没有帮助。
我做错了什么吗?任何帮助将不胜感激,谢谢!
我已经尝试了上述示例的几种变体。我看了这个例子:Pulumi - EFS Id output to EC2 LaunchConfiguration UserData
但也无法让它发挥作用。
芜湖不芜
相关分类