Article original Publié le : 16 septembre 2022 Mise à jour le : 16 septembre 2022 |
Dans le but de comprendre et d’utiliser au mieux Gitlab, ce simple exo sur la création de variables qui serviront à se connecter sur une machine distante pour y déposer un fichier.
Les variables peuvent être global ou par projet.
La doc https://docs.gitlab.com/ee/ci/variables/index.html
Pour le test, générer une paire de clé avec ssh-keygen.
Pousser la clé pub sur le profil de la vm distante ~/.ssh/authorized_keys.
Créer les 3 variables
IP_VM01 = nom ou ip de la vm distante
SSH_PRIV_KEY = le contenu de la clé privée préalablement généré
SSH_USER = L’utilisateur distant
Le contenu du fichier .gitlab-ci.yml
Édit : 16 septembre 2022 : Correction condition echo par ssh-keyscan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
stages: - before_script - deploy stage: stage: before_script before_script: - eval $(ssh-agent -s) - echo "$SSH_PRIV_KEY" | ssh-add - - if grep -q $IP_VM01 ~/.ssh/known_hosts; then echo ''; else ssh-keyscan $IP_VM01 >> ~/.ssh/known_hosts; fi tags: - ssh stage: deploy script: - scp /etc/hosts $SSH_USER@$IP_VM01:/tmp - ssh $SSH_USER@$IP_VM01 "echo '10.10.2.100 test' >> /tmp/hosts" - ssh $SSH_USER@$IP_VM01 "cat /tmp/hosts" tags: - ssh |
Résultat du pipeline
Le test est très basic, le but étant de créer des variables pour pouvoir les réutiliser sans limites
Le premier stage est pour préparer la connexion du runner.
Le second, c’est une simple copie du fichier hosts et son implémentation pour donner un peu de matière à l’exemple.
Source :
https://filip5114.github.io/GitLab-CI-Pipeline-SSH/