Table of Contents


Git

instalar CLI de GIT para poder ejecutar comandos en la consola.

https://git-scm.com/download/mac

MONGO COMPASS

Para conectarse a la base de datos Mongo, usar estas URLs de conexión por ambiente

Descarga en:

URLs de conexión


Ambiente

URL Conexión

DESARROLLO

mongodb://dev-read-write:dOe1MrEKWIiW5opm@cluster0-shard-00-00-b4rlx.mongodb.net:27017,cluster0-shard-00-01-b4rlx.mongodb.net:27017,cluster0-shard-00-02-b4rlx.mongodb.net:27017/transaction-db?authSource=admin&replicaSet=Cluster0-shard-0&w=majority&readPreference=primary&retryWrites=true&ssl=true

QA

mongodb+srv://qa-read-write:NsJR3J2qanSztynq@pagopop-qa.dm776.mongodb.net/account-db?authSource=admin&replicaSet=atlas-l10brw-shard-0&w=majority&readPreference=primary&retryWrites=true&ssl=true

STAGING

mongodb+srv://staging-read-write:eVSXBhTuD2PMuDG7@pagopop-staging-ffy2d.mongodb.net/transaction-db?authSource=admin&replicaSet=pagopop-staging-shard-0&w=majority&readPreference=primary&retryWrites=true&ssl=true


AWS

Create AWS Access Keys

To get or create your access key ID and secret access key:

  1. Login to aws https://console.aws.amazon.com/iam/ using iam user option

    1. AccountId: 657809478030

  2. Go to the IAM console at https://console.aws.amazon.com/iam/

  3. On the navigation menu, choose Users.

  4. Click your IAM user name (not the check box).

  5. Open the Security credentials tab, and then choose Create access key.

To see the new access key, choose Show. Your credentials resemble the following:

1 Access key ID: AKIAIOSFODNN7EXAMPLE 2 Secret access key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY



AWS MFA SETUP

Setting Up AWS MFA device

To enable MFA in AWS:

  1. Go to the IAM console at https://console.aws.amazon.com/iam/

  2. On the navigation menu, choose Users.

  3. Click your IAM user name (not the check box).

  4. Under Assigned MFA Device, click Manage and follow instructions to set it up

  5. Your device AWS DEVICE ARN is shown there e.g. arn:aws:iam::11111111110:mfa/user.lastname (Virtual)


Configurar roles

Después de que te hayan sido entregadas las credenciales de aws y hayas configurado 2FA, configurar los roles.

Haz click en cada una de las siguientes URLs:

dev:  https://signin.aws.amazon.com/switchrole?roleName=developers&account=766717554267

qa/staging:  https://signin.aws.amazon.com/switchrole?roleName=developers&account=549923646310

prod:  https://signin.aws.amazon.com/switchrole?roleName=sre-engineering-l0&account=540086856298

Saldrá la siguiente pantalla donde deberás de configurar con un nombre para identificar el ambiente y un color:


Una vez configurados los roles desconéctate de la cuenta y vuelve a ingresar.

Los roles podrás cambiarlos en la parte superior derecha del portal de aws, asegúrate siempre estar en la región de N. Virginia.

Herramientas a instalar

Java

Para zsh:

1% echo 'export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_abc.jdk/Contents/Home' >> ~/.zshenv

Para bash:

1$ echo 'export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_abc.jdk/Contents/Home' >> ~/.bash_profile

Visual Studio Code

https://code.visualstudio.com/download

Si estas acostumbrado a los shortcuts de intellij, puedes configurarselos a visual studio code siguiendo las instrucciones del siguiente plugin https://marketplace.visualstudio.com/items?itemName=k--kato.intellij-idea-keybindings

y usando el siguiente archivo

brew

Este paso instalara los Command Line Tools for Xcode lo cual podría tardar varios minutos pero servirá para otras instalaciones.

1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

pip

Una vez que Command Line Tools for Xcode esta instalado correr los siguientes comandos.


1curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2python3 get-pip.py

docker

https://hub.docker.com/editions/community/docker-ce-desktop-mac/

gradle

1brew install gradle

awscli

Install VERSION 2

Configurar (reemplazar Access Key ID, Secret y ARN(arn:aws:iam::657809478030:user/ramon.valdez) por los obtenidos anteriormente en la configuración de AWS: “Create AWS Access Keys”), los mismos valores para todos los ambientes:

DEV:

1aws configure --profile developers-dev-long-term 2AWS Access Key ID [None]: <access_key> 3AWS Secret Access Key [None]: <secret_access_key> 4Default region name [None]: us-east-1 5Default output format [None]: json 6 7echo 'aws_mfa_device = <user_arn>' >> ~/.aws/credentials 8echo 'assume_role = arn:aws:iam::766717554267:role/developers' >> ~/.aws/credentials

QA:

1aws configure --profile developers-qa-long-term 2AWS Access Key ID [None]: <access_key> 3AWS Secret Access Key [None]: <secret_access_key> 4Default region name [None]: us-east-1 5Default output format [None]: json 6 7echo 'aws_mfa_device = <user_arn>' >> ~/.aws/credentials 8echo 'assume_role = arn:aws:iam::549923646310:role/developers' >> ~/.aws/credentials

