Ubuntu ec2 上的 Puppet apache 配置文件



我正在使用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>

我已经设置了变量服务器名称 = $::主机名(使用 facter)和端口 = 80当我启动 AMI 并访问 ec2 实例服务器的公有 IP 地址时,它会将我带到默认的 ubuntu 网页,而不是我的 Web Flask 应用程序。我将不得不 ssh 进入我的服务器并在/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 的公有 IP 地址,以便在浏览器上访问公有 IP 地址时显示我的 Flask 网页。这当然违背了我试图达到的自动化水平。公共 IP 地址仅在我启动 AMI 后才可用,有没有办法重新配置我的 apache 配置文件以使其自动转到我的 Web 应用程序而不是默认的 ubuntu 网页?无需我通过 SSH 连接到服务器并在启动后手动更改它

有一个

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

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

最新更新