Zero To One
DevOps를 하면서 리눅스를 써야하는 이유 본문
CI/CD 과정 중 주로 Operate(문제 해결, 모니터링 등) 업무에서 쓰이기 때문이다.
: DevOps를 하면서 리눅스 운영체제에 익숙해 져야하는 이유
1) 리눅스 기본 명령어
- 파일 관리
- 디렉토리 개념
- . : 현재위치
- .. : 상위 폴더
- / : 루트
- ~ : 홈
- find 명령어 : 디렉토리 내에서 특정 파일을 찾는 것
- which 명령어 : 지금 내가 실행하는 명려이 어떤 디렉토리에 있는지 알려주는 명령어
2) 기본 도구
- nano 텍스트 에디터
- apt 패키지 매니저
--> 서버에서 실행할 프로그램은 어디에 있는가? 어떻게 설치할 것인가?
3) 프로세스와 기본 명령어
- 지금 작동 중인 프로그램은 무엇인가? (ps)
- 그 프로그램을 어떻게 실행 할 것인가? (백그라운드 작업시 : & or nohup)
- 그 프로그램을 어떻게 종료할 것인가? (kill-9, 강제종료)
4) 표준 스트림과 파이프라인, 리다이렉션
- 프로그램이 출력하는 내용(stdout, stderr)을 어떻게 기록할 것인가? 어떻게 분석할 것인가?
- 입력을 명령 대신 파일로 리다이렉션 ( < )
- 화면 출력대신 파일로 리다이렉션 ( > )
5) 환경 변수 및 스크립팅
- 프로그램을 테스트 환경에서 돌릴 것인가? 프로덕션 환경에서 돌릴 것인가?
- 어떻게 프로그램을 자동으로 돌릴 것인가?
6) 권한
- 프로그램을 어떻게 실행 가느아게 할 것인가? (chmod)
- 프로그램이 루트 권한을 필요로 할 때는 어떻게 할 것인가? (sudo)
7) 시스템 모니터
- cpu, 메모리, 네트워크, 사용중인 파일 등을 어떻게 확인 할 것인가? (top)
DevOps 트러블 슈팅법
1. 흔한 문제 상황
- 특정 프로세스가 파일/네트워크 포트를 점유하는 경우
2. 문제가 되는 프로세스가 무엇인지 알아낸다
- 파일이 문제가 되는 경우 (isof)
- 네트워크가 문제가 되는 경우(netstat)
3. 찾아서 프로세스를 죽이는 방법
- 명령어로 프로세스 ID(PID)를 찾는다 (ps)
- 명령어를 이용해 해당 프로세스를 죽인다 (kill)
결론
- 명령에 따른 결과를 보고, 그 결과가 어떤 의미인지 파악할 수 있는 능력이 매우 중요함
1) 별다른 결과 없이 프롬프트가 뜬다면, 명령이 잘 실행된 것.
2) 잘 모르는 결과는 메세지를 복사후 검색
- 배포과정에 쉘 스크립트로 자동화가 필요한 경우가 종종 발생함
1) 배포 과정은 한마디로 프로비저닝 후 릴리즈할 애플리케이션을 실행하는 것
(프로비저닝 : 미리 서버 등을 준비하는 것)
(릴리즈 : 배포할 애플리케이션 선정)
2) 사람 손으로 하면 실수가 일어날 수 밖에 없는 과정이므로 쉘 스크립트로 자동화가 필요하다
'DevOps' 카테고리의 다른 글
2) DevOps 규모에 따른 운영 (0) | 2022.02.08 |
---|---|
1) DevOps, CI/CD란 무엇인가? (0) | 2022.02.07 |