Table of Contents
Cómo automatizar implementaciones simultáneas de WordPress en múltiples servidores Linux usando Ansible-Parte 3
En los dos artículos anteriores de esta serie Ansible. 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 usando Ansible-Parte 3
En el tutorial actual explicaremos cómo configurar WordPress. en los mismos servidores remotos:
nodo1: 192.168.0.29. nodo2: 192.168.0.30.
donde lo instalamos, habilitado e inicié Apache (probablemente ya sepa por qué elegimos trabajar con un servidor web como ejemplo inicial en el último tutorial).
Le recomiendo que lea la Parte 1. y Parte 2. antes de continuar para asegurarse de que está familiarizado con h los conceptos asociados con Ansible.
Cómo instalar y configurar la herramienta de automatización” Ansible “para la gestión de TI-Parte 1
Cómo utilizar los manuales de Anisble para automatizar tareas complejas en varios servidores remotos-Parte 2
Paso 1: Introducción de los roles de Ansible
A medida que comienzas a agregar más y más tareas a los juegos, sus Playbooks. pueden volverse cada vez más difíciles de manejar. Por esa razón, el enfoque recomendado en esas situaciones (en realidad, en todos los casos) es usar 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. Cada uno de estos archivos define lo que se llama un rol en el ecosistema Ansible.
En nuestro caso, crearemos dos roles. Uno de ellos (llamado wp-dependencies. se utilizará para instalar las dependencias de WordPress ( PHP. y MariaDB. no es necesario nstall Apache. como ya está instalado).
El otro rol (llamado wp-install-config. incluirá todas las tareas necesarias asociadas con la instalación y configuración de WordPress.
Paso 2: Crear roles de Ansible
Ansible viene con una utilidad llamada ansible-galaxy. que nos ayudará a crear la estructura de directorios para nuestros roles. Haremos esto en /etc/ansible/playbooks. (que creamos en la Parte 2. pero, en teoría, puede configurarlo en otro directorio si lo desea.
# cd/etc/ansible/playbooks # ansible-galaxy init wp-dependencies # ansible-galaxy init wp-install-config
Ansible: Crear roles de WordPress
A continuación, se confirman los roles recién creados.
# ls-R/etc/ansible/playbooks
Ansible: Confirmar WordPress Estructura del directorio
En la imagen de arriba podemos ver que ansible-galaxy. creó dos directorios con el mismo nombre que nuestros roles, y otros subdirectorios ( valores predeterminados. archivos. controladores. meta. tareas. plantillas. y vars. y un README.md. dentro de cada uno de ellos.
Además, se creó un archivo YAML llamado main.yml. dentro de todos los directorios enumerados anteriormente, con la excepción de archivos y plantillas.
Comenzaremos por editar los siguientes archivos de configuración como se indica:
1.. /etc/ansible/playbooks/wp-dependencies/tasks/main .yml. Tenga en cuenta que incluimos httpd. en caso de que no haya seguido los tutoriales anteriores de esta serie.
main.yml—# archivo de tareas para las dependencias de wp-nombre: paquetes de actualización (esto es equivalente a yum update-y) yum: name = * state = latest-name: Instalar dependencias para WordPress yum: name = item state = present with_items:-httpd-mariadb-server-mariadb-php-php-mysql-MySQL-python-nombre: Asegúrese de que MariaDB se esté ejecutando (y habilítelo en el arranque) servicio: nombre = mariadb estado = iniciado habilitado = sí-nombre: Copiar ~/.my.cnf en los nodos copy: src =/root/.my.cnf dest =/root/.my.cnf-name: Crear base de datos MariaDB mysql_db: name = wp_mysql_db state = present-name: Crear nombre de usuario y contraseña MariaDB mysql_user: login_user = root login_password = YourMariaDBRootPasswordHere name = wp_mysql_user contraseña = wp_mysql_password pr iv = *. *: TODOS
2.. /etc/ansible/playbooks/wp-dependencies/defaults/main.yml×
main.yml–# archivo predeterminado para las dependencias de wp wp_mysql_db: MyWP wp_mysql_user: wpUser wp_mysql_password: wpP4ss
3.. /etc/ansible/playbooks/wp-install-config/tasks/main. yml.
main.yml—# archivo de tareas para wp-install-config-nombre: crear directorio para descargar WordPress comando: mkdir-p/opt/source/wordpress-nombre: descargar WordPress get_url : url = https://www.wordpress.org/latest.tar.gz dest =/opt/source/wordpress/wordpress.tar.gz validate_certs = no-nombre: Extraer el comando de WordPress: “tar xzf/opt/source/wordpress/wordpress.tar.gz-C/var/www/html–strip-components 1 “-nombre: Enviar copia del archivo de configuración: src =/root/wp-config-sample.php dest =/var/www/html/wp-config.php mode = 0644
4.. wp-config-sample.php. (proporcionado en este Pastebin) de la siguiente manera y guárdelo en su Ansible c ontroller machine (como puede ver en la última directiva de copia anterior, la descargué en el directorio de inicio del superusuario (/root/wp-config-sample.php. .
Importante. tenga en cuenta que el valor de las variables DB_NAME. DB_USER. y DB_PASSWORD. son los mismos que en /etc/ansible/playbooks/wp-dependencies/defaults/main.yml.
wp-config-sample.php…/** El nombre del base de datos para WordPress */define (‘DB_NAME’, ‘MyWP’);/** Nombre de usuario de la base de datos MySQL */define (‘DB_USER’, ‘wpUser’);/** Contraseña de la base de datos MySQL */define (‘DB_PASSWORD’, ‘wpP4ss’); …
5.. Para nuevas instalaciones de servidor de base de datos donde la contraseña de root está vacía, como en este caso, desafortunadamente necesitamos configurar la contraseña para el usuario root individualmente en cada máquina a través de mysql_secure_installation.
Hasta donde yo sé, no hay una solución alternativa disponible que le permita configurar la contraseña de root a través de Ansible. en el mismo paso en el que 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 /root/.my.cnf. (la ubicación real puede diferir en su caso, pero en todos los casos debe coincidir con el valor del parámetro src. para la tarea Copiar ~/.my.cnf. en los nodos en /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. .
En ese archivo (ver arriba) asumimos que la contraseña de root es YourMariaDBRootPassword.
Contraseña de la 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:
# cat playbook.yml
Cuadernos de jugadas de Ansible WordPress-hosts: roles de servidores web:-wp-dependencies-wp-install-config
Finalmente, es hora de ejecutar estas tareas invocando nuestro playboo k:
# ansible-playbook playbook.yml
Ahora verifiquemos si podemos acceder a la página de administración de WordPress usando las direcciones IP de nodo1 192.168.0.29. y nodo2 192.168. 0.30.
Instalación de WordPress Ansible
Puede ver los dos últimos pasos en el siguiente screencast:
Como puede ver, puede configurar varias instalaciones de WordPress con poco o ningún esfuerzo utilizando Ansible. Luego, puede usar la interfaz de usuario Admin. respectiva para configurar cada sitio por separado.
Consideraciones finales
Si está usando 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 . Tanto si eres un administrador del sistema como un blogger, espero que los conceptos y ejemplos de este tutorial te hayan resultado útiles.
Mucha suerte y no dudes en escribirnos si necesitas ayuda o tienes alguna. comentarios o sugerencias!