Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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`Repositorypuis ajouter dans `Deploy Keysle contenu du fichier ​`id_ecdsa.pubdu 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_KEYet collez le contenu du fichier ​`id_ecdsaque 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_USERcontenant l'​utilisateur SSH du serveur et une variable ​`SERVER_HOSTNAMEcontenant 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_PATHcontenant 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.ymlon va ajouter une ligne dans `before_scriptpuis 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>​
  • Dernière modification: 06/12/2021 14:57