Saltar al contenido

Cómo utilizar Ansible a instalar y configurar estibador en Ubuntu 18.04

marzo 4, 2020

 automatización

Introducción

Server ahora juega un papel esencial en la administración de sistemas, debido a la naturaleza disponible de los entornos de aplicaciones modernas. herramientas de gestión de configuración, tales como Ansible se utilizan normalmente para agilizar el proceso de automatización de la configuración del servidor mediante el establecimiento de procedimientos estándar para los nuevos servidores al mismo tiempo reducir los errores humanos asociados con configuraciones manuales.

Ansible ofrece una arquitectura sencilla que no requiere software especial para ser instalado en los nodos. También proporciona un robusto conjunto de características y una función de módulos que facilitan la escritura de scripts de automatización.

Esta guía explica cómo utilizar Ansible para automatizar los pasos contenidos en nuestra guía sobre cómo instalar y utilizar estibador en Ubuntu 18.04. Docker es una aplicación que simplifica el proceso de gestión de contenedores , procesos aislados de recursos que se comportan de una manera similar a las máquinas virtuales, pero son más fáciles de transportar, más recursos de usar, y dependen en mayor medida en el sistema operativo anfitrión.

Requisitos previos

Con el fin de ejecutar la configuración automatizada proporcionada por el libro de jugadas que estamos discutiendo en esta guía, necesitará: nodo de control

  • Una Ansible: una máquina de Ubuntu 18.04 con Ansible instalado y configurado para conectarse a su anfitriones ansible utilizando claves SSH. Asegúrese de que el nodo de control tiene un usuario regular con permisos de sudo y activado un cortafuegos, como se explica en nuestra guía de configuración inicial del servidor. Para configurar Ansible, siga nuestra guía sobre cómo instalar y configurar el Ansible en Ubuntu 18.04.
  • Uno o más hosts Ansible: uno o más servidores remotos Ubuntu 18.04 configurado previamente siguiendo la guía sobre cómo utilizar Ansible para automatizar la instalación inicial del servidor en Ubuntu 18.04.

Antes de continuar, primero tiene que asegurarse de que su nodo de control Ansible es capaz de conectarse y ejecutar comandos en el host Ansible (s). Para una prueba de conexión, consulte el paso 3 de Cómo instalar y configurar Ansible en Ubuntu 18.04.

lo que hace este libro de estrategias Do?

Este Ansible PlayBook ofrece una alternativa a la ejecución manual a través del procedimiento descrito en nuestra guía sobre cómo instalar y utilizar estibador en Ubuntu 18.04.

La ejecución de este libro de jugadas llevará a cabo las siguientes acciones en los hosts Ansible:

Una vez que el libro de jugadas tiene en marcha terminado, tendrá un número de contenedores creado en base a las opciones que define dentro de sus variables de configuración.

Cómo utilizar este libro de estrategias

Lo primero que tenemos que hacer es obtener el libro de jugadas del estibador y sus dependencias desde el repositorio / hacer en la comunidad ansibles-libros de jugadas. Debemos clonar este repositorio en una carpeta local en el interior del Nodo de Control Ansible.

En caso de que ha clonado el repositorio antes, mientras que después de una guía diferente, acceder a sus ansibles-libros de jugadas existentes copiar y ejecutar un comando git tirón para que el contenido seguro de que han actualizado:

cd ~/ansible-playbooks
git pull

  • cd ~ / ansibles-libros de jugadas
  • git tire

Si esta es tu primera vez usando el hacer en la comunidad / ansibles-libros de jugadas repositorio, usted debe comenzar por clonación del repositorio a la carpeta de inicio con:

cd ~
git clone https://github.com/do-community/ansible-playbooks.git
cd ansible-playbooks

  • cd ~
  • git clone https: // github. com / DO-comunitarios / ansible-playbooks.git
  • cd ansibles-libros de jugadas

los archivos que estamos interesados ​​en ubicados dentro de la carpeta docker_ubuntu1804, que tiene la siguiente estructura:

docker_ubuntu1804
├── vars
│ └── default.yml
├── playbook.yml
└── readme.md

Esto es lo que cada uno de estos archivos son:

  • vars / default.yml: archivo de configuración variable para la personalización libro de jugadas.
  • playbook.yml: El archivo de libro de jugadas, que contiene las tareas a ejecutar en el servidor remoto (s).
  • readme.md: Un archivo de texto que contiene información sobre este libro de jugadas.

editaremos archivo de variables del libro de jugadas para personalizar nuestra configuración del estibador. El acceso al directorio docker_ubuntu1804 y abra el archivo VARs / default.yml usando el editor de línea de comandos de elección:

cd docker_ubuntu1804
nano vars/default.yml

  • cd docker_ubuntu1804
  • nano VARs / default.yml

Este archivo contiene algunas variables que requieren su atención:

---
create_containers: 4
default_container_name: docker
default_container_image: ubuntu
default_container_command: sleep 1d

La siguiente lista contiene una breve explicación de cada una de estas variables y cómo es posible que desee hacerlo: create_containers

  • : El número de contenedores para crear.
  • default_container_name: nombre del contenedor predeterminado.
  • default_container_image: Imagen acoplable por defecto que se utilizará al crear contenedores.
  • default_container_command: comando predeterminado para correr en nuevos contenedores.

Una vez que haya terminado la actualización de las variables dentro de VARs / default.yml, guarde y cierre el archivo. Si ha utilizado nano, hacerlo pulsando CTRL + X, Y, a continuación, ENTER.

