weareinteractive.apache2
Rol de Ansible weareinteractive.apache2
weareinteractive.apache2
es un rol de Ansible que:
- instala apache2
- configura apache2
- habilita/deshabilita configuraciones
- crea sitios
- habilita/deshabilita sitios
- habilita/deshabilita módulos
- opcionalmente elimina el host predeterminado
- añade reglas
- configura el servicio
Nota:
Dado que Ansible Galaxy ahora admite organizaciones, este rol ha sido trasladado de
franklinkim.apache2
aweareinteractive.apache2
!
Instalación
Usando ansible-galaxy
:
$ ansible-galaxy install weareinteractive.apache2
Usando requirements.yml
:
- src: weareinteractive.apache2
Usando git
:
$ git clone https://github.com/weareinteractive/ansible-apache2.git weareinteractive.apache2
Dependencias
- Ansible >= 2.4
Variables
Aquí hay una lista de todas las variables predeterminadas para este rol, que también están disponibles en 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 (requerido)
# name: mysite.local (requerido)
# 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: ''
#
# paquetes (versiones)
apache2_packages:
- apache2
# puertos a los que escuchar
apache2_ports: [80]
# puertos ssl a los que escuchar
apache2_ssl_ports: [443]
# direcciones a las que escuchar (solo 2.2)
apache2_listen_addresses: ['*']
# módulos habilitados/deshabilitados
apache2_modules: []
# configuraciones habilitadas/deshabilitadas
apache2_confs: []
# sitios habilitados/deshabilitados
apache2_sites: []
# dónde tenemos nuestras raíces de documentos (el predeterminado /var/www significa /var/www/<SiteId>/htdocs)
apache2_sites_basedir: /var/www
# archivo de plantilla del sitio predeterminado
apache2_sites_template: etc/apache2/sites-available/site.j2
# eliminar el host predeterminado
apache2_remove_default: no
# iniciar al arranque
apache2_service_enabled: yes
# estado actual: iniciado, detenido
apache2_service_state: started
# establecido en uno de: Full | OS | Minimal | Minor | Major | Prod
apache2_server_tokens: Prod
# establecido en uno de: On | Off | EMail
apache2_server_signiture: 'Off'
# establecido en uno de: On | Off | extended
apache2_trace_enable: 'Off'
# ruta a los certificados
apache2_certs_path: /etc/ssl/certs
# ruta a las claves
apache2_keys_path: /etc/ssl/private
Manejadores
Estos son los manejadores que están definidos en handlers/main.yml
.
---
- name: probar y reiniciar apache2
command: apache2ctl configtest
notify: reiniciar apache2
- name: probar y recargar apache2
command: apache2ctl configtest
notify: recargar apache2
- name: reiniciar apache2
service: name=apache2 state=restarted
when: apache2_service_state != 'stopped'
- name: recargar apache2
service: name=apache2 state=reloaded
when: apache2_service_state != 'stopped'
Reglas
Algunos fragmentos de configuración obtenidos de HTML 5 Boilerplate se copiarán a
/etc/apache2/rules
, que luego se pueden usar dentro de tus configuraciones de vhost (ver uso a continuación).
- compresión
- transformación de contenido
- cors
- cors_imagenes
- cors_timing
- cors_web_fonts
- etag
- expira
- concatenación de archivos
- eliminación de cachés basados en nombres de archivos
- cookies de ie
- edge de ie
- mimes
- acceso a archivos de seguridad
- hosts de seguridad
- mime de seguridad
- firma de seguridad
- tecnología de seguridad
- ssl
- utf8
Uso
Este es un ejemplo de un playbook:
---
# este ejemplo usa roles relacionados:
#
# - 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: 'Bavaria'
city: 'Munich'
organization: 'Foo Bar'
unit: 'Foo Bar Unit'
email: '[email protected]'
apache2_sites:
- id: foobar
state: present
name: foobar.local
rules:
- mimes
- expires
- compression
add_webroot: yes
auth:
name: Foo Bar
file: foobar
ssl:
key_name: foobar.local
cert_name: foobar.local
Pruebas
$ git clone https://github.com/weareinteractive/ansible-apache2.git
$ cd ansible-apache2
$ make test
Contribuciones
En lugar de una guía de estilo formal, cuida de mantener el estilo de codificación existente. Añade pruebas unitarias y ejemplos para cualquier nueva funcionalidad o cambios realizados.
- Haz un fork
- Crea tu rama de características (
git checkout -b mi-nueva-característica
) - Confirma tus cambios (
git commit -am 'Añadir alguna característica'
) - Empuja a la rama (
git push origin mi-nueva-característica
) - Crea una nueva solicitud de extracción
Nota: Para actualizar el archivo README.md
, por favor instala y ejecuta ansible-role
:
$ gem install ansible-role
$ ansible-role docgen
Licencia
Copyright (c) We Are Interactive bajo la licencia MIT.
ansible-galaxy install weareinteractive.apache2