apache2
Роль weareinteractive.apache2 для Ansible
weareinteractive.apache2
— это роль для Ansible, которая:
- устанавливает apache2
- настраивает apache2
- включает/выключает конфигурации
- создает сайты
- включает/выключает сайты
- включает/выключает модули
- опционально удаляет хост по умолчанию
- добавляет правила
- настраивает сервис
Примечание:
Поскольку Ansible Galaxy теперь поддерживает организации, эта роль была перенесена с
franklinkim.apache2
наweareinteractive.apache2
!
Установка
С помощью ansible-galaxy
:
$ ansible-galaxy install weareinteractive.apache2
С помощью requirements.yml
:
- src: weareinteractive.apache2
С помощью git
:
$ git clone https://github.com/weareinteractive/ansible-apache2.git weareinteractive.apache2
Зависимости
- Ansible >= 2.4
Переменные
Вот список всех переменных по умолчанию для этой роли, которые также доступны в defaults/main.yml
.
---
# apache2_packages:
# - apache2
# - apache2-mpm-prefork
# apache2_module:
# - { id: auth, state: absent }
# - { id: rewrite, state: present }
# apache2_confs:
# - { id: security, state: absent }
# - { name: mime, state: present }
# - id: my_config
# state: present
# template: path/to/template.j2
# apache2_sites:
# - id: mysite (обязательно)
# name: mysite.local (обязательно)
# ip: '*'
# port: 80
# state: present
# add_webroot: no
# template: path/to/template.j2
# rules: []
# aliases: []
# redirects: []
# ssl:
# port: 443
# key_name: mykey
# cert_name: mycert
# chain_name: mychain
# auth:
# name: mysite
# file: mysite
# append: ''
#
# пакеты (версии)
apache2_packages:
- apache2
# порты для прослушивания
apache2_ports: [80]
# порты ssl для прослушивания
apache2_ssl_ports: [443]
# адреса для прослушивания (только 2.2)
apache2_listen_addresses: ['*']
# включенные/выключенные модули
apache2_modules: []
# включенные/выключенные конфигурации
apache2_confs: []
# включенные/выключенные сайты
apache2_sites: []
# где находятся корневые директории документов (по умолчанию /var/www означает /var/www/<SiteId>/htdocs)
apache2_sites_basedir: /var/www
# файл шаблона сайта по умолчанию
apache2_sites_template: etc/apache2/sites-available/site.j2
# удалить хост по умолчанию
apache2_remove_default: no
# запуск при загрузке
apache2_service_enabled: yes
# текущее состояние: started, stopped
apache2_service_state: started
# установить одно из: Full | OS | Minimal | Minor | Major | Prod
apache2_server_tokens: Prod
# установить одно из: On | Off | EMail
apache2_server_signiture: 'Off'
# установить одно из: On | Off | extended
apache2_trace_enable: 'Off'
# путь к сертификатам
apache2_certs_path: /etc/ssl/certs
# путь к ключам
apache2_keys_path: /etc/ssl/private
Обработчики
Это обработчики, которые определены в handlers/main.yml
.
---
- name: проверить и перезапустить apache2
command: apache2ctl configtest
notify: перезапустить apache2
- name: проверить и перезагрузить apache2
command: apache2ctl configtest
notify: перезагрузить apache2
- name: перезапустить apache2
service: name=apache2 state=restarted
when: apache2_service_state != 'stopped'
- name: перезагрузить apache2
service: name=apache2 state=reloaded
when: apache2_service_state != 'stopped'
Правила
Некоторые фрагменты конфигурации, полученные из HTML 5 Boilerplate, будут скопированы в
/etc/apache2/rules
, которые затем можно использовать в ваших конфигурациях vhost (см. использование ниже).
- сжатие
- преобразование содержимого
- cors
- cors_images
- cors_timing
- cors_web_fonts
- etag
- истечение срока действия
- конкатенация файлов
- кэширование на основе имени файла
- ie_cookies
- ie_edge
- mimes
- безопасность доступа к файлам
- безопасность хостов
- безопасность mime
- безопасность подписи
- безопасность технологий
- ssl
- utf8
Использование
Вот пример playbook:
---
# этот пример использует связанные роли:
#
# - weareinteractive.apt (https://github.com/weareinteractive/ansible-apt)
# - weareinteractive.openssl (https://github.com/weareinteractive/ansible-openssl)
# - weareinteractive.htpasswd (https://github.com/weareinteractive/ansible-htpasswd)
- hosts: all
become: yes
roles:
- weareinteractive.apt
- weareinteractive.openssl
- weareinteractive.htpasswd
- weareinteractive.apache2
vars:
htpasswd:
- name: foobar
users:
- { name: foobar, password: foobar }
apache2_modules:
- { id: ssl, state: present }
- { id: mime, state: present }
- { id: headers, state: present }
- { id: rewrite, state: present }
apache2_remove_default: yes
openssl_generate_csr: yes
openssl_self_signed:
- name: 'foobar.local'
country: 'DE'
state: 'Бавария'
city: 'Мюнхен'
organization: 'Foo Bar'
unit: 'Подразделение Foo Bar'
email: '[email protected]'
apache2_sites:
- id: foobar
state: present
name: foobar.local
rules:
- mimes
- expires
- сжатие
add_webroot: yes
auth:
name: Foo Bar
file: foobar
ssl:
key_name: foobar.local
cert_name: foobar.local
Тестирование
$ git clone https://github.com/weareinteractive/ansible-apache2.git
$ cd ansible-apache2
$ make test
Участие
Вместо формального стиля программирования, заботьтесь о поддержании существующего стиля кода. Добавляйте модульные тесты и примеры для любой новой или измененной функциональности.
- Создайте свой форк
- Создайте свою ветку функции (
git checkout -b my-new-feature
) - Зафиксируйте ваши изменения (
git commit -am 'Добавить новую функцию'
) - Отправьте на ветку (
git push origin my-new-feature
) - Создайте новый Pull Request
Примечание: Чтобы обновить файл README.md
, пожалуйста, установите и запустите ansible-role
:
$ gem install ansible-role
$ ansible-role docgen
Лицензия
Copyright (c) We Are Interactive по лицензии MIT.
ansible-galaxy install weareinteractive/ansible-apache2