--- 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 & ```