ubuntu ec2 上的 Puppet apache 配置文件

Puppet apache configuration file on ubuntu ec2

我正在使用 puppet 通过加壳程序配置 AWS AMI,然后启动 AMI。 Puppet 在烘焙 AMI 时执行所有配置和包安装,包括安装和配置 apache 和 wsgi。 当我启动 AMI 时,我的应用程序(一个 Flask 应用程序)已经被 Puppet 下载和配置,我的 apache 配置文件位于 /etc/apache2/sites-available/xxxx.conf 。我使用 Puppet 模板来配置 apache 配置文件,因此它是一个 Ruby 模板 (xxxx.conf.erb),apache 配置模板文件如下所示:

    <VirtualHost *:<%= @port -%>>
        ServerName <%= @servername %>

        ServerAdmin admin@example.com   WSGIScriptAlias / /var/www/Porfolio/xxxxx.wsgi

        <Directory /var/www/Porfolio/>    Order allow,deny    Allow from all    </Directory>    Alias /static /var/www/Porfolio/static  <Directory /var/www/Porfolio/static/>     Order allow,deny    Allow from all    </Directory>     

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

我设置了变量 servername = $::hostname(使用 facter)和 port = 80 当我启动 AMI 并访问 ec2 实例服务器的 public IP 地址时,它会将我带到默认的 ubuntu 网页而不是我的 Web Flask 应用程序。 我将不得不通过 ssh 进入我的服务器并更改 apache 配置文件 /etc/apache2/sites-available/xxxx.conf 变为 :

<VirtualHost *:<%= @port -%>>
    ServerName 52.91.143.90

    ServerAdmin admin@example.com
    WSGIScriptAlias / /var/www/Porfolio/culturely.wsgi

    <Directory /var/www/Porfolio/>
      Order allow,deny
      Allow from all
    </Directory>
    Alias /static /var/www/Porfolio/static
    <Directory /var/www/Porfolio/static/>
      Order allow,deny
      Allow from all
    </Directory>     

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这意味着我必须手动输入 ec2instance 的 public IP 地址,以便在浏览器上访问 public IP 地址时显示我的 Flask 网页。这当然会破坏我试图达到的自动化水平。 public IP 地址仅在我启动 AMI 后才可用,有没有一种方法可以重新配置我的 apache 配置文件,使其自动转到我的 Web 应用程序而不是默认的 ubuntu 网页?无需我通过 ssh 进入服务器并在启动后手动更改它

有一个事实ec2_public_ipv4,用这个来设置地址

我找到了解决问题的方法。我在打包时用 puppet 创建了一个新的 apache 配置文件,此时将分配给 ec2 实例的 public IP 地址不可用。 因此,我没有创建新的 apache 配置文件,而是在 /etc/apache2/sites-available/000-default.conf 处修改了默认配置文件。我留下了变量 servername = $::fqdn 。现在,每当我启动 AMI 并访问分配给 ec2 实例的 public IP 地址时,它都会导航到我的 Flask 应用程序,而不是默认的 ubuntu 网页。