Al instalar Automation Config, se ejecuta un highstate de orquestación proporcionado en el instalador de Automation Config. El highstate se ejecuta en el maestro de Salt y configura un entorno de varios nodos. Instala la arquitectura esencial de Automation Config en los otros tres nodos que alojarán PostgreSQL, Redis y el nodo de RaaS.

Atención: No se admite ni se recomienda implementar Automation Config en contenedores.

El objetivo final de la instalación es tener cuatro nodos, cada uno con una función de host diferente. Cada nodo también es un minion para el maestro de Salt:

  • Un nodo maestro de Salt
  • Un nodo de base de datos de PostgreSQL
  • Un nodo de base de datos de Redis
  • Un nodo de RaaS, también conocido como Automation Config
Precaución:

Es especialmente importante seguir todos los pasos enumerados en Instalar Salt en los nodos. Concretamente, debe instalar las dependencias necesarias para el instalador de Automation Config en los cuatro nodos de la instalación. De lo contrario, la instalación de varios nodos genera errores.

Las dependencias necesarias son:

  • OpenSSL
  • Paquetes adicionales para Enterprise Linux (EPEL)
  • Criptografía de Python
  • Biblioteca OpenSSL de Python

Alta disponibilidad

Es posible configurar varios maestros de Salt o varios nodos de RaaS. También es posible ejecutar el servicio del maestro de Salt en un nodo y combinar dos o más de los otros servicios en un nodo independiente. En esta guía no se explican por completo los pasos para configurar este tipo de arquitectura del sistema.

Los requisitos de alta disponibilidad o arquitectura personalizada pueden necesitar servicios de asesoramiento. Sin embargo, antes de configurar varios nodos del mismo tipo, por lo general, debe comenzar primero por el escenario de instalación de varios nodos y, a continuación, configurar una arquitectura adicional más adelante.

Para obtener más información sobre la alta disponibilidad, consulte Dependencias de Automation Config requeridas.

Registrar datos clave para los cuatro nodos

Antes de comenzar la instalación estándar, registre los datos clave de cada uno de los cuatro nodos implicados en la instalación. Estos datos se introducen en varios puntos durante el proceso de instalación.

Registre los siguientes datos clave sobre cada uno de los cuatro nodos implicados en la instalación:

  • Las direcciones IP o los nombres de DNS
  • Los ID de minion

Asegúrese de indicar claramente qué dirección IP e ID de minion pertenece a cuál host (el nodo maestro de Salt, el nodo de RaaS, el nodo de base de datos de PostgreSQL y el nodo de base de datos de Redis).

Como práctica recomendada, compruebe que las direcciones IP o los nombres de DNS sean correctos, ya que las direcciones IP o los nombres de DNS incorrectos podrían provocar un error de instalación en varios nodos.

Mantenga estos datos en un registro de fácil acceso para referencia. A medida que configura la orquestación, debe introducir estos datos en varios ajustes y variables en los archivos de configuración. Por este motivo, es útil mantener este registro a mano durante toda la instalación.

Nota:

Si se encuentra en un entorno virtualizado, tenga cuidado de especificar la dirección interna, en lugar de la dirección pública.

Direcciones IP estáticas frente a dinámicas

Los hosts de Redis y de PostgreSQL necesitan direcciones IP estáticas o nombres de DNS a los que hacen referencia los archivos de configuración. En función de cómo se implemente el nodo de RaaS, es posible que también necesite una dirección IP estática o un nombre de DNS. Confiar en direcciones IP dinámicas en las configuraciones puede cambiar e interrumpir el entorno.

Configuración de un ID de minion personalizado (opcional)

Un ID de minion es un nombre único que se le da a cada minion administrado por un maestro de Salt. De forma predeterminada, el minion se identifica con el maestro de Salt mediante el nombre de host del sistema. Sin embargo, puede asignar ID personalizados que describen su función o ubicación dentro de la red.

