---
title: 'Instalación y Configuración de Ambiente LAB'
---
Instalación y Configuración de Ambiente LAB
===
# Oracle Express
**Definimos un hostname**
```
hostnamectl set-hostname db-devlab
```
**Descargamos paquete de oracle**
```
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm
```
**Instalar paquete**
```
yum -y localinstall oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm
```
**Nota:**
> La base de datos Preinstalación RPM crea automáticamente el propietario y grupos de instalación de Oracle y establece otros ajustes de configuración del kernel según sea necesario para las instalaciones de Oracle
**Configuramos el servicio**
```
nano /etc/sysconfig/oracle-xe-21c.conf
sudo /etc/init.d/oracle-xe-21c configure
lsnrctl start|stop
```
**Actualizar el archivo hosts, agregando lo siguiente**
```
127.0.0.1 db-devlab db-devlab
```
**Los scripts de oraenv y coraenv se pueden utilizar para establecer sus variables de entorno**
```
export ORACLE_SID=XE
export ORAENV_ASK=NO
```
**Inicializar variable de entorno utilizando el archivo de oraenv. Entrar XE como el ORACLE-SID.**
```
. /opt/oracle/product/21c/dbhomeXE/bin/oraenv
ORACLE_HOME = [] ? /opt/oracle/product/21c/dbhomeXE
The Oracle base has been set to /opt/oracle
```
**Dejar en modo enable el servicio de oracle**
```
systemctl enable oracle-xe-21c
```
**Levantar/Bajar servicio**
```
systemctl start|stop oracle-xe-21c
```
# Redis
**Acceder al directorio /opt**
```
cd /opt
```
**Crear directorio redis**
```
mkdir redis
```
**Acceder al directorio redis**
```
cd redis
```
### Crear archivo docker-compose.yml
```
version: '2'
services:
redis-master:
image: redis:7.0.0
restart: always
command: redis-server
ports:
- 6379:6379
redis-slave:
image: redis:7.0.0
restart: always
command: redis-server --slaveof redis-master 6379
ports:
- 7001:6379
depends_on:
- redis-master
```
### Levantar servicio
```
cd /opt/redis
docker compose up -d
```
### Bajar servicio
```
cd /opt/kafka
docker compose down
```
# Kafka
**Acceder al directorio /opt**
```
cd /opt
```
**Crear directorio kafka**
```
mkdir kakfa
```
### Crear archivo docker-compose.yml
```
version: '2.1'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.1.1
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_SERVERS: zookeeper:2888:3888
kafka1:
image: confluentinc/cp-kafka:7.1.1
hostname: kafka1
container_name: kafka1
ports:
- "9092:9092"
- "9999:9999"
environment:
KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://192.168.169.104:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_JMX_PORT: 9999
KAFKA_JMX_HOSTNAME: 192.168.169.111
KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
depends_on:
- zookeeper
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
environment:
KAFKA_CLUSTERS_0_NAME: "lab_siare"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: "kafka1:9092"
depends_on:
- kafka1
```
### Levantar servicio
```
cd /opt/kafka
docker compose up -d
```
### Bajar servicio
```
cd /opt/kafka
docker compose down
```
# Instalar y configurar WSO2 AM
Características del Servidor:
Sistema Operativo: Centos 7, 64 bits.
Procesador VCore: 8
Dirección IP: 192.168.169.111
am-is-01-lab-siare.mef.gov.py
### Comandos ejecutados en am-is-01-lab-siare
hostnamectl set-hostname am-is-01-lab-siare.mef.gov.py
Obs: paso a repetir en los demás equipos de acuerdo a su nombre
### Basados en la documentacion oficial en:
#### Instalar Docker
https://docs.docker.com/engine/install/centos/
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
systemctl enable docker
#### Para que el docker cuente con salida a Internet por proxy (esto se basa en su mayor parte en la documentación oficial: https://docs.docker.com/config/daemon/systemd/)
mkdir -p /etc/systemd/system/docker.service.d
nano /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY==http://192.168.44.6:3128"
Environment="HTTPS_PROXY=http://192.168.44.6:3128"
#### Una vez realizado los cambios, actualizar el service y reiniciar docker
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run hello-world
docker pull wso2/wso2am:4.0.0-centos
#### Confirmar que la configuracion se ha cargado y coincide con los cambios que se ha hecho.
sudo systemctl show --property=Environment docker
#### Limpiar imagenes creadas
```
docker system prune -a
```
#### Lo primero es ver el docker run
```
docker run --add-host=am-is-01-lab-siare.mef.gov.py:192.168.169.111 --add-host=am-is-01-lab-siare.mef.gov.py:127.0.0.1 -it -p 8280:8280 -p 8243:8243 -p 9443:9443 --name am_api -v wso2am-4.0.0:/home/wso2carbon/wso2am-4.0.0/:z wso2/wso2am:4.0.0-centos &
```
#### Se debe editar el deployment.toml para agregar las conexiones de red y los parámetros necesarios
```
/var/lib/docker/volumes/wso2am-4.0.0/_data/repository/conf/deployment.toml
```
#### Para la generación de certificados para el nombre local
```
domain: am-is-01-lab-siare.mef.gov.py
-- se crea directorio para almacenar los certificados
mkdir -p /opt/cert-localhost/
-- crear RootCA.key
openssl genrsa -des3 -out /opt/cert-localhost/RootCA.key 4096
siare
-- generar RootCA.crt
openssl req -x509 -new -nodes -key /opt/cert-localhost/RootCA.key -sha256 -days 3650 -out /opt/cert-localhost/RootCA.crt
Country Name (2 letter code) [XX]:PY
State or Province Name (full name) []:Central
Locality Name (eg, city) [Default City]:Asuncion
Organization Name (eg, company) [Default Company Ltd]:MH
Organizational Unit Name (eg, section) []:DEVOPS
Common Name (eg, your name or your server's hostname) []:am-is-01-lab-siare.mef.gov.py
Email Address []:
-- generar key para el dominio
openssl genrsa -out /opt/cert-localhost/mef.gov.py.key 2048
openssl req -new -key /opt/cert-localhost/mef.gov.py.key -out /opt/cert-localhost/mef.gov.py.csr
Country Name (2 letter code) [XX]:PY
State or Province Name (full name) []:Central
Locality Name (eg, city) [Default City]:Asuncion
Organization Name (eg, company) [Default Company Ltd]:MH
Organizational Unit Name (eg, section) []:DEVOPS
Common Name (eg, your name or your server's hostname) []:am-is-01-lab-siare.mef.gov.py
Email Address []:
openssl x509 -req -in /opt/cert-localhost/mef.gov.py.csr -CA /opt/cert-localhost/RootCA.crt -CAkey /opt/cert-localhost/RootCA.key -CAcreateserial -out /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt -days 3650 -sha256
openssl pkcs12 -export -in /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt -inkey /opt/cert-localhost/mef.gov.py.key -out /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.p12 -name wso2carbon
```
#### Para importar los certificados se debe ejecutar lo siguiente
```
keytool -importkeystore -destkeystore /var/lib/docker/volumes/wso2am-4.0.0/_data/repository/resources/security/wso2carbon.jks -srckeystore /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.p12 -srcstoretype PKCS12
keytool -import -trustcacerts -keystore /var/lib/docker/volumes/wso2am-4.0.0/_data/repository/resources/security/client-truststore.jks -alias am-is-01-lab-siare -file /opt/cert-localhost/RootCA.crt
Trust this certificate? [no]: yes
Certificate was added to keystore
keytool -import -trustcacerts -keystore /var/lib/docker/volumes/wso2am-4.0.0/_data/repository/resources/security/client-truststore.jks -alias wso2carbon -file /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt
```
#### Verificar si se encuentra el driver de oracle en la carpeta (para la conexión a la base de datos):
```
cd /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/components/dropins
```
# Install WSO2 IS
Características del Servidor:
Sistema Operativo: Centos 7, 64 bits.
Procesador VCore: 8
am-is-01-lab-siare.mef.gov.py
### Comandos ejecutados en am-01-desa-siare
```
hostnamectl set-hostname am-is-01-lab-siare.mef.gov.py
```
Obs: paso a repetir en los demás equipos de acuerdo a su nombre
## bajar imagen
```
docker pull wso2/wso2is:5.11.0
```
## Iniciar una instancia del API Manager
```
docker run -it -p 9444:9444 --name is_key -v wso2is-5.11.0:/home/wso2carbon/wso2is-5.11.0/:z wso2/wso2is:5.11.0
```
## Configurar el WSO2IS como Key Manager.
```
cd /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/conf/
nano deployment.toml
```
## Se deben copiar los driver de oracle en la carpeta
```
/var/lib/docker/volumes/wso2is-5.11.0/_data/repository/components/dropins
```
## Iniciamos la imagen wso2is
```
docker run --add-host=am-01-desa-siare.hacienda.gov.py:10.20.27.13 --add-host=am-is-01-lab-siare.mef.gov.py:127.0.0.1 -it -p 9444:9444 --name is_key -v wso2is-5.11.0:/home/wso2carbon/wso2is-5.11.0/:z wso2/wso2is:latest
```
## Generacion de certificados
```
mkdir /opt/cert-localhost
openssl genrsa -des3 -out /opt/cert-localhost/RootCA.key 4096
openssl req -x509 -new -nodes -key /opt/cert-localhost/RootCA.key -sha256 -days 1024 -out /opt/cert-localhost/RootCA.crt
openssl genrsa -out /opt/cert-localhost/hacienda.gov.py.key 2048
openssl req -new -key /opt/cert-localhost/hacienda.gov.py.key -out /opt/cert-localhost/hacienda.gov.py.csr
openssl x509 -req -in /opt/cert-localhost/hacienda.gov.py.csr -CA /opt/cert-localhost/RootCA.crt -CAkey /opt/cert-localhost/RootCA.key -CAcreateserial -out /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt -days 3650 -sha256
openssl pkcs12 -export -in /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt -inkey /opt/cert-localhost/hacienda.gov.py.key -out /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.p12 -name wso2carbon
El password recomendado para este paso es: wso2carbon
```
## Para importar los certificados se debe ejecutar lo siguiente
```
keytool -importkeystore -destkeystore /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/resources/security/wso2carbon.jks -srckeystore /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.p12 -srcstoretype PKCS12
keytool -import -trustcacerts -keystore /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/resources/security/client-truststore.jks -alias is-01-desa-siare-ca -file /opt/cert-localhost/RootCA.crt
keytool -import -trustcacerts -keystore /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/resources/security/client-truststore.jks -alias wso2carbon -file /opt/cert-localhost/am-is-01-lab-siare.mef.gov.py.crt
```
### Para probar el puerto 9444 se puede utilizar
```
openssl s_client -connect 192.168.169.111:9444
```
## Para agregar los filter se debe editar
```
nano /var/lib/docker/volumes/wso2is-5.11.0/_data/repository/resources/conf/templates/repository/conf/tomcat/web.xml.j2
```
```
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>https://localhost:9000, https://localhost:9001</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, DELETE, OPTIONS, PATCH, PUT</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Location</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
```
## En el IS se debe tener el siguiente JAR
```
org.wso2.sample.user.store.manager-1.0.0.jar
luego copiarlo en la carpeta:
/var/lib/docker/volumes/wso2is-5.11.0/_data/repository/components/dropins
```
# Config Server
Configurar application.properties
1. spring.cloud.config.server.git.password: es el password del git repo
1. custom.config.server.token: es el access token del usuario git **configserver**
1. agregar usuario:pass en el archivo usuarios.pas Ej. Bcrypt = lab:pass
# Levantar y Bajar proyectos backend
crear una directorio por cada backend en /opt
```
mkdir back-bienes
```
Ingresar al directorio creado y crear dos archivos.
1. deploy_back-bienes.sh
Archivo destinado para levantar el proyecto.
Agregar el sigiuente script:
```
cd /opt/siare/bienes
FILE=$(ls -l| grep jar |awk '{print $9}')
/usr/lib/jvm/jdk-17-oracle-x64/bin/java -server -Xms512M -Xmx512M -jar $FILE --config-import=configserver:http://configserver.hacienda.gov.py:8885/ --config-uri=http://configserver.hacienda.gov.py:8885/ --spring.cloud.config.fail-fast=true --spring.profiles.active=lab --spring.cloud.config.username=lab --spring.cloud.config.password={PASS}
```
Para correr el script, ejecutamos:
```
sh deploy_back-bienes.sh &
```
2. kill_back-bienes.sh
Agregar el sigiuente script:
```
process_id=`/bin/ps -fu $USER| grep "bienes" | grep -v "grep" | awk '{print $2}'`
if [ -z "$process_id" ]
then
echo "\$process_id not running"
else
echo $process_id
kill -9 $process_id
fi
```
Para correr el script, ejecutamos:
```
sh deploy_back-bienes.sh &
```