2016-01-28 8 views
-1

Я использую марионетку для создания 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 на сервер и вручную изменить его после того, как он будет запущен

ответ

0

Я нашел решение моей проблемы. Я создавал новый файл конфигурации apache с марионеткой во время пакера, точка, в которой публичный IP-адрес, который будет назначен экземпляру ec2, недоступен. Итак, вместо создания нового файла конфигурации apache я изменил значение по умолчанию на /etc/apache2/sites-available/000-default.conf. Я оставил переменную servername = $ :: fqdn. Теперь, когда я запускаю AMI и посещаю назначенный публичный IP-адрес экземпляра ec2, он переходит к моему флеш-приложению, а не к веб-странице ubuntu по умолчанию.

1

Существует факт ec2_public_ipv4, использовать это, чтобы установить адрес

+0

спасибо, я даю этот снимок – Hamza

+0

привет @ Vorsprung я устал, что, назначив переменную ** servername ** = $ :: ec2_public_ipv4. Однако после запуска AMI публичный IP-адрес экземпляра ec2 в AWS отличается от того, который был назначен марионеткой в ​​файле конфигурации apache, и по мере того, как он по-прежнему показывает веб-страницу ubuntu по умолчанию при доступе к публичному IP-адресу. – Hamza

+0

Возможно, я не понимаю, как вы это делаете. Вы используете марионетку во время «упаковщика», чтобы сделать AMI? В этом случае факт, конечно, будет неправильным. Этот факт необходимо использовать для создания шаблона после появления экземпляра. – Vorsprung

 Смежные вопросы

  • Нет связанных вопросов^_^