【问题标题】:CloudFormation ElasticIP ParameterCloudFormation ElasticIP 参数
【发布时间】:2018-05-30 23:40:58
【问题描述】:

我有一个 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 参数用于在AWS::EC2::Instance 部分中创建 OpenVPN 实例,如下所示:-

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

... 和 ElasticIpAllocationIdAWS::EC2::EIPAssociation 部分中使用...

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 的配置.

感谢任何建议!

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation openvpn elastic-ip


    【解决方案1】:

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

    public_hostname=vpn.mydomain.com
    

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

    Getting Started with Route53

    【讨论】:

    • 我的 VPC 模板创建一个弹性 IP,我的 OpenVPN 模板通过 2 个参数分配它。你是说更新我的 VPC 模板,以便我将 Route53 托管区域作为参数和记录(默认为 vpn),然后创建将 ElasticIP 链接到 DNS 的记录集(例如,通过 AWS::Route53::RecordSet)。仍然假设我的 OpenVPN 模板仍然必须有 2 个参数,即 (a) FQDN(例如 vpn.mysite.com),它通过 UserData 部分更新 OpenVPN 配置,以及 (b) ElasticIP 分配 ID(开放式 OpenVPN实例将与)相关联?
    • 您的 VPC 模板应创建 VPC + 托管区域,您的 OpenVPN 堆栈应创建实例和 EIP + r53 记录。如果您不喜欢这些参数,请查看嵌套堆栈或输出导出/导入。
    猜你喜欢
    • 1970-01-01
    • 2019-01-06
    • 2019-07-02
    • 1970-01-01
    • 2019-09-30
    • 2021-06-10
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多