2021 07 17
2021-07-17¶
Powershell에서 AWS 인스턴스 접근 자동화¶
- 동기 - 매번 pem키 있는 폴더 들어가고, ssh -i ~~~ 명령어 치는게 번잡스러움 - 많은 인스턴스들을 사용하면서, 접속하는 ip들이 다양해짐 - 기도메타로 WAS겠지, DB겠지 하는 것에 대한 피로도 증가
- 해결 방법
- 참고 1: https://superuser.com/questions/1183386/setting-up-an-alias-for-ssh-command-in-windows-powershell
- 참고 2: https://www.howtogeek.com/50236/customizing-your-powershell-profile/
1. Alias로 ssh 명령을 쟁여두자
- 안타깝게도 다음과 같은 에러메시지 출력
-
Set-Alias : 매개 변수 이름 'i'이(가) 모호하므로 매개 변수를 처리할 수 없습니다. 일치하는 항목은 다음과 같습니다. -InformationAction -InformationVariable.- 전체 문자열 자체를 커맨드로 실행시키려고 해서 그럼 - ssh -i "pemkey" user@ip <- 여기서 ssh만 커맨드임 - "-i" 이런건 파라미터라서 별명 지정이 불가 2. function을 통해 ssh 연결 과정을 정의하기 - function nolto-was {ssh -i "pemkey" user@ip} 와 같이 함수로 지정 - 성공적으로 실행됨! - 하지만 파워쉘 끄면 날라감 3. powershell script (ps1) 파일에 function 정의해두고, 파워쉘 키면 자동 실행되게 하기 -New-Item -path $profile -type file -force로 ps1 생성 - 다음과 같이 작성하기shell script set-location c: function nolto-ws {ssh -i "C:\Directory\PEMKEY\real.pem" ubuntu@1.2.3.4} function nolto-was {ssh -i "C:\Directory\PEMKEY\real.pem" ubuntu@1.2.3.4} function nolto-db {ssh -i "C:\Directory\PEMKEY\real.pem" ubuntu@1.2.3.4} function joel-test {ssh -i "C:\Directory\PEMKEY\real.pem" ubuntu@1.2.3.4} function joel-web-hosting {ssh -i "C:\Directory\PEMKEY\real.pem" ubuntu@1.2.3.4}
도커 - 이미지 만들고 배포하기¶
- 참고: https://subicura.com/2017/02/10/docker-guide-for-beginners-create-image-and-deploy.html
- 서버에 코드를 받고, 배포하는 과정을 하나로 합침! 쉘 스크립트와 도커 파일은 유사한게 많다!
- 쉘 스크립트
```shell script
# 1. ubuntu 설치 (패키지 업데이트)
apt-get update
# 2. ruby 설치 apt-get install ruby gem install bundler # 3. 소스 복사 mkdir -p /usr/src/app scp Gemfile app.rb root@ubuntu:/usr/src/app # From host # 4. Gem 패키지 설치 bundle install # 5. Sinatra 서버 실행 bundle exec ruby app.rb ```- 도커 파일
# 1. ubuntu 설치 (패키지 업데이트 + 만든사람 표시) # FROM: 베이스 이미지 지정! FROM ubuntu:16.04 # MAINTAINER: 관리하는 사람의 이메일 정보 MAINTAINER subicura@subicura.com # RUN: 명령어를 내부적으로 실행 RUN apt-get -y update # 2. ruby 설치 RUN apt-get -y install ruby RUN gem install bundler # 3. 소스 복사 # COPY: 파일이나 디렉토리 이미지로 복사, 주로 소스 복사에 쓰임 COPY . /usr/src/app # 4. Gem 패키지 설치 (실행 디렉토리 설정) # WORKDIR: RUN, CMD, ADD, COPY등이 이루어질 기본 디렉토리 설정 WORKDIR /usr/src/app RUN bundle install # 5. Sinatra 서버 실행 (Listen 포트 정의) # EXPOSE: 도커 컨테이너 실행시 요청을 기다릴 포트 지정 EXPOSE 4567 # CMD: 도커 컨테이너가 실행되었을 때 실행되는 명령어 정의 CMD bundle exec ruby app.rb -o 0.0.0.0- 이후 `docker build -t app .`를 통해 도커파일 생성 - `docker run -d -p 8080:4567 app`, `docker run -d -p 80:4567 app` 등으로 웹 서버 동작이 가능!! (세상에)- 도커 빌드
- 임시 컨테이서 생성 > 명령어 수행 > 이미지로 저장 > 임시 컨테이너 삭제 >
새로 만든 이미지 기반 임시 컨테이너 생성 > 이미지로 저장 > 임시 컨테이너 삭제... 의 루틴을 반복하여 빌드!
- 임시 컨테이서 생성 > 명령어 수행 > 이미지로 저장 > 임시 컨테이너 삭제 >
- 도커 빌드
- 이미지 저장소 - 서버에 배포하기 위해 "도커 레지스트리"라는 이미지 저장소를 사용 - Docker Hub
- 배포 - 기존 어플리케이션 배포 - 언어/프레임워크/웹서버/WAS/리눅스 배포판 등 다양한 설정 세팅 필요 - 컨테이너 배포 - 그냥 이미지 다운받고, 컨테이너 실행하면 끝