我正在使用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 上的存储库。
任何帮助将不胜感激。
由于您正在创建 AMI,因此无法在(映像(构建时使用 ansible 来配置它。稍后,当您从创建的映像启动新实例时,IP 和主机名将有所不同。
相反,您应该添加一个云初始化脚本,该脚本将在每次从映像启动新实例时更新配置文件。您可以通过在/var/lib/cloud/scripts/per-instance/
查看云初始化文档中添加脚本来执行此操作
您还可以使用弹性 IP。假设您将使用映像仅启动一个实例,AWS 可以选择弹性 ip,该 ip 基本上是一个静态 ipv4 地址。在首选区域中为您的账户设置一个,然后在预置时将其与您的实例或网络接口关联。 你的nginx配置文件应该看起来像这样
server {
listen 80;
server_name <your_elastic_ip>;
...
}