SaltStack - Salt para infraestructura en la nube

Salt proporciona un módulo separado, Salt Cloud para proporcionar máquinas virtuales de varios proveedores de nube como Amazon AWS, Google Compute, etc. Salt Cloud es una interfaz genérica para configurar y administrar máquinas virtuales de varios proveedores de nube.

  • Cloud Config- El archivo de configuración principal de Salt Cloud es / etc / salt / cloud y se aplica a todas las VM. El archivo de configuración principal se llamaCloud Config.

  • Cloud Providers - Para apuntar a proveedores de nube específicos, podemos usar un archivo de configuración específico y se encuentran en /etc/salt/cloud.providers.d/*.conf, estos se denominan como Cloud Providers.

  • Cloud Profiles - Para apuntar a una VM específica, también podemos usar un archivo de configuración especial, que se aplica solo a esa VM en particular y se encuentran en /etc/salt/cloud.profiles.d/*.conf, estos se llaman como Cloud Profiles.

Para una máquina virtual, la configuración en el Cloud Config se aplica primero y luego en el Cloud Providers y finalmente la anulación se realiza mediante Cloud Profiles.

Instalación de Salt Cloud

De forma predeterminada, Salt Cloud está integrado en Salt y está disponible. Si no está disponible, podemos instalarlo usando el siguiente comando.

pip install salt-cloud

Dado que Salt Cloud es un módulo separado y se ejecuta en su propio proceso, también se puede instalar en el sistema Salt Minion en lugar del Salt Master.

Aprovisionamiento de una máquina virtual

Para aprovisionar una máquina virtual, necesitamos definir un proveedor de nube y un perfil de nube. Una vez que se crean ambos, podemos aprovisionar una nueva máquina virtual para usarlo.

Proveedor de nube

La información del host de la nube se configura en el archivo de configuración del proveedor de la nube. Normalmente, la información básica que debe configurarse es controlador de nube, nombre de usuario, contraseña, clave privada, etc. Creemos un nuevo proveedor de nube llamado comomy-amazon-cloud.

  • Cree un archivo, my-amazon-cloud.conf en /etc/salt/cloud.providers.d/

  • Agregue un nuevo proveedor usando el ec2 conductor.

my-amazon-cloud:
   driver: ec2
   id: '<AWS_ID>'
   key: '<AWS_KEY>'
   private_key: /path/to/privatekey.pem
   keyname: <name of the key>
   securitygroup: default

   minion:
      master: <master server>

Salt proporciona controladores para varios hosts en la nube listos para usar, como GoGrid, HP Cloud, Google Compute Engine (GCE), Amazon AWS, Joyent, Linode, OpenNebula, ProfitBricks, Proxmox, Saltify, VexxHost, VMWare, etc.

Una vez configurados los proveedores de la nube, podemos consultar la ubicación disponible del proveedor, las imágenes de la máquina disponibles y sus diversos tamaños.

salt-cloud --list-location my-amazon-cloud
salt-cloud --list-images my-amazon-cloud
salt-cloud --list-sizes my-amazon-cloud

Perfil de la nube

Un perfil de nube especifica la imagen y el tamaño de la máquina virtual. Se puede configurar en - /etc/salt/cloud.profiles.d/. Creemos un perfil simple,simple.conf.

aws_micro:
   provider: my-amazon-cloud
   image: <image_id>
   size: <machine_id e.g. t1.micro>

Máquina virtual

Una vez que el proveedor y los perfiles están configurados, podemos proporcionar fácilmente una máquina virtual usando la nube de sal como se muestra a continuación.

salt-cloud -p aws_micro master minion1 minion2

Dónde, p - El nombre de perfil master, minion1 y minion2 son las nuevas máquinas virtuales.

Los detalles de la máquina virtual recién creada se pueden obtener usando el siguiente comando.

salt-cloud --query

Las máquinas virtuales se pueden destruir usando el siguiente comando:

slat-cloud -d master minion1

Mapa de nubes

Un mapa en la nube es un formato especial para crear varias máquinas virtuales a la vez. El formato del archivo de mapa es especificar el perfil y luego agregar una lista de las máquinas virtuales debajo de él.

Un archivo de mapa de muestra es el siguiente:

micro:
   - web1
   - web2
large:
   - db1
   - db2

El archivo de mapa se puede pasar como argumento al comando salt-cloud para crear la máquina virtual de la siguiente manera:

salt-cloud -m /path/to/mapfile