Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
git:deploy-automatique [06/12/2021 14:55] seb |
git:deploy-automatique [06/12/2021 14:57] (Version actuelle) seb |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n>200}} | ||
====== Intégration continue Gitlab ====== | ====== Intégration continue Gitlab ====== | ||
+ | |||
+ | Pour l'intégration continue, l'utilisateur pour les clés SSH est ''acainformatique'', voir le mot de passe dans [[https://keeweb.app.local|keeweb]] | ||
===== Sur le serveur de destination ===== | ===== Sur le serveur de destination ===== | ||
Ligne 28: | Ligne 31: | ||
chmod 600 ~/.ssh/authorized_keys | chmod 600 ~/.ssh/authorized_keys | ||
</code> | </code> | ||
+ | |||
===== Sur Gitlab ===== | ===== Sur Gitlab ===== | ||
- | Allez dans dans le projet puis `Settings` / `Repository` puis ajouter dans `Deploy Keys` le contenu du fichier `id_ecdsa.pub` du serveur de destination. | + | Allez dans dans le projet puis ''%%Settings%%'' / ''%%Repository%%'' puis ajouter dans ''%%Deploy Keys%%'' le contenu du fichier ''%%id_ecdsa.pub%%'' du serveur de destination. |
- | Toujours dans le projet, allez dans `Settings` / `CI/CD` / `Variables` .Ajoutez une variable `DEPLOY_KEY` et collez le contenu du fichier `id_ecdsa` que vous avez généré (ou récupéré) du serveur de destination. | + | Toujours dans le projet, allez dans ''%%Settings%%'' / ''%%CI/CD%%'' / ''%%Variables%%'' .Ajoutez une variable ''%%DEPLOY_KEY%%'' et collez le contenu du fichier ''%%id_ecdsa%%'' que vous avez généré (ou récupéré) du serveur de destination. |
- | Ajoutez également une variable `SERVER_USER` contenant l'utilisateur SSH du serveur et une variable `SERVER_HOSTNAME` contenant le nom du serveur. | + | Ajoutez également une variable ''%%SERVER_USER%%'' contenant l'utilisateur SSH du serveur et une variable ''%%SERVER_HOSTNAME%%'' contenant le nom du serveur. |
- | Pour finir ajouter une variable `PROJECT_PATH` contenant le chemin vers la racine du projet sur le serveur de destination. | + | Pour finir ajouter une variable ''%%PROJECT_PATH%%'' contenant le chemin vers la racine du projet sur le serveur de destination. |
A la racine du projet, créez un fichier .gitlab-ci.yml et mettez y par exemple : | A la racine du projet, créez un fichier .gitlab-ci.yml et mettez y par exemple : | ||
Ligne 47: | Ligne 51: | ||
before_script: | before_script: | ||
- | - mkdir -p ~/.ssh && touch ~/.ssh/id_ecdsa && chmod 600 ~/.ssh/id_ecdsa | + | - mkdir -p ~/.ssh |
+ | - echo -e "$DEPLOY_KEY" > ~/.ssh/id_ecdsa | ||
+ | - chmod 600 ~/.ssh/id_ecdsa | ||
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' | - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' | ||
+ | |||
production: | production: | ||
stage: deploy | stage: deploy | ||
script: | script: | ||
- | - echo -e "$DEPLOY_KEY" > ~/.ssh/id_ecdsa | ||
- ssh $SERVER_USER@$SERVER_HOSTNAME "cd $PROJECT_PATH && | - ssh $SERVER_USER@$SERVER_HOSTNAME "cd $PROJECT_PATH && | ||
git checkout . && | git checkout . && | ||
Ligne 74: | Ligne 79: | ||
En cas de runner local utilisant docker sur le serveur distant, il est possible de conserver le même script à la différence qu'il faut récupérer l'ip de la machine host. Cela permet de filtrer le port 22 par ip en déclarant la plage d'ip de docker. | En cas de runner local utilisant docker sur le serveur distant, il est possible de conserver le même script à la différence qu'il faut récupérer l'ip de la machine host. Cela permet de filtrer le port 22 par ip en déclarant la plage d'ip de docker. | ||
- | Dans le fichier `.gitlab-ci.yml` on va ajouter une ligne dans `before_script` puis modifier l'appel ssh pour utiliser l'ip du host qu'on récupère : | + | Dans le fichier ''%%.gitlab-ci.yml%%'' on va ajouter une ligne dans ''%%before_script%%'' puis modifier l'appel ssh pour utiliser l'ip du host qu'on récupère : |
<code> | <code> | ||
Ligne 91: | Ligne 96: | ||
<code> | <code> | ||
iptables -I INPUT -s 172.0.0.0/8 -j ACCEPT | iptables -I INPUT -s 172.0.0.0/8 -j ACCEPT | ||
+ | </code> | ||
+ | |||
+ | En cas de blocage des autres ports : | ||
+ | |||
+ | <code> | ||
+ | # Docker | ||
+ | iptables -I INPUT -s 172.0.0.0/8 -j ACCEPT # Docker | ||
+ | iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE | ||
+ | iptables -t filter -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | ||
+ | iptables -t filter -A FORWARD -i docker0 ! -o docker0 -j ACCEPT | ||
+ | iptables -t filter -A FORWARD -i docker0 -o docker0 -j ACCEPT | ||
</code> | </code> |