2016-10-05 13 views
5

Oto workflow chcę osiągnąć:Bitbucket Pipeline jak skonfigurować agenta ssh wdrożyć na zdalnym serwerze

  1. popełnić kod
  2. bitbucket testu run rurociąg na moim Döcker publicznego wizerunku rurociągu
  3. bitbucket wykonuje skrypt ansible do wdrożenia na moim publicznym obrazie dockera

Pierwsze 2 kroki działają poprawnie, ale tutaj jest problem: Jak/gdzie powinienem przechowywać mój klucz prywatny s aby umożliwić ansams ssh na mój serwer zdalny za pośrednictwem agenta ssh?

Jestem trochę niechętny do przechowywania klucza prywatnego w ustawieniach env Pipeline, ponieważ wszyscy inni mają dostęp administracyjny do repozytu.

Jest podobne pytanie zadane here, ale odpowiedź sugeruje ustawienie kluczy w oknie dokowanym i użycie prywatnego repo, które jest nieco inne niż moje.

Odpowiedz

0

Skonfigurowałem podobny proces i użyłem zmiennych środowiskowych potoku, jest to pole wyboru, aby zabezpieczyć wartość, więc nie musisz się martwić o to, że inni go oglądają.

SET UP jest całkiem proste:

  • Base64 zakodować klucz prywatny i przechowywać go w zmiennej środowiskowej w Bitbucket
  • Potwierdza „my_known_hosts” plik na kodzie, który zawiera SSH publicznego klucz zdalnego hosta.

Następnie w pliku bitbucket-pipelines.yml skonfigurować known_hosts i klucz:

- mkdir -p ~/.ssh 
- cat my_known_hosts >> ~/.ssh/known_hosts 
- (umask 077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa) 

Pełna dokumentacja dostępna jest tutaj https://confluence.atlassian.com/bitbucket/access-remote-hosts-via-ssh-847452940.html

2

Można teraz skonfigurować klucze SSH pod ustawień rurociągu, tak aby nie musisz używać zmiennych środowiskowych i kopiować do niektórych lokalizacji w kontenerze. Klucz prywatny nie jest w ogóle pokazywany.

Pod

Settings -> Pipelines -> SSH keys

Trzeba by dostać klucz publiczny do pliku pojemników produkcyjnych known_hosts.

Powiązane problemy