Я использую марионетку для создания AWS AMI с использованием упаковщика, а затем запускать AMI. Puppet выполняет всю конфигурацию и установку пакетов при выпечке AMI, который включает в себя установку и настройку apache и wsgi. К моменту запуска приложения AMI мое приложение (приложение Flask) уже было загружено и настроено Puppet, а также конфигурационный файл apache по адресу /etc/apache2/sites-available/xxxx.conf. Я использую шаблон кукольного настроить файл конфигурации Apache и как таковой он является шаблоном Ruby (xxxx.conf.erb), файл шаблона конфигурации Apache выглядит следующим образом:Конфигурационный файл Puppet apache на ubuntu ec2
<VirtualHost *:<%= @port -%>>
ServerName <%= @servername %>
ServerAdmin [email protected] 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 (using facter) и порт = 80 Когда я запускаю AMI, и я получаю доступ к общедоступному IP-адресу сервера экземпляра ec2, он берет меня на веб-страницу ubuntu по умолчанию вместо моего веб-фляга. мне придется SSH на моем сервере и изменить файл конфигурации Apache на /etc/apache2/sites-available/xxxx.conf стать:
<VirtualHost *:<%= @port -%>>
ServerName 52.91.143.90
ServerAdmin [email protected]
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>
Это означает, что я должен вручную ввести в публичный IP-адрес ec2instance, чтобы отобразить мою веб-страницу Flask, когда доступ к публичному адресу Ip осуществляется в браузере. Это, конечно, побеждает уровень автоматизации, которого я пытаюсь достичь. Публичный IP-адрес становится доступным только после запуска AMI, есть ли способ перенастроить конфигурационный файл apache, чтобы он автоматически перешел в мое веб-приложение вместо стандартной веб-страницы ubuntu? без меня SSH на сервер и вручную изменить его после того, как он будет запущен
спасибо, я даю этот снимок – Hamza
привет @ Vorsprung я устал, что, назначив переменную ** servername ** = $ :: ec2_public_ipv4. Однако после запуска AMI публичный IP-адрес экземпляра ec2 в AWS отличается от того, который был назначен марионеткой в файле конфигурации apache, и по мере того, как он по-прежнему показывает веб-страницу ubuntu по умолчанию при доступе к публичному IP-адресу. – Hamza
Возможно, я не понимаю, как вы это делаете. Вы используете марионетку во время «упаковщика», чтобы сделать AMI? В этом случае факт, конечно, будет неправильным. Этот факт необходимо использовать для создания шаблона после появления экземпляра. – Vorsprung