Si decide personalizar los ID de minion, intente que el ID sea breve pero describa su función. Por ejemplo, podría usar apache-server-1 para nombrar uno de los servidores web, o datacenter-3-rack-2 por su ubicación en un centro de datos. El objetivo es que los nombres sean descriptivos y útiles para futuras referencias.

Para declarar un ID de minion:

  1. En el terminal del minion, desplácese hasta el directorio que contiene el archivo minion.conf del minion. De forma predeterminada, la ubicación del directorio es etc/salt/minion.d.
  2. Abra el archivo minion.conf en un editor. Cambie el ajuste id a su ID de minion preferido. Por ejemplo:
    id: postgres-database-1
  3. Después de cambiar un ID de minion, el maestro de Salt debe aceptar (o volver a aceptar) las claves del minion. Para obtener instrucciones específicas sobre cómo configurar las claves, consulte Aceptar las claves de minion en los maestros.

Copiar y editar los archivos de estado superiores

Durante esta tarea de instalación, copie los archivos de orquestación proporcionados con el instalador de Automation Config en el nodo maestro de Salt. A continuación, edite los archivos para hacer referencia a los tres nodos de RaaS, la base de datos de Redis y la base de datos de PostgreSQL.

Para copiar y editar los archivos de configuración de orquestación:

  1. En el maestro de Salt, desplácese hasta el directorio sse-installer.
  2. Copie los archivos del pilar y de estado del directorio sse_installer en pillar_roots y file_roots del maestro de Salt mediante los siguientes comandos:
    sudo mkdir /srv/salt
    sudo cp -r salt/sse /srv/salt/
    sudo mkdir /srv/pillar
    sudo cp -r pillar/sse /srv/pillar/
    sudo cp -r pillar/top.sls /srv/pillar/
    sudo cp -r salt/top.sls /srv/salt/
    Importante:

    En estas instrucciones se hacen algunas suposiciones que podrían no ser ciertas para su estructura de directorios, especialmente si ya tiene una instalación de Salt. En las instrucciones se supone lo siguiente:

    • Que el maestro de Salt está utilizando la estructura de directorios predeterminada. Si se modificó la estructura de directorios, es posible que deba modificar estas instrucciones para la estructura de directorios personalizada.
    • Que aún no tiene una carpeta con el nombre sse en el pilar ni en la raíz del estado de configuración. Si esta carpeta existe, es posible que deba combinarlas manualmente.
    • Que aún no tiene un archivo con el nombre top.sls en el pilar ni en el directorio salt. Si este archivo existe, es posible que deba combinarlo con el archivo existente manualmente.
  3. En /srv/pillar/, ahora tiene un archivo denominado top.sls que copió de los archivos de instalación en el paso anterior. Abra este archivo en un editor.
  4. Edite este archivo para definir la lista de los ID de minion (no las direcciones IP ni los nombres de DNS) para sus instancias de PostgreSQL, Redis, RaaS y el maestro de Salt. Utilice los identificadores que registró anteriormente.

    Por ejemplo:

    {# Pillar Top File #}
    
    {# Define SSE Servers #}
    
    {% load_yaml as sse_servers %}
      - postgres-database-1
      - redis-database-1
      - saltstack-enterprise-api-server-1
      - saltmaster-1
    {% endload %}
    
    base:
    
    {# Assign Pillar Data to SSE Servers #}
    {% for server in sse_servers %}
      '{{ server }}':
        - sse
    {% endfor %}
  5. En el directorio /srv/salt/, ahora tiene un archivo denominado top.sls que copió en el paso 2. Abra este archivo en un editor y compruebe si coincide con lo siguiente:
    base:
    
      {# Target SSE Servers, according to Pillar data #}
      # SSE PostgreSQL Server
      'I@sse_pg_server:{{ grains.id }}':
        - sse.eapi_database
    
      # SSE Redis Server
      'I@sse_redis_server:{{ grains.id }}':
        - sse.eapi_cache
    
      # SSE eAPI Servers
      'I@sse_eapi_servers:{{ grains.id }}':
        - sse.eapi_service
    
      # SSE Salt Masters
      'I@sse_salt_masters:{{ grains.id }}':
        - sse.eapi_plugin
    

Editar el archivo del pilar de configuración de Automation Config

Durante esta tarea de instalación, editará cinco secciones diferentes del archivo de asignación del pilar de configuración de Automation Config para proporcionar los valores adecuados para su entorno. Los archivos de estado de configuración utilizan esta configuración para implementar y administrar la implementación de Automation Config.

Para copiar y editar el archivo de estado de configuración de Automation Config actual:

  1. En el maestro de Salt, desplácese hasta el directorio /srv/pillar/sse/.
  2. Abra el archivo sse_settings.yaml en un editor. La Sección 1 de este archivo contiene cuatro variables que corresponden a los cuatro nodos. Cambie los valores de las cuatro variables por los ID de minion (no las direcciones IP ni los nombres de DNS) para los nodos correspondientes. Utilice los ID de minion que registró anteriormente.

    Por ejemplo:

    # PostgreSQL Server (Single value)
    pg_server: postgres-database-1
    
    # Redis Server (Single value)
    redis_server: redis-database-1
    
    # SaltStack Enterprise Servers (List one or more)
    eapi_servers:
      - saltstack-enterprise-api-server-1
    
    # Salt Masters (List one or more)
    salt_masters:
      - saltmaster-1
    Nota: Las variables pg_server y redis_server son variables únicas, ya que la mayoría de las configuraciones de red solo tienen una base de datos de PostgreSQL y una de Redis. Por el contrario, las variables de eapi_servers y salt-masters se formatearán en una lista, ya que es posible tener más de un nodo de RaaS y un maestro de Salt.
  3. En la Sección 2 de este archivo, edite las variables para especificar el endpoint y el puerto del nodo de PostgreSQL:
    • pg_endpoint: Cambie el valor por la dirección IP o el nombre de DNS (no el ID de minion) del servidor de PostgreSQL. Si se encuentra en un entorno virtualizado, tenga cuidado de especificar la dirección interna, en lugar de la dirección pública.
    • pg_port: Se proporciona el puerto de PostgreSQL estándar, pero puede anularse si es necesario.
    • pg_username y pg_password: Introduzca las credenciales del usuario que la API (RaaS) utilizará para autenticarse en PostgreSQL. Este usuario se crea cuando se ejecuta el highstate de orquestación de la configuración.
    Nota: La variable se especifica como pg_endpoint, ya que algunas instalaciones pueden haber configurado un servidor (o clúster) de PostgreSQL independiente que no se administra mediante este proceso de instalación. Si este es el caso, excluya la acción. No aplique el highstate al servidor de PostgreSQL durante el paso Aplicar highstates a los nodos que viene más adelante en el proceso.
  4. Repita el paso anterior para editar la Sección 3 de este archivo, pero en su lugar edite las variables correspondientes para especificar el endpoint y el puerto del nodo de Redis.
  5. En la Sección 4 de este archivo, edite las variables relacionadas con el nodo de RaaS:
    • Si se trata de una instalación nueva, no cambie los valores predeterminados para las variables eapi_username y eapi_password. Durante la orquestación de la configuración, el proceso de instalación establece la base de datos con estas credenciales predeterminadas. Necesita estas credenciales para conectarse a través del servicio de eAPI a fin de establecer los destinos y los trabajos predeterminados en Automation Config. Cambiará la contraseña predeterminada en un paso posterior a la instalación.
    • Para la variable eapi_endpoint, cambie el valor a la dirección IP o el DNS (no el ID de minion) del nodo de RaaS.
      Nota: La variable se especifica como eapi_endpoint, ya que algunas instalaciones alojan varios servidores de eAPI detrás de un equilibrador de carga.
    • La variable eapi_ssl_enabled se establece en True de forma predeterminada. Cuando se establece en True, SSL está habilitado. Se recomienda encarecidamente dejar esta opción habilitada. El instalador no requiere la validación de SSL, pero es probable que sea un requisito de seguridad en entornos que alojan su propia entidad de certificación.
    • La variable eapi_standalone se establece en False de forma predeterminada. Esta variable dirige a los estados de configuración si los datos del pilar se utilizan en un escenario de instalación de nodo único. En ese caso, toda la comunicación IP se dirigirá a la dirección de bucle invertido. En el escenario de instalación múltiple, debe configurar esto como False.
    • La variable eapi_failover_master se establece en False de forma predeterminada. Esta variable admite implementaciones en las que los maestros (y los minions) de Salt funcionan en modo de conmutación por error.
    • La variable eapi_key define la clave de cifrado que Automation Config utiliza para administrar datos cifrados en la base de datos de PostgreSQL. Esta clave debe ser única para cada instalación. Se proporciona un valor predeterminado, pero se puede generar una clave personalizada ejecutando el siguiente comando en un terminal independiente fuera del editor:
      openssl rand -hex 32
  6. En la Sección 5 de este archivo, edite las variables para agregar sus identificadores de cliente únicos:
    • La variable customer_id solo identifica una implementación de SaltStack. Se convierte en el sufijo del nombre de esquema de la base de datos raas_* (API (RaaS)) en PostgreSQL. Se proporciona un valor predeterminado, pero se puede generar una clave personalizada ejecutando el siguiente comando en un terminal independiente fuera del editor:
      cat /proc/sys/kernel/random/uuid
    • La variable cluster_id define el identificador de un conjunto de maestros de Salt cuando se configura en modo de varios maestros activo o de conmutación por error. Este ID evita que se informe varias veces de los minions que responden a varios maestros de Salt dentro de Automation Config.

Aplicar highstates a los nodos

  1. En el maestro de Salt, sincronice sus Grains para confirmar que el maestro de Salt tiene los datos de Grain que se necesitan para cada minion. Este paso garantiza que los datos del pilar se generen correctamente para la funcionalidad de Automation Config.

    En el comando que sincroniza los granos, puede dirigirse a todos los minions o puede pasar entre paréntesis una lista de los ID de minion específicos para los nodos (incluido el propio maestro de Salt). Por ejemplo:

    Apuntar a todos los minions

    sudo salt \* saltutil.refresh_grains

    Seleccione una lista de minions

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
  2. Actualice y confirme si cada uno de los minions recibió los datos del pilar definidos en el archivo sse_settings.yaml y si aparecen según lo esperado.

    En el comando que actualiza los datos del pilar, puede dirigirse a todos los minions o puede pasar entre paréntesis una lista de los ID de minion específicos para los nodos (incluido el propio maestro de Salt). Por ejemplo:

    Apuntar a todos los minions

    sudo salt \* saltutil.refresh_pillar

    Seleccione una lista de minions

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
  3. Confirme si los datos devueltos para el pilar son correctos:
    sudo salt \* pillar.items

    Compruebe si ve los datos del pilar relacionados con Automation Config.

    Nota:

    También puede apuntar a los datos del pilar de un minion específico para comprobar si se actualizaron los datos del pilar.

  4. Ejecute el comando que aplica el highstate de orquestación en el servidor de PostgreSQL. Utilice el identificador de minion que registró anteriormente para el servidor de PostgreSQL.

    Por ejemplo:

    sudo salt postgres-database-1 state.highstate
  5. Repita el paso anterior para cada uno de los siguientes servidores, reemplazando el ID de minion para cada servidor:
    • El nodo de Redis
    • El nodo de RaaS
    • El nodo maestro de Salt
    Nota:

    Durante la aplicación inicial del highstate al maestro de Salt, es posible que se vea el siguiente mensaje de error: Authenticationerroroccurred. Este error se muestra porque el maestro de Salt aún no se autenticó en el nodo de RaaS, pero el estado de instalación del complemento principal reiniciará el servicio principal de Salt y el problema se resolverá automáticamente.

Si detecta otros errores al ejecutar los highstates, consulte la Solución de problemas.