STAGING:

1aws configure --profile developers-staging-long-term 2AWS Access Key ID [None]: <access_key> 3AWS Secret Access Key [None]: <secret_access_key> 4Default region name [None]: us-east-1 5Default output format [None]: json 6 7echo 'aws_mfa_device = <user_arn>' >> ~/.aws/credentials 8echo 'assume_role = arn:aws:iam::549923646310:role/developers' >> ~/.aws/credentials

PROD:

1aws configure --profile developers-prod-long-term 2AWS Access Key ID [None]: <access_key> 3AWS Secret Access Key [None]: <secret_access_key> 4Default region name [None]: us-east-1 5Default output format [None]: json 6 7echo 'aws_mfa_device = <user_arn>' >> ~/.aws/credentials 8echo 'assume_role = arn:aws:iam::540086856298:role/developers' >> ~/.aws/credentials

finalmente validar que existan las 4 ambientes en el archivo:

1vi ~/.aws/credentials

luego agrega estos dos perfiles adicionales short-term usando tu <access_key> y <secret_access_key>:

1[developers-dev] 2assumed_role = True 3aws_access_key_id = <access_key> 4aws_secret_access_key = <secret_access_key> 5aws_session_token = FwoGZXIvYXdzENz//////////wEaDN4nOF6pnWgVc4mjKCK0AU/JjqLG58L/z1kvTjXgUL8Q0d1/ZUasmh9bKxgisVuGEvoSp5gXxljcSUD0Xr5kHJ6pGm/hwpa2rwf0R1ihzsoF5xUXzJDsO3g/CtA7MZbVdDPbWmIlJUYXh8yHQdxTNjGiQi1xq5S6RY+GvmoiNw9AqJ5hQPDsXUU29fGLTxODoWCwuiiv9roCURZgojMDMQhIqheYCZ8rHqjMJRWtQxNTn1wPjGq0GW4XD8lYJh4fOZeZzCip99uLBjItLPtSZfINYnqnpCtUILrFWcQoyzcNu4I3o67il0GsBQ7LelT+zNLnof0NrFrg 6aws_security_token = FwoGZXIvYXdzENz//////////wEaDN4nOF6pnWgVc4mjKCK0AU/JjqLG58L/z1kvTjXgUL8Q0d1/ZUasmh9bKxgisVuGEvoSp5gXxljcSUD0Xr5kHJ6pGm/hwpa2rwf0R1ihzsoF5xUXzJDsO3g/CtA7MZbVdDPbWmIlJUYXh8yHQdxTNjGiQi1xq5S6RY+GvmoiNw9AqJ5hQPDsXUU29fGLTxODoWCwuiiv9roCURZgojMDMQhIqheYCZ8rHqjMJRWtQxNTn1wPjGq0GW4XD8lYJh4fOZeZzCip99uLBjItLPtSZfINYnqnpCtUILrFWcQoyzcNu4I3o67il0GsBQ7LelT+zNLnof0NrFrg 7expiration = 2021-10-25 19:47:05 8assumed_role_arn = arn:aws:iam::766717554267:role/developers 9 10[developers-qa] 11assumed_role = True 12assumed_role_arn = arn:aws:iam::549923646310:role/developers 13aws_access_key_id = <access_key> 14aws_secret_access_key = <secret_access_key> 15aws_session_token = FwoGZXIvYXdzEN3//////////wEaDPQjUqYduHVll0zlKCK0AcAQ8uhpJ2IEqFYdJxKIiMpBKUms2r0pZcb7+61k8wrdp7O5LRZ9aBr20ShGCeZPKYuauFxlFUGriBDt9vEBbXejyDASdNdZB2wzSPvEGwvwusagwKase+gBZ+QRVV4Ed7XxPlc3y3rmGFNw0cYUEvKzH8MaZQ/9/TkDeGa5i6lBcxhzpFiOegVkacFNLnABFrCba7uzLT9x2GOmgaGj7QzvflS3H3TwoMaVGdm0wkBh7N0yDSiBl9yLBjItq+i1yE+X934m7q/apZnvRzi+Am0QqE049qeGu/paTzKoBEdPzyXycqqeKaL8 16aws_security_token = FwoGZXIvYXdzEN3//////////wEaDPQjUqYduHVll0zlKCK0AcAQ8uhpJ2IEqFYdJxKIiMpBKUms2r0pZcb7+61k8wrdp7O5LRZ9aBr20ShGCeZPKYuauFxlFUGriBDt9vEBbXejyDASdNdZB2wzSPvEGwvwusagwKase+gBZ+QRVV4Ed7XxPlc3y3rmGFNw0cYUEvKzH8MaZQ/9/TkDeGa5i6lBcxhzpFiOegVkacFNLnABFrCba7uzLT9x2GOmgaGj7QzvflS3H3TwoMaVGdm0wkBh7N0yDSiBl9yLBjItq+i1yE+X934m7q/apZnvRzi+Am0QqE049qeGu/paTzKoBEdPzyXycqqeKaL8 17expiration = 2021-10-25 20:54:41 18

