Glasscom
Hosting
Cluster AWS ECS
olicy-prod-c01
Repo Gitlab
https://gitlab.com/olicy/infra/aws/olicy-prod-c01-cf/-/tree/main
URL Prod
Installation / Configuration
Au format AWS Cloudformation
- Créé le secret pull image docker
aws secretsmanager create-secret \
--name glasscom/GitlabDeployToken \
--description "Deploy Token GitLab pour glasscom ECS" \
--secret-string '{"username":"aws-ecs-glasscom-token","password":"gldt-XXXXX"}' \
--region eu-west-3
- Configurer l'ARN du TG de l'ALB (TargetGroupArnGlasscom)
Dans le fichier nested/ecs-service-glasscom.yaml
- Configurer le endpoint du cluster RDS partagé pour Glasscom (SharedDBClusterEndpoint)
Dans le fichier nested/ecs-service-glasscom.yaml
- Configurer l'ARN du cluster ECS (ClusterArn)
Dans le fichier nested/ecs-service-glasscom.yaml
- Créé le secret par defaut pour les BeDigital
secret default bedigital
aws secretsmanager create-secret \
--name bedigital/DefaultSecret \
--description "Secret default BeDigital" \
--secret-string '{
"APP_EMAIL":"delivery@olicy.fr",
"AWS_BUCKET":"bedigital-prod-eu",
"MAIL_FROM_ADDRESS":"noreply@be-digital.ap",
"MAIL_HOST":"smtp-relay.brevo.com",
"MAIL_MAILER":"smtp",
"MAIL_USERNAME":"aurelien@hubs.fr",
"MAIL_PASSWORD":"xsmtpsib-xxxxx",
"MAIL_PORT":"587"
}' \
--region eu-west-3
- Créer la base de données manuellement en ce connectant au serveur Aurora
warning
Utiliser le bastion SSH
CREATE DATABASE your_database_name;
CREATE USER 'nom_utilisateur'@'%' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'username'@'%';
FLUSH PRIVILEGES;
- Créer l'utilisateur iam
aws iam create-user --user-name glasscom-9kpe4pc3
aws iam add-user-to-group --user-name glasscom-9kpe4pc3 --group-name BeDigitalProd
aws iam create-access-key --user-name glasscom-9kpe4pc3
- Créer credential pour l'application
aws secretsmanager create-secret \
--name glasscom/AppConfig \
--description "Config sensitives pour Glasscom" \
--secret-string '{
"app_key":"base64:xMoeJRVLeN5PFVAaHzkJ+edMHslQp9yc5F2vVoWTKJ8=",
"db_name":"xxxx-xxxx",
"db_username":"xxxx-xxxx",
"db_password":"xxxxx",
"s3_access_key":"XXXX",
"s3_secret_key":"XXXX",
"LETRECO_AUTH_IDENT":"XXX",
"LETRECO_AUTH_PASSWORD":"XXX",
"LETRECO_AUTH_DOMAIN":"XXX",
"LETRECO_API_URL":"XXX",
"MERCI_FACTEUR_ACCESS_TOKEN":"XXX",
"MERCI_FACTEUR_API_URL","XXX",
"MERCI_FACTEUR_SERVICE_ID":"XXX",
"MERCI_FACTEUR_WEBHOOK_SECRET":"XXX",
"RINGOVER_API_KEY":"XXX"
}' \
--region eu-west-3
- Mettre à jour la stack pour indiquer l'ARN de AppConfig et DefaultSecret
Dans le fichier nested/ecs-service-glasscom.yaml
- Déployer la stack
aws cloudformation create-stack \
--stack-name olicy-prod-c01-glasscom-service \
--template-body file://nested/ecs-service-glasscom.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--region eu-west-3
Mettre à jour la stack
aws cloudformation update-stack \
--stack-name olicy-prod-c01-glasscom-service \
--template-body file://nested/ecs-service-glasscom.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--region eu-west-3
Débloquer lorsque le rollback n'a pas terminé correctement
aws cloudformation continue-update-rollback --stack-name olicy-prod-c01-glasscom-service --resources-to-skip ServiceGlasscomWorker --profile XXX
Crontab / Worker
Crontab
Il y a le cron php artisan schedule:run qui est lancé toutes les 10 minutes.
Worker
Un worker est en place qui surveille la queue.
Architecture
