250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유튜브 API
- subdag
- 공분산
- airflow subdag
- youtube data
- correlation
- top_k
- session 유지
- requests
- BigQuery
- hadoop
- XAI
- Airflow
- flask
- UDF
- GenericGBQException
- Counterfactual Explanations
- TensorFlow
- API
- 상관관계
- grad-cam
- tensorflow text
- spark udf
- API Gateway
- login crawling
- integrated gradient
- chatGPT
- Retry
- gather_nd
- GCP
Archives
- Today
- Total
데이터과학 삼학년
[Jenkins] remote ssh 연결하여 jenkins에서 다른 ssh에 명령 날리기 (feat. gcloud compute ssh, gcloud compute scp, jenkins) 본문
DevOps
[Jenkins] remote ssh 연결하여 jenkins에서 다른 ssh에 명령 날리기 (feat. gcloud compute ssh, gcloud compute scp, jenkins)
Dan-k 2020. 8. 27. 18:21반응형
jenkins를 이용해 job을 관리한다.
이때 내가 구성한 pipeline의 stage 마다 실행될 환경이 local이 아닌 remote ssh일 경우가 있다.
이때 어떻게 연결해야 할까?
만약 GCP를 쓰고 있고 GCP의 compute engine에 연결하고 싶다면
gcloud compute ssh 커맨드를 참고하면 된다.
## example-instance에 접속
gcloud compute ssh example-instance --zone=us-central1-a
gcloud compute ssh [USER@]INSTANCE [--command=COMMAND] [--container=CONTAINER] [--dry-run] [--force-key-file-overwrite] [--plain] [--ssh-flag=SSH_FLAG] [--ssh-key-file=SSH_KEY_FILE] [--strict-host-key-checking=STRICT_HOST_KEY_CHECKING] [--zone=ZONE] [--internal-ip | --tunnel-through-iap] [--ssh-key-expiration=SSH_KEY_EXPIRATION | --ssh-key-expire-after=SSH_KEY_EXPIRE_AFTER] [GCLOUD_WIDE_FLAG …] [-- SSH_ARGS …]
자세한 사항은 아래 링크 참고
https://cloud.google.com/sdk/gcloud/reference/compute/ssh
이뿐만 아니라 local의 파일을 remote ssh에 붙이고 싶다면
gcloud compute scp 커맨드를 참고하자
gcloud compute scp --recurse example-instance:~/narnia ~/wardrobe
파이프라인을 아래와 같이 만들면
코드를 git에서 읽어온 다음 local에 저장된 code를 다시 remote ssh로 copy한다.
그 이후 remote ssh에서 특정 명령을 실행하는 코드다
node {
timeout(time:30, unit:'MINUTES') {
stage('Code_Sync') {
retry(3) {
sh script:"""
if [ ! -d ".git" ]; then
rm -rf ./*
git clone -b preprocess --single-branch git@00.000.0.0:code/preprocess ./
else
git pull origin preprocess
fi
"""
}
}
}
stage('Copy file to Remote SSH') {
sh """
eval `ssh-agent`
ssh-add ~/.ssh/google_compute_engine
gcloud compute scp --project="project" --zone="us-central1-a" \
--recurse /var/lib/jenkins/workspace/preprocess root@example-instance:/home/ubuntu
"""
sh """
echo Completed copy files from local to remote ssh
"""
}
stage('Compute remote ssh') {
sh """
gcloud compute ssh example-instance --project='project'
"""
}
}
여기서 주의할 것은 연결하고자하는 ssh 에서 permission error가 나올 수 있다.
이때는 root@<instance명> 으로 입력해주면 된다!!!
https://cloud.google.com/sdk/gcloud/reference/compute/scp
만약 연결하는 ssh이 GCE 가 아니라면
젠킨스에서 직접 제공해주는
SSH Pipeline Steps 을 이용해서 파이프라인을 구성해 주면 된다
예제
def remote = [:]
remote.name = 'test'
remote.host = 'test.domain.com'
remote.user = 'root'
remote.password = 'password'
remote.allowAnyHosts = true
stage('Remote SSH') {
sshCommand remote: remote, command: "ls -lrt"
sshCommand remote: remote, command: "for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done"
}
https://www.jenkins.io/doc/pipeline/steps/ssh-steps/
728x90
반응형
LIST
'DevOps' 카테고리의 다른 글
젠킨스 파이프라인 관리 (공통화 활용) (0) | 2020.11.09 |
---|---|
젠킨스 remote ssh pipeline (feat. nested parallel, remote ssh, gcloud compute ssh) (0) | 2020.08.28 |
젠킨스 workspace clean-up 설정 변경 (feat. 난 clean-up을 원치 않아!) (1) | 2020.06.05 |
Airflow VS Jenkins (0) | 2020.06.04 |
Airflow (0) | 2020.06.03 |
Comments