Libro de jugadas de Ansible para instalar y configurar Apache en Ubuntu

Ansible es una herramienta de implementación de aplicaciones y administración de configuración de código abierto. Ayuda a reducir la sobrecarga administrativa al automatizar la implementación de la aplicación y administrar la infraestructura de TI.

Utilizando ansible vamos a instalar el servidor web apache2 en Ubuntu 20.04. Para lo cual necesitamos crear una configuración en sintaxis YAML llamada Libros de jugadas de Ansible.

Normalmente, hay un nodo de control y nodos de host. Ansible se instala en el nodo de control y ejecutará el libro de jugadas para implementarlo en los nodos host. En este laboratorio, lo instalaremos y usaremos en un solo nodo.

Instalación de ansible en Ubuntu

Primero, actualice su sistema. El siguiente comando obtiene el paquete más reciente:

PS sudo actualización apta

Ansible está disponible en el repositorio base de Ubuntu 20.04. Para instalar ansible, ejecute el siguiente comando:

PS sudo apto instalar ansible -y

Luego, verifique la versión ansible usando el comando,

$ ansible –version

Versión Ansible

El archivo de configuración del host se almacena en el archivo / etc / ansible / hosts. Agregue la IP de su servidor localhost al archivo con la ayuda del siguiente comando. Asegúrate de tener un sudo usuario. En nuestro caso, ‘ubuntu’ tiene sudo privilegio. Aquí, he dado mi nombre como ‘myserver’, puedes dar el tuyo. Además, recuerde que el usuario ubuntu es sudo usuario en el sistema.

$ echo “myserver ansible_host = 127.0.0.1 ansible_user = ubuntu” >> / etc / ansible / host

Solo compruébalo usando el comando,

$ ansible myserver -m ping

Debería obtener una respuesta pong similar a la siguiente captura de pantalla.

Ping pong Ansible Respuesta de ping pong ansible

Crear un libro de jugadas

Ahora, ‘creemos un libro de jugadas llamado’ apache.yml ‘para instalar y ejecutar el último servidor web apache.

$ vi apache.yml

Agregue el siguiente contenido al archivo

---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest

- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'

- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"

- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache

- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp

handlers:
- name: restart-apache
service:
name: apache2
state: restarted

Aquí,

  • anfitrión: es el nombre de host que definió en el archivo / etc / ansible / hosts
  • hecho realidad es la escalada de privilegios por ser sudo
  • cuyo: para definir las variables
  • Tareas: se definen cuatro tareas. Instalar apache, copiar la página de índice, configurar el host virtual, permitir http desde el firewall UFW si ya está habilitado.
  • manipuladores: Para reiniciar Apache si todas las demás tareas se realizaron correctamente.

Junto con el libro de jugadas, debe definir otros tres archivos vars / default.yml, files / apache.conf.j2 y files / index.html.j2. Creámoslos uno por uno.

vars / default.yml

El archivo default.yml contiene el nombre de dominio, la ubicación del archivo de configuración y el puerto http. Cree el archivo y agregue lo siguiente.

http_host: “midominio.local”
http_conf: “my_domain.conf”
http_port: “80”

archivos / apache.conf.j2

La plantilla de configuración de Apache contiene la configuración para el host virtual. Las variables se definen dentro de {{}} y se obtienen del archivo vars definido anteriormente. Cree el archivo apache.conf.js y agregue el siguiente contenido.

<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

files / index.html.j2

Otra plantilla es su archivo de índice. Crea el archivo y agrega el siguiente contenido. Puede modificar según sus necesidades.

<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>

Ahora puede ejecutar ansible-playbook con el siguiente comando.

$ ansible-playbook apache.yml –ask-Become-pass

Se le pedirá que ingrese una contraseña para el sudo usuario. El estado debería ser correcto como se muestra a continuación.

Salida de libro de jugadasSalida de libro de jugadas

Esto también ejecutará apache en el puerto predeterminado 80, puede verificar la navegación localhost en su navegador favorito.

Página de inicio

Conclusión

Ansible es una herramienta útil, ya que no tiene agentes y la configuración de escritura es fácil. Puede explorar más configuraciones desde Documentación oficial ansible. Comente si tiene algún problema al escribir el libro de jugadas en ansible.