首页 文章

使用packer和ansible时获取AWS实例的IP地址[关闭]

提问于
浏览
0

我正在使用packer和Ansible在AWS上构建AMI映像 . 我的最终目标是拥有一个AMI映像,这样当它构建到EC2实例中时,它就会运行我的Web应用程序 . 为了达到我的最终目标,我需要在我的AMI中配置Nginx服务器 . 我的挑战是我不知道如何获取EC2实例的IP地址并使用它来配置Nginx服务器 . 这是我目前的Nginx文件配置:

server {
    listen 80;
    server_name {{ ansible_default_ipv4.address }};

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/ubuntu/Yummy-Recipes/Yummy-Recipes-Ch3/yummy-recipes.sock;
    }
}

server_name 应该保存正在运行的EC2实例的值 . 如果您想了解有关我的代码的更多信息,请随时访问我在GitHub上的repository .

任何帮助将受到高度赞赏 .

2 回答

  • 2

    由于您正在创建AMI,因此无法在(图像)构建时使用ansible来配置它 . 稍后,当您从创建的映像启动新实例时,IP和主机名将不同 .

    相反,您应该添加一个cloud-init脚本,每当从图像启动一个新实例时,它将更新配置文件 . 您可以通过在 /var/lib/cloud/scripts/per-instance/ 中添加脚本来执行此操作,请参阅cloud-init documentation

  • 0

    你也可以使用弹性ip . 假设您将使用您的图像仅旋转一个实例,AWS可以选择弹性IP,它基本上是一个静态ipv4地址 . Setup一个用于您首选区域中的帐户,然后在配置时将其与您的实例或网络接口相关联 . 您的nginx配置文件应如下所示

    server {
    listen 80;
    server_name <your_elastic_ip>;
    ...
    }
    

相关问题