-1

我有一个 CloudFormation 模板,它将OpenVPN添加到现有 VPC 并需要弹性 IP 分配 ID 作为参数。它还将来自同一弹性 IP 的公共 IP 地址添加到 OpenVPN 实例配置(在它的UserData部分中)。

我目前已将其实现为 2 个参数(使用虚构的默认值),

Parameters:

  ElasticIpAddress:
    Description: >-
      IP Address of an Elastic IP.
    Type: String
    Default: 53.176.52.215

  ElasticIpAllocationId:
    Description: >-
      Allocation id of the same Elastic IP to associate OpenVPN server with.
    Type: String
    Default: eipalloc-f2013ba5

  ...

注意- 这两者都必须指向 AWS 中的同一个 ElasticIP!

ElasticIpAddress创建OpenVPN实例时使用的参数AWS::EC2::Instance如下:-

openVPN:
  Type: 'AWS::EC2::Instance'
  Properties:
    Tags:
      - Key: Name
        Value: openVPN server
    UserData:
      Fn::Base64: !Sub |
        public_hostname=${ElasticIpAddress}
        admin_user=${OpenVPNASAdminUser}
    ...

...和ElasticIpAllocationId​​get used in a AWS::EC2::EIPAssociationsection ...

IPAssoc:
  Type: 'AWS::EC2::EIPAssociation'
  Properties:
    AllocationId: !Ref ElasticIpAllocationId
    InstanceId: !Ref openVPN
  DependsOn: openVPN

拥有相同弹性 IP 的(a)分配 ID和 (b) IP 地址似乎非常多余!

我的主要问题是-是否存在以下功能:-

  1. 从弹性 IP 分配 ID 中检索 IP 地址
  2. 从弹性 IP 的 IP 地址中检索分配 ID?

我的直觉是,我将不得不UserData:在实例部分中使用 CLI 并使用 AWS CLI 命令 - 不确定与 OpenVPN AMI 一起工作的效果如何,因为它目前只需要 OpenVPN 特定配置。

任何建议表示赞赏!

4

1 回答 1

0

实现您想要的正确方法是创建一个 R53 记录,例如指向您的弹性 IP 地址(A 记录)的 vpn.mydomain.com。然后,您可以在 userdata 中而不是 ${ElasticIpAddress} 中分配此记录,并消除对 IP 地址参数的需要。

public_hostname=vpn.mydomain.com

只要您的 EIP 在 R53 记录上更新,您就应该没问题。如果您需要更改 EIP 地址,这也很有帮助,您仍然可以通过 Route53 控制已部署实例上的记录。

Route53 入门

于 2017-12-17T12:29:37.617 回答