Cómo automatizar implementaciones simultáneas de WordPress en múltiples servidores de Linux usando Ansible - Parte 3

Cómo automatizar implementaciones simultáneas de WordPress en múltiples servidores de Linux usando Ansible - Parte 3

En los dos artículos anteriores de este Ansible Serie, explicamos cómo instalar y configurar Ansible para ejecutar comandos y realizar tareas complejas en varios servidores remotos simultáneamente.

Automatizar múltiples instalaciones de WordPress utilizando Ansible - Parte 3

En el tutorial actual explicaremos cómo configurar WordPress En los mismos servidores remotos:

Nodo1: 192.168.0.29 Nodo 2: 192.168.0.30 

donde instalamos, habilitamos y comenzamos Apache (probablemente ya sabe por qué elegimos trabajar con un servidor web como ejemplo inicial en el último tutorial).

Te recomiendo que leas Parte 1 y Parte 2 antes de continuar más para asegurarse de que esté familiarizado con los conceptos asociados con Ansible.

Cómo instalar y configurar la herramienta de automatización 'Ansible' para la administración de TI - Parte 1

Cómo usar los libros de jugadas aniscos para automatizar tareas complejas en múltiples servidores remotos - Parte 2

Paso 1: Introducción de roles Ansible

A medida que comienzas a agregar más y más tareas a las jugadas, tu Libros de jugadas puede volverse cada vez más difícil de manejar. Por esa razón, el enfoque recomendado en esas situaciones (en realidad, en todos los casos) es utilizar una estructura de directorio que contenga las directivas para cada grupo de tareas en archivos distintos.

Este enfoque nos permite reutilizar estos archivos de configuración en proyectos separados más adelante en el futuro. Cada uno de estos archivos define lo que se llama en el Ecosistema ansible un rol.

En nuestro caso, crearemos dos roles. Uno de ellos (llamado dependencias de WP) se utilizará para instalar las dependencias de WordPress (Php y Mariada - No hay necesidad de instalar apache Como ya está instalado).

El otro papel (llamado WP-Install-Config) incluirá todas las tareas necesarias asociadas con la instalación y configuración de WordPress.

Paso 2: Creación de roles ansibles

Ansible viene con una utilidad llamada galaxia ansible que nos ayudará a crear la estructura del directorio para nuestros roles. Haremos esto en /Etc/Ansible/Playbooks (que creamos en Parte 2) Pero en teoría puedes configurarlo en otro directorio si quieres.

# cd/etc/ansible/playbooks # ansible-galaxy init wp-dependencies # ansible-galaxy init wp-install-config 
Ansible: crear roles de WordPress

Luego confirma los roles recién creados.

# ls -r/etc/ansible/playbooks 
Ansible: Confirme la estructura del directorio de WordPress

En la imagen de arriba podemos ver que galaxia ansible creó dos directorios con el mismo nombre que nuestros roles y otros subdirectorios (valores predeterminados, archivos, manejadores, meta, tareas, plantillas, y vars) y un Readme.Maryland Archivo dentro de cada uno de ellos.

Además, se llamó un archivo YAML principal.YML fue creado dentro de todos los directorios enumerados anteriormente, con la excepción de archivos y plantillas.

Comenzaremos editando los siguientes archivos de configuración como se indica:

1. /etc/ansible/playbooks/wp-dependencies/tareas/main.YML. Tenga en cuenta que estamos incluyendo httpd En caso de que no hayas seguido con los tutoriales anteriores de esta serie.

principal.YML
--- # archivo de tareas para wp -dependencias - nombre: paquetes de actualización (esto es equivalente a yum update -y) yum: name =* state = último - nombre: instalar dependencias para wordpress yum: name = item state = presente with_items : - httpd - mariadb -server - mariadb - php - php -mysql - mysql -python - Nombre: Asegúrese de que Mariadb esté ejecutando (y habilitarlo en el arranque) Servicio: name = mariadb state = iniciado habilitado = sí - nombre: copia/ copia.mi.CNF a nodos Copia: src =/root/.mi.CNF Dest =/Root/.mi.cnf - name: create mariadb base de datos mysql_db: name = wp_mysql_db state = presente - name: create mariadb username y contraseña mysql_user: login_user = root login_password = YourMariDBrootPassworsWrewwere name = wp_mysqlysql_____ wp_mysql_sql_sql_ys. =*.*:TODO 

2. /etc/ansible/playbooks/wp-dependencies/default/main.YML

