- Projet Annuel 2023 - Table of contents
- Pierre SARRET
- Alexandre HELETA
- Florentin BEAULIEU
- Lucas DEBURE
Nous sommes la société de prestation informatique RapidiCloud.
Mandatés par le client TransExpress, nous devons construire à neuf une infrastructure cloud-compatible pour répondre aux besoins de leur entreprise
- Téléphonie
- Mailing
- Un site web dynamique avec beaucoup de traffic
Le client souhaite installer son infrastructure sur AWS, en infra-as-code le plus possible. Il souhaite également une documentation du projet complète et qualitative, afin qu'il puisse comprendre toute l'installation et réinstaller les travaux lui même au besoin.
Plus de détails dans la suite du sujet dans les documents fonctionnels.
Pour des raisons de compréhension technique entre toutes les équipes intervenantes, le reste de cette documentation sera écrite en Anglais.
- Terraform >=1.3.x
- Ansible
- aws_ec2 module
For AWS Academy Credentials scrapper :
- Python3
- boto3
- botocore
- bs4
- requests
- selenium
- dotenv
- rich
- X Server (for Selenium, althrough not really used, so you don't need a full desktop environment)
- Chromium or Chrome
Debian :
sudo apt install ansible python3-botocore python3-boto3 python3-bs4 python3-request python3-selenium python3-dotenv python3-rich
ansible-galaxy collection install amazon.aws
ansible-galaxy collection install community.mysql
- Copy
backend.conf.exemple
tobackend.conf
and edit the values with your Scaleway credentials - Run
terraform init -backend-config=backend.conf
to verify the backend configuration and if it's working
terraform providers lock \
-platform=windows_amd64 \
-platform=darwin_amd64 \
-platform=linux_amd64 \
-platform=darwin_arm64 \
-platform=linux_arm64
- Fetch the AWS credentials using AWS Academy Credentials scrapper script
- Copy
terraform.tfvars.exemple
toterraform.tfvars
and edit the values with your AWS Academy credentials - Use
terraform plan
to preview changes - Use
terraform apply
to apply changes
- In
Ansible/
folder, copy each .example files to .yml files and edit the values with the required credentials (AWS, Remote database and various services configuration) - Run Ansible Playbook to configure each instance you want to configure.
Playbooks are configured to match the right EC2 tags, so it automatically configure the targeted service.
For exemple:
ansible-playbook -i ansible/aws_ec2.yml ansible/dolibarr-playbook.yml
Will configure Dolibarr EC2 instance.
- In 'deploy-ec2/deploy-scripting/vm-nextcloud.tftpl' file, this running the deploy script for nextcloud.
sudo docker compose up --build -d
to build the docker image and run the container. Nextcloud is accessible on https://host.transexpress.ovh/.
The AWS Academy Learner Lab is giving new access tokens every 4 hours and at every lab start, so we need to scrap the token from the lab page automatically to prevent copying the values each time (very time consumming)
We are using Selenium with Chromium webdriver & BeautifulSoup python module for the web scrapping.
ℹ️ The script does insert new credentials into
terraform.tfvars
file andansible/aws_ec2.yml
inventory description file
- Copy
.env.exemple
to.env
and edit the values with your AWS Academy credentials - Run
python3 scrape_aws_credentials.py
You will find each module documentation in the /docs folder. Direct links :
- Ansible x Terraform x AWS 1 https://blog.stephane-robert.info/post/terraform-gitlab-aws-ansible/
- Ansible x Terraform x AWS 2 https://dev.to/mariehposa/how-to-deploy-an-application-to-aws-ec2-instance-using-terraform-and-ansible-3e78