nginx
Роль Ansible для Nginx Passenger
Эта роль установит сервер Nginx вместе с Phusion Passenger для обслуживания приложений Node, Python или Ruby. Она также может настроить сайт для указанного домена.
Требования
Эта роль использует ACL файловой системы Linux и группу под названием "web-admin" для предоставления доступа к каталогам конфигурации. Вы можете настроить эти шаги вручную или установить роль bbatsche.Base
.
Переменные роли
env_name
— Указывает, находится ли сервер в "разработке", "производстве" или другом окружении. По умолчанию "dev".http_root
— Папка, в которой будут созданы каталоги сайта. По умолчанию "/srv/http".public_directory
— Публично видимый каталог сайта, например "public" или "htdocs". По умолчанию "public".max_upload_size
— Максимальный размер загружаемого файла в МБ. По умолчанию "10".domain
— Имя домена для создаваемого сайта. По умолчанию не задано.content_security_policy
— Политика безопасности контента для добавления в домен, формируется как словарь списков или булевых значений. По умолчанию: см. defaults/main.yml.nginx_configs
— Дополнительные конфигурационные файлы для добавления в конец блокаserver
домена. Эти файлы должны копироваться в/etc/nginx/conf.d
. Добавьте конфигурации для вашего конкретного типа серверного приложения. По умолчанию пустой массив.passenger_app
— Является ли текущий домен приложением Passenger (т.е. Node, Ruby, Python)? Полезно, если приложение нужно перезапустить после обновления конфигураций. По умолчанию нет.copy_index
— Копировать файл index.html в сайт. По умолчанию нет.use_ssl
— Обслуживать ли контент через SSL (на самом деле, TLS). По умолчанию нет.use_letsencrypt
— Использовать ли Let's Encrypt для генерации сертификата для сайта. В противном случае будет использован самоподписанный сертификат. По умолчанию нет.privatekey_bits
— Количество бит для генерации самоподписанного закрытого ключа. По умолчанию 4096.dhparam_bits
— Количество бит для генерации статического сертификата DH. По умолчанию 2048. Значения выше могут занять много времени.cert_valid_days
— Количество дней, на которые будет действителен самоподписанный сертификат. По умолчанию 3650 (~1 год).email_address
— Адрес электронной почты для самоподписанного сертификата и Let's Encrypt. По умолчанию не задано.country_name
— Двухбуквенное сокращение страны для создания самоподписанного сертификата. По умолчанию не задано.state_name
— Имя штата или провинции для создания самоподписанного сертификата. По умолчанию не задано.locality_name
— Название города или местности для создания самоподписанного сертификата. По умолчанию не задано.org_name
— Название организации для создания самоподписанного сертификата. По умолчанию не задано.h5bp_commit
— Git-хеш или номер версии для загрузки файлов из HTML5 Boilerplate Server Configs. По умолчанию "3.1.0".setuptools_version
— Версияsetuptools
, которую нужно установить через Pip. По умолчанию 40.6.2.
SSL и Let's Encrypt
Let's Encrypt требует, чтобы ваш веб-сервер был доступен извне, поэтому не используйте его при создании тестовых сайтов в Vagrant или Docker. Также убедитесь, что ваши DNS корректно настроены перед созданием сертификата. После этого будет выдан полностью поддерживаемый и подписанный сертификат для вашего домена, а также будет создан cron-задача для автоматического продления сертификата. Сервер и сертификат оптимизированы для обеспечения наилучшей безопасности, получив рейтинг "A+" от SSL Labs на октябрь 2017 года.
Пример плейбука
- hosts: servers
roles:
- { role: bbatsche.Nginx, domain: my-test-domain.test }
Лицензия
MIT
Тестирование
Включённый в эту роль набор спецификаций для тестирования каждой задачи по отдельности или в целом. Для выполнения этих тестов вам сначала необходимо установить Vagrant и VirtualBox. Спецификации написаны с использованием Serverspec, поэтому вам потребуется Ruby и Bundler.
Для запуска полного набора спецификаций:
$ gem install bundler
$ bundle install
$ rake
Набор спецификаций будет нацелен на Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04) и Bionic Bever (18.04).
Чтобы увидеть доступные задачи rake (и спецификации):
$ rake -T
Эти спецификации не предназначены для тестирования идемпотентности. Они предназначены для проверки, что заданные задачи выполняют свои ожидаемые шаги. Идемпотентность тестируется независимо через интеграционное тестирование.
Install and configure Nginx and Phusion Passenger along with any number of server blocks (aka vhosts).
ansible-galaxy install bbatsche/Ansible-Nginx-Passenger-Role