principal.YML
--- # El archivo predeterminado para WP-dependencias WP_MYSQL_DB: MYWP WP_MYSQL_USER: WPUSER WP_MYSQL_PASSWORD: WPP4SSS 

3. /etc/ansible/playbooks/wp-install-config/tareas/main.YML:

principal.YML
--- # archivo de tareas para wp -install -config -nombre: Crear directorio para descargar el comando de WordPress: mkdir -p/opt/source/wordpress -nombre: descargar wordpress get_url: url = https: // www.WordPress.org/último.alquitrán.GZ Dest =/Opt/Source/WordPress/WordPress.alquitrán.GZ Validate_Certs = no - Nombre: Extraer el comando de WordPress: "Tar xzf/opt/source/wordpress/wordpress.alquitrán.gz -c/var/www/html--strip-components 1 "-nombre: enviar el archivo de configuración copia: src =/root/wp-config-sample.php des =/var/www/html/wp-config.Modo PHP = 0644 

4. muestra de wp-config.php (proporcionado en este pastebin) de la siguiente manera y guárdelo en su máquina de controlador Ansible (como puede ver en la última directiva de copia anterior, la descargué en el directorio de inicio del SuperUser (/root/wp-config-sample.php).

Importante: Tenga en cuenta que el valor para las variables Db_name, Db_user, y Db_password son los mismos que en /etc/ansible/playbooks/wp-dependencies/default/main.YML:

muestra de wp-config.php
… / ** El nombre de la base de datos para WordPress* / Define ('db_name', 'mywp'); / ** MySQL Database Nombre de usuario*/ Define ('db_user', 'wpuser'); / ** contraseña de base de datos mysql*/ define ('db_password', 'wpp4ss'); .. 

5. Para nuevas instalaciones del servidor de bases de datos donde la contraseña de root está vacía, como en este caso, desafortunadamente debemos configurar la contraseña de Root de usuario individualmente en cada máquina a través de mysql_secure_installation.

Hasta donde yo sé, no hay una solución disponible que le permita configurar la contraseña de root a través de Ansible En el mismo paso donde crea la cuenta de base de datos administrativa para WordPress.

Asegúrese de usar la misma contraseña en todos los hosts, luego copie las credenciales en /raíz/.mi.CNF (La ubicación real puede diferir en su caso, pero en todos los casos debe coincidir con el valor del SRC Parámetro para la tarea Copia ~/.mi.CNF a nodos en /etc/ansible/playbooks/wp-dependencies/tareas/main.YML).

En ese archivo (ver arriba) hemos asumido que la contraseña para root es YourMariadBrootPassword.

Contraseña de base de datos ansible

6. A continuación, nuestro libro de jugadas (/Etc/Ansible/Playbooks/Playbook.YML) se verá mucho más organizado y simple en comparación con el tutorial anterior:

# Libro de jugadas de gatos.YML 
Ansible WordPress Playbooks
- Hosts: Roles de servidores web:-WP-Dependencies-WP-Install-Config 

Finalmente, es hora de ejecutar estas tareas invocando nuestro libro de jugadas:

# Libro de jugadas Ansible-Playbook.YML 

Ahora verifiquemos si podemos acceder a la página de administrador de WordPress utilizando las direcciones IP de nodo1 192.168.0.29 y nodo2 192.168.0.30:

Instalación de WordPress ansible

Puede ver los últimos dos pasos en el siguiente screencast:

Como puede ver, puede configurar varias instalaciones de WordPress con poco o ningún esfuerzo usando Ansible. Entonces puedes usar el respectivo Administración interfaz de usuario para configurar cada sitio por separado.

Consideraciones finales

Si está utilizando otra distribución para implementar WordPress, El nombre de los paquetes puede variar, pero se trata de instalar el servidor web Apache, el servidor de base de datos Mariadb y el módulo Python MySQL. Si ese es el caso, use el sistema de administración de software de su distribución para buscar el nombre exacto del paquete que necesita instalar.

Resumen

En esta serie hemos explicado cómo usar Ansible para ejecutar comandos y ejecutar tareas complejas en varias máquinas Linux simultáneamente.

Uno de esos ejemplos es configurar WordPress, Como hemos discutido en esta guía. Ya sea que sea un administrador del sistema o un blogger, espero que haya encontrado los conceptos y ejemplos en este tutorial útil.

Mucha suerte y no dude en enviarnos una línea si necesita ayuda o tiene algún comentario o sugerencia!