aws-mfa

Crea un folder llamado bin en el to home user

1mkdir ~/bin 2chmod -R 777 ~/bin 3cd ~/bin
1git clone https://github.com/broamski/aws-mfa.git 2cd aws-mfa 3python setup.py install

Se recomienda este otro método más directo de instalación de aws-mfa sin usar git:

1pip install aws-mfa

kubectl

(install the version that matches the current kubernetes cluster version in AWS EKS 1.17

1curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/darwin/amd64/kubectl 2chmod +x ./kubectl 3cp ./kubectl $HOME/bin/kubectl

Copiar el siguiente archivo en la ruta ~/.kube

Scripts de acceso a aws y kubernetes

Copiar el siguiente archivo en la carpeta ~/bin

Dar permisos de ejecución al archivo

1chmod u+x ~/bin/login_aws.sh

Configurar los siguientes comandos en el archivo ~/.bash_profile

1export PATH=$HOME/bin:$PATH 2alias login_aws='login_aws.sh' 3alias aws_dev="export AWS_PROFILE=developers-dev" 4alias aws_qa="export AWS_PROFILE=developers-qa" 5alias aws_staging="export AWS_PROFILE=developers-staging" 6alias aws_prod="export AWS_PROFILE=developers-prod" 7alias aws_dr=¨"export AWS_PROFILE=developers-techlead-prod"

Ejecutar el comando para cargar las variables.

1source ~/.bash_profile

Dependiendo de la terminal due uses puede que necesites agregar este comando al archivo de configuración de tu terminal source ~/.bash_profile

configurar tokens de github

Configurar los siguientes comandos en los archivos:

  • ~/.bash_profile

  • ~/.zshenv

  • ~/.zshrc

1export PACKAGE_USERNAME=Spin-api-manager 2export PACKAGE_TOKEN=<solicitar al arquitecto>

Ejecutar el comando para cargar las variables.

source ~/.bash_profile


login aws y kubernetes

Si configuraste el archivo de login_aws ejecutar los siguientes comandos para validar el acceso a kubernetes


1login_aws dev 2aws_dev 3kubectl get pods

Ambientes


1DESARROLLO 2login_aws dev 3aws_dev 4 5QA 6login_aws qa 7aws_qa 8 9STAGING 10login_aws staging 11aws_staging

Si no lo configuraste, puedes correr estos comandos

1aws-mfa --profile developers-dev 2kubectl config use-context dev-context 3export AWS_PROFILE=developers-dev 4kubectl get pods

Notas:

  • para otros ambientes únicamente se debe de cambiar la palabra dev por (qa o staging)

  • para forzar renovar el token puedes usar la opción --force:
    aws-mfa --profile developers-dev --force

  • Si un error de credenciales invalidas aparece:

    • Verifica que tu archivo de ~/.aws/credentials este correcto

    • Si el error persiste regresa a la configuración de aws-mfa y reemplaza python setup.py install por python3 setup.py install

    • Asegurase de tener instalado pip pip --version

Node

Instalar el entorno de node



npm

El administrador de paquetes ya está habilitado en el entorno del node

yarn

1npm install -g yarn

serverless

1npm install -g serverless

DuoMobile (2FA)

install DuoMobile in your phone

Google Authenticator (2FA)

Instalar google autenticathor en tu celular

Clonar repositorios

Se debe contar con la configuración de SSH keys en github

1$ git clone git@github.com:fintechdigitalventure/pagopop-server.git 2$ git clone git@github.com:fintechdigitalventure/pagopop-serverless.git

Intellij Community Edition

Instala Intellij y configura la versión default a java 1.8

Plugins

Instalar los siguientes plugins del marketplace

  • Lombok *

  • Git commit message Helper

  • EnvFile

  • Gradle *

*Es posible que ya vengan incluidos en la versión

git-commit-template

Seguir la guia para configurar el plugin

Code styling SPIN

Todo código que se desarrolle deberá ser formateado con los estándares de styling definidos pod SPIN. Para facilitar esto, IntelliJ permite dar de alta el styler con los las configuraciones de formato de código que serán aplicadas por IntelliJ al presionar CMD + OPTION + L Es importante formatear el código antes de levantar cualquier PR.

Para configurar el styler de SPIN debes seguir estos pasos:

  1. Abrir las preferencias de IntelliJ

  2. Navegar a Editor → Code Style → Java → Engrane de Scheme → Import Scheme → IntelliJ IDEA code style XML

  3. Seleccionar el siguiente archivo:


PAGOPOP-SERVER

HUSKY Commit Validator

En el proyecto pagopop server se usa husky para validar el formato de los commits para instarlo correr el comando.

1npm install husky

Después de esto cada commit será validado con husky, si el formato no es correcto no permitirá el commit, para más información consultar

Configuración ambiente local

Seguir las instrucciones del README del codebase para configurar kubernetes , AWS etc en local y poder ejecutar los servicios en tu local .