Skip to content

Commit

Permalink
feat: tdb preprod (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
moroine authored Apr 30, 2024
1 parent b88499d commit 5189881
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 21 deletions.
28 changes: 15 additions & 13 deletions .bin/commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,21 @@ function system:setup:initial() {
export ANSIBLE_HOST_KEY_CHECKING=False
firewall:setup "$PRODUCT_NAME" "$ENV_NAME"

# Le serveur MongoDb est hébergé sur le service Public Cloud Compute d'OVH
# Il n'est pas possible de se connecter en SSH avec un mot de passe, il faut utiliser une clé SSH
if [[ "$PRODUCT_NAME" == "mongodb" ]]; then
"$SCRIPT_DIR/deploy_ssh_keyfile.sh"
export ANSIBLE_PRIVATE_KEY_FILE="$ROOT_DIR/.bin/id_rsa_deploy.key"
export ANSIBLE_BECOME_PASS="-"
system:setup "$PRODUCT_NAME" "$ENV_NAME" "$@" --user ubuntu
rm -f "${ANSIBLE_PRIVATE_KEY_FILE}"
else
system:setup "$PRODUCT_NAME" "$ENV_NAME" "$@" --user ubuntu --ask-pass
fi;
read -p "Do you want to setup the server with a RSA key? [Y/n]" response

case $response in
[yY][eE][sS]|[yY]|"")
"$SCRIPT_DIR/deploy_ssh_keyfile.sh"
export ANSIBLE_PRIVATE_KEY_FILE="$ROOT_DIR/.bin/id_rsa_deploy.key"
export ANSIBLE_BECOME_PASS="-"
system:setup "$PRODUCT_NAME" "$ENV_NAME" "$@" --user ubuntu
rm -f "${ANSIBLE_PRIVATE_KEY_FILE}"
;;
*)
system:setup "$PRODUCT_NAME" "$ENV_NAME" "$@" --user ubuntu --ask-pass
return
;;
esac
}

function system:user:remove() {
Expand All @@ -84,7 +88,6 @@ function system:user:remove() {
local USERNAME=${1:?"Merci de préciser l'utilisateur à supprimer"}; shift;

product:validate:env "$PRODUCT_NAME" "$ENV_NAME"
firewall:setup "$PRODUCT_NAME" "$ENV_NAME"

"$SCRIPT_DIR/run-playbook.sh" "clean.yml" "$PRODUCT_NAME" "$ENV_NAME" --extra-vars "username='${USERNAME}'" "$@"
}
Expand Down Expand Up @@ -225,7 +228,6 @@ function ssh:config() {
if [ -z "$ips" ]; then exit 1; fi

local hostnames=($("${SCRIPT_DIR}/known_hosts/get_ansible_var.sh" "${PRODUCT_NAME}" "host_name"))

read -p "What is your username? " username

local config=""
Expand Down
8 changes: 5 additions & 3 deletions .bin/scripts/ovh/ovh-nodejs-client/firewall.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ async function configureFirewall(client, ip, product, env) {
const config = await getConfig();
const sources = [...config["vpn-production"]];
if (env.startsWith("recette")) {
const keys = Object.keys(config).filter((key) => key.endsWith("recette"));
const keys = Object.keys(config).filter((key) => key.endsWith("recette") || key.endsWith("preprod"));
sources.push(...keys.map((key) => config[key]).flat());
}
if (env.startsWith("bal")) {
Expand Down Expand Up @@ -235,10 +235,12 @@ async function closeService(client, ip) {
}
}

async function getAllIp(client, ip, product) {
async function getAllIp(client, ip) {
const ipData = await client.requestPromised("GET", `/ip/${ip}`);

const cloudProjects = await client.requestPromised("GET", `/cloud/project`);

if (product === "mongodb") {
if (cloudProjects.includes(ipData.routedTo.serviceName)) {
const instances = await client.requestPromised("GET", `/cloud/project/${ipData.routedTo.serviceName}/instance`);
const instance = instances.find(instance => instance.ipAddresses.some(i => i.ip === ip));

Expand Down
2 changes: 1 addition & 1 deletion .bin/scripts/ovh/ovh-nodejs-client/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ cli
.action(async (ip, product, env, { key }) => {
let client = await getClient(key);

const ips = await getAllIp(client, ip, product);
const ips = await getAllIp(client, ip);

for (const ipV4 of ips) {
await configureFirewall(client, ipV4, product, env);
Expand Down
7 changes: 3 additions & 4 deletions docs/provisionning.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,10 @@ Pour configurer l'environnement, il faut lancer la commande suivante :
.bin/mna ssh:config <nom_produit>
```

L'utilisateur `ubuntu` est un utilisateur créé par défaut par OVH, le mot de passe de ce compte est envoyé par email à
L'utilisateur `ubuntu` est un utilisateur créé par défaut par OVH, le mot de passe de ce compte est envoyé par email à l'administrateur du compte OVH et est également disponible dans les emails de service : https://www.ovh.com/manager/dedicated/#/useraccount/emails

l'administrateur du compte OVH et est également disponible dans les emails de

service : https://www.ovh.com/manager/dedicated/#/useraccount/emails
> ![INFORMATION]
> Dans le cas d'une instance Public Cloud, la connection se fait via la clé ssh contenu dans le vault. Vous n'aurez donc pas besoin du mot de passe.
Pour finaliser le création de l'environnement, vous devez vous connecter pour initialiser votre utilisateur :

Expand Down
7 changes: 7 additions & 0 deletions products/tdb/env.ini
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ dns_name=cfas.apprentissage.beta.gouv.fr
host_name=tableau-de-bord-production
env_type=production

[preprod]
147.135.140.81
[preprod:vars]
dns_name=tableau-de-bord-preprod.apprentissage.beta.gouv.fr
host_name=tdb-preprod
env_type=preprod

[recette]
141.95.161.235
[recette:vars]
Expand Down

0 comments on commit 5189881

Please sign in to comment.