Interview Work/Assignment
Note
Contexte : Nous avons besoin pour une startup en très forte croissance, d’un outil pour gérer ’ensemble
des secrets de l’entreprise. Pour cela, l’équipe a décidé de partir sur la technologie Hashicorp Vault.
Besoin :
Déployer une instance Vault sur une VM et sur le cloud de votre choix. Cette instance devra être accessible sur Internet
Créer un secret engine “production” et ajouter-y un secret
Créer un user technique simple permettant de se connecter au secret engine production
Avoir Vault en HA peut être un +
Requirements :
L’ensemble de la procédure devra être reproductible et automatisée
Choix & Mise en place
- Cloud Provider: Azure
- IaC: Terraform & Ansible
-
CI/CD: Gitlab-CI
-
Architecture HA minimaliste avec 5 serveurs
- 3 Nodes Consul Master
- 2 Nodes Vault: mode Active - StandBy
Endpoints d'accès au service:
- https://vault0agicap.westeurope.cloudapp.azure.com:8200/ui/
- https://vault1agicap.westeurope.cloudapp.azure.com:8200/ui/
- http://consul0agicap.westeurope.cloudapp.azure.com:8500/ui/
- ...
Repo Tree
.
├── ansible
│ ├── deploy.yml
│ ├── inventory
│ └── roles
│ └── vault_ha
│ ├── defaults
│ │ └── main.yml
│ ├── files
│ │ ├── node_policy.hcl
│ │ ├── node_policy_token.json
│ │ ├── vault_admin.hcl
│ │ ├── vault_policy.hcl
│ │ └── vault_policy_token.json
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── acl_consul.yml
│ │ ├── consul.yml
│ │ ├── main.yml
│ │ ├── secret.yml
│ │ └── vault.yml
│ └── templates
│ ├── consul.json
│ ├── consul.service
│ ├── vault.hcl
│ └── vault.service
├── docker
│ ├── Dockerfile
│ └── README.md
└── terraform
├── instance
│ ├── ansible_inventory.tf
│ ├── files
│ │ ├── cloud_init.sh
│ │ ├── id_rsa.pub
│ │ └── inventory.tpl
│ ├── instance.tf
│ ├── output.tf
│ └── variables.tf
├── main.tf
└── provider.tf