Ahora está listo para ejecutar este libro de jugadas en uno o más servidores. La mayoría de los libros de jugadas están configurados para ejecutarse en todos los servidores en el inventario, de manera predeterminada. Podemos utilizar la opción -l para asegurarse de que sólo un subconjunto de servidores, o un único servidor, se ve afectada por el libro de jugadas. También podemos usar la opción -u para especificar qué usuario en el servidor remoto que estamos utilizando para conectar y ejecutar los comandos de libro de jugadas en los hosts remotos.

Para ejecutar el libro de jugadas solamente en server1, conectando como Sammy, puede utilizar el siguiente comando:

ansible-playbook playbook.yml -l server1 -u sammy

  • ansible-libro de jugadas playbook.yml -l -u server1 Sammy

Usted recibirá una salida similar a la siguiente:

Output...
TASK [Add Docker GPG apt Key] ********************************************************************************************************************
changed: [server1]

TASK [Add Docker Repository] *********************************************************************************************************************
changed: [server1]

TASK [Update apt and install docker-ce] **********************************************************************************************************
changed: [server1]

TASK [Install Docker Module for Python] **********************************************************************************************************
changed: [server1]

TASK [Pull default Docker image] *****************************************************************************************************************
changed: [server1]

TASK [Create default containers] *****************************************************************************************************************
changed: [server1] => (item=1)
changed: [server1] => (item=2)
changed: [server1] => (item=3)
changed: [server1] => (item=4)

PLAY RECAP ***************************************************************************************************************************************
server1 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Nota : para obtener más información sobre cómo ejecutar jugadas ansible, consulte nuestra hoja de trucos ansible Guía.

Cuando el libro de jugadas se está ejecutando terminado, ingrese a través de SSH al servidor aprovisionado por Ansible y ejecutar ventana acoplable ps -a para comprobar si los contenedores se han creado correctamente:

sudo docker ps -a

  • sudo ventana acoplable ps -a

Usted debería ver una salida similar a esto:

OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3fe9bfb89cf ubuntu "sleep 1d" 5 minutes ago Created docker4
8799c16cde1e ubuntu "sleep 1d" 5 minutes ago Created docker3
ad0c2123b183 ubuntu "sleep 1d" 5 minutes ago Created docker2
b9350916ffd8 ubuntu "sleep 1d" 5 minutes ago Created docker1

esto significa que los contenedores definidos en el libro de jugadas se crearon con éxito. Dado que esta era la última tarea en el libro de jugadas, también confirma que el libro de jugadas se ejecuta en su totalidad en este servidor. Contenido

el libro de jugadas

Puede encontrar la configuración del servidor acoplable presentado en este tutorial en la carpeta docker_ubuntu1804 dentro del repositorio digitalocean Comunidad libros de jugadas. Para copiar o descargar directamente el contenido del script, haga clic en el botón Raw hacia la parte superior de cada script.

Los contenidos completos del libro de jugadas, así como sus archivos asociados también se incluyen aquí para su conveniencia.

vars default.yml

El archivo / default.yml variable contiene los valores que se utilizarán cuando la creación de estibador en su servidor.

---
create_containers: 4
default_container_name: docker
default_container_image: ubuntu
default_container_command: sleep 1d

playbook.yml

El archivo playbook.yml es donde se definen todas las tareas de esta configuración. Se comienza por definir el grupo de servidores que deben ser objeto de esta configuración (todos), después de lo cual se utiliza convertirse en: true para definir las tareas que deben ser ejecutadas con la elevación de privilegios (sudo) de forma predeterminada. A continuación, se incluye el archivo de VARs / default.yml variable para las opciones de configuración de carga.

---
- hosts: all
become: true
vars_files:
- vars/default.yml

tasks:
- name: Install aptitude using apt
apt: name=aptitude state=latest update_cache=yes force_apt_get=yes

- name: Install required system packages
apt: name={{ item }} state=latest update_cache=yes
loop: [ 'apt-transport-https', 'ca-certificates', 'curl', 'software-properties-common', 'python3-pip', 'virtualenv', 'python3-setuptools']

- name: Add Docker GPG apt Key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present

- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu bionic stable
state: present

- name: Update apt and install docker-ce
apt: update_cache=yes name=docker-ce state=latest

- name: Install Docker Module for Python
pip:
name: docker

- name: Pull default Docker image
docker_image:
name: "{{ default_container_image }}"
source: pull

# Creates the number of containers defined by the variable create_containers, using values from vars file
- name: Create default containers
docker_container:
name: "{{ default_container_name }}{{ item }}"
image: "{{ default_container_image }}"
command: "{{ default_container_command }}"
state: present
with_sequence: count={{ create_containers }}

no dude en modificar este libro de jugadas que mejor se adapte a sus necesidades individuales dentro de su propio flujo de trabajo. Por ejemplo, se puede utilizar el módulo docker_image para empujar imágenes para acoplable Hub o el módulo docker_container para establecer redes de contenedores.

Conclusión

Automatización de configuración de la infraestructura no sólo le puede ahorrar tiempo, sino que también ayuda a garantizar que los servidores seguirán una configuración estándar que se pueden personalizar a sus necesidades. Con la naturaleza distribuida de las aplicaciones modernas y la necesidad de coherencia entre los diferentes entornos de ensayo, la automatización como éste se ha convertido en un componente central en los procesos de desarrollo de muchos equipos.

En esta guía, hemos demostrado cómo utilizar Ansible para automatizar el proceso de instalación y configuración de estibador en un servidor remoto. Debido a que cada persona suele tener diferentes necesidades cuando se trabaja con contenedores, le recomendamos que se echa un vistazo a la documentación oficial Ansible para más información y casos de uso del módulo Ansible docker_container.

Si desea incluir otras tareas en este libro de jugadas para personalizar más la configuración inicial del servidor, por favor refiérase a nuestra guía de introducción Ansible Gestión de la Configuración 101: Escritura Ansible libros de jugadas.