VIRIDIAN Digital Banking
Nomenclatura de comandos
Durante el proceso de instalación se mostrarán diferentes comandos para ser ejecutados, en este punto se explicara la nomenclatura de estos, sin embargo no es necesario ejecutar ninguno de los comandos mostrados ya que solo sirven de ejemplo.
Ejemplos
-
En el servidor de administración, ejecutar el siguiente comando:
yum -y install git ansibleEn la primera parte del enunciado, se especificara en que servidores debe ser ejecutado el comando
-
Si el comando requiere de alguna variable, este se vera asi:
ssh-copy-id adminv@<<server_ip>>variablesDonde:
<<server_ip>>es una variable que debe ser reemplazada antes de ejecutar el comando. Por ejemplo el comando anterior después del reemplazo de variable se vería asi:ssh-copy-id adminv@10.1.100.51
Tipos de comandos
Comando normales
Son comandos que solo requieren ser copiados y ejecutados.
Comandos ansible
Son comandos que necesitan ser ejecutados en el directorio ansible, este directorio se crea en el punto: Configuración del instalador > Descarga, por lo tanto, antes de ejecutar el comando ansible, se debe hacer un cd al directorio ejecutando el siguiente comando:
cd ~/viridian-ansible-bec
En el punto: Configuración general > Común, se creara el alias: cdansible:
cdansible() {
cd ~/viridian-ansible-bec;
}
Desde ese momento, se puede usar el alias para hacer un cd al directorio ansible.
Configuración de SSH key
En el servidor de administración se creara un SSH key y luego este será copiado a todos los demás servidores, esto para permitir el acceso por SSH desde el servidor de administración a cualquier servidor, el SSH key también servirá para acceder al repositorio git de VIRIDIAN por SSH sin usar credenciales.
-
En el servidor de administración, ejecutar el siguiente comando:
ssh-keygen -t ed25519 -f $HOME/.ssh/id_ed25519 -N '' <<< y -
En el servidor de administración, ejecutar el siguiente comando:
ssh-copy-id adminv@<<server_ip>>variablesserver_ip: Ip del servidor
tipSe debe repetir la ejecución del comando por cada uno de los servidores de administración, aplicaciones y web.
-
En el servidor de administración, ejecutar el siguiente comando:
echo -e "Host git.viridian.ltd\nPort 2224" >> ~/.ssh/config -
En el servidor de administración, ejecutar el siguiente comando:
cat $HOME/.ssh/id_ed25519.pubtipEl output del comando es el SSH key y debe ser copiado a VIRIDIAN para configurar el acceso a su repositorio git.
-
En el servidor de administración, ejecutar el siguiente comando:
ssh -T git@git.viridian.ltdtipSi todo esta bien, se debería mostrar un mensaje de bienvenida:
Welcome to GitLab, @user!
Instalación de paquetes iniciales
Se validara que todos los servidores cuenten con una suscripción activa a Red Hat y en el servidor de administración se instalaran git y ansible, paquetes necesarios para iniciar la instalación.
-
En todos los servidores, ejecutar el siguiente comando :
sudo yum -y update -
En el servidor de administración, ejecutar los siguientes comandos:
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpmsudo yum -y install git ansibleansible-galaxy collection install --upgrade community.docker:3.12.1
Configuración del instalador
Descarga
El instalador de VIRIDIAN Digital Banking usa ansible para la ejecución de tareas/comandos en los servidores, el instalador esta disponible en un repositorio git que contiene todos los playbooks necesarios.
-
En el servidor de administración, ejecutar los siguientes comandos:
cd ~/git clone git@git.viridian.ltd:viridian/bec/viridian-ansible-bec.git
Selección de versión
Como el instalador viene en un repositorio git, se debe seleccionar un tag o branch desde el cual se empezara con el proceso de instalación.
-
En el servidor de administración, ejecutar el siguiente comando:
cd ~/viridian-ansible-bec -
En el servidor de administración, dependiendo del entorno, ejecutar el siguiente comando:
- Stage
- Preproducción
- Producción
git checkout -b stage origin/stagegit checkout -b preprod origin/preprodgit checkout -b prod origin/prod
Configuración general
Docker
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook os.yml -K -t dockertipEste comando instalará y configurará docker, esto es necesario para deployar los docker containers, la gran mayoría de componentes de nuestra solución vienen dockerizados.
Servidores afectados:
- administración
- aplicaciones
- web
Variables locales
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook os.yml -K -t setuptipEste comando iniciara un proceso interactivo de configuración de variables.
Común
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook os.yml -K -t common,chrony,logrotate,hardeningtipLos comandos realizaran una configuración común de los servidores, entre lo mas destacado esta:
- Creación de grupo de usuarios vadmins para la administración de los servidores.
- Instalación de paquetes comunes para administración de los servidores.
- Creación del directorio
/opt/viridiandonde el proceso de instalación creará directorios y archivos para el deploy de todos los componentes. - Login al repositorio docker de VIRIDIAN.
- Configuracion de logrotate.
Shorewall
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook os.yml -K -t shorewall-setup,shorewall-deploytipEste comando instalará y configurará el paquete shorewall.
Reinicio de servidores
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook -l app,web admin.yml -K -t reboottipEste comando reiniciará los servidores de aplicaciones y web.
-
En el servidor de administración, ejecutar el siguiente comando
sudo reboot
Configuracion de certificados SSL
En el servidor de administración, en el directorio ansible, en la ruta /tls, copiar los siguientes archivos:
- Certificado SSL fullchain en formato PEM: El nombre del archivo debe ser cert.pem
- Llave privada del certificado en formato PEM: El nombre del archivo debe ser key.pem
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook tls.yml -K -t setup,deploytip
Configuración de Redis
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook redis.yml -K -t setup,deploy,inittipEste comando configurará redis por medio de un archivo docker-compose.yml que contiene la especificación de los docker containers.
Docker containers a deployar:
- redis-master
- redis-replica
- redis-insight
Servidores afectados:
- administración
Configuración de ELK
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook elk.yml -K -t setup,init,deploy,configtipEste comando configurará elasticsearch y kibana, creando los ILM (Index Lifecycle Management), templates y data views.
Docker containers a deployar:
- apm-01
- es-01
- kib-01
Configuracion de Vault
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook vault.yml -K -t setup,deploy,init,configtipEste comando inicializará vault y configurará todo lo necesario: policies, tokens y secret engines.
Como resultado de la inicialización y la configuración, se habrán generado los unseal keys y los tokens de acceso a vault, esta información esta disponible en archivos creados en el directorio ansible.
Recomendación:
Los archivos generados por el comando y/o su contenido deben ser copiados fuera del servidor, puestos bajo resguardo según políticas del banco y luego eliminados del servidor.
Docker containers a deployar:
- vault
Configuración de Kafka
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook kafka.yml -K -t setup,deploytipEste comando configurará kafka por medio de un archivo docker-compose.yml que contiene la especificación de los docker containers.
Docker containers a deployar:
- kafka-controller
- kafka-broker
- kafka-ui (solo en el servidor de administración)
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook admin.yml -K -t kafka-topics-createtipEste comando creará los tópicos de kafka necesarios.
Configuración de Proxy
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook proxy.yml -K -t setup,adm-deploytip
Configuración de Ansible-UI
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook ansible.yml -K -t setup,deploytipEste comando configurará ansible por medio de un archivo docker-compose.yml que contiene la especificación de los docker containers.
Docker containers a deployar:
- ansible-db
- ansible-ui
-
Ingresar a Ansible-UI por medio del link especificado para Ansible UI con el usuario admin.
tipLas credenciales se encuentran en el archivo
defaults/local_vars.yml:ansible.usernameyansible.password. -
Adicionar un usuario de tipo
Task Runneral proyecto. Este es el usuario que se debe usar para ejecutar comandos ansible desde Ansible-UI. No se debe acceder al usuario admin a menos que VIRIDIAN envíe una actualización del proyecto.
Encriptación de variables locales
-
En el servidor de administración, ejecutar el siguiente comando:
cp defaults/local_vars.yml defaults/local_vars.yml.bckwarningEste comando creará un backup del archivo
defaults/local_vars.yml. Este backup debe ser copiado a un ambiente externo y eliminado del servidor. -
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-vault encrypt defaults/local_vars.ymlinfoEste comando iniciará un proceso interactivo para encriptar el archivo
defaults/local_vars.ymlque contiene valores sensibles. Al ejecutar el comando, se pedirá una variable, para la cual se debe ingresar el valor y luego presionar ENTER:- New Vault password: La contraseña que se pedirá de ahora en adelante para desencriptar el archivo
defaults/local_vars.yml. Se sugiere que la contraseña cumpla con los siguientes requisitos:- Contenga mayúsculas, minúsculas, números y símbolos
- Contenga de 12 a 30 caracteres Esta contraseña no será almacenada en ningún archivo dentro del entorno. Se sugiere almacenarla en un Gestor de Contraseñas.
warningDe ahora en adelante los comandos de ansible pedirán la contraseña de
ansible-vaultpara desencriptardefaults/local_vars.ymly poder ejecutar el comando. Después de ejecutar los comandos ansible, una vez que se haya introducido la contraseña del usuario adminv en el prompt BECOME password:, aparecerá en la línea de comandos el siguiente prompt:-
Vault password: Debe introducirse la contraseña para desencriptar
defaults/local_vars.yml.dangerLos anteriores comandos fueron ejecutados sin encriptar el archivo
defaults/local_vars.ymlporque durante su ejecución editaron variables dentro de este archivo. Los comandos de instalación no pueden ser ejecutados correctamente si el archivo se encuentra encriptado.
Si la contraseña se viera comprometida y se quisiera hacer el cambio de la misma, se deberá ejecutar el siguiente comando ansible en el servidor de administración:
ansible-vault rekey defaults/local_vars.ymlinfoEste comando iniciará un proceso interactivo para cambiar la contraseña con que se accede al archivo
defaults/local_vars.ymlque se encuentra encriptado. Al ejecutar el comando, se pedirán variable, para las cuales se debe ingresar el valor y luego presionar ENTER:- Vault password: La contraseña que se usa para acceder a
defaults/local_vars.ymlactualmente. - New Vault password: La nueva contraseña que se pedirá para desencriptar el archivo
defaults/local_vars.yml. Nuevamente, se sugiere que la contraseña cumpla con los siguientes requisitos:- Contenga mayúsculas, minúsculas, números y símbolos
- Contenga de 12 a 30 caracteres Esta contraseña no será almacenada en ningún archivo dentro del entorno. Se sugiere almacenarla en un Gestor de Contraseñas.
dangerSi se pierde la contraseña, no habrá manera de desencriptar
defaults/local_vars.yml. - New Vault password: La contraseña que se pedirá de ahora en adelante para desencriptar el archivo
-
En el servidor de administración, ejecutar el siguiente comando:
chmod 644 defaults/local_vars.yml
``
:::warning
Este comando permitirá a Ansible UI desencriptar el archivo defaults/local_vars.yml.
:::