인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

yjinseo님의 프로필 이미지

작성한 질문수

구성 관리 자동화 도구 - 앤서블(Ansible)

ssh 연결 설정과 관련하여 현업에서는 어떻게 하는지 궁금합니다.

작성

·

53

0

질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다.
다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다!

[질문 하기]

강의에서는 ansible을 처음 설치하고 테스트를 위해 ansible all -m ping -> yes 3번 입력 후 ansible all -m ping -k 는 정상적으로 수행이 되었는데요

 

저의 경우에는 ssh 설정이 막혀 있어 각 노드들의 sshd_config 파일에서 root 로그인을 허용해주었습니다.

실습환경에서는 노드가 3개라서 하나하나 수정했지만, 현업에서는 노드들이 훨씬 많을텐데, ansible 도 사용하지 못하는 상황에서 이러한 번거로운 작업을 어떻게 하는지 궁금합니다.

답변 3

1

조훈(Hoon Jo)님의 프로필 이미지
조훈(Hoon Jo)
지식공유자

안녕하세요

현업 기준은 회사마다 정책이나 관점의 차이가 있어서 다양하지만...

1가지 정확한 것은 편리하게 사용하는 것은 보안적으로 취약하다 입니다.

그러므로

어디까지 들으신지 확인되지 않기는 하는데...

known_hosts 그리고 authorization_key 등의 설정으로 노드에 자동 접속되게 하는 것은 한정적으로 제한합니다. 또는 인프런 AI 인턴이 언급한 3번 처럼 Bastion Host를 통해서 제한적인 노드에만 접속하도록 합니다. 그리고 원칙적으로는 root는 로그인할 수 없도록 하는 것이 현업적인 관점에서 더 맞습니다.

지금은 교육적인 목적이라 root를 그대로 사용하고 있지만 보통은 유저를 사용하고 그 이후에 필요시에 정말 제한적으로 sudo 권한을 받아서 사용하지 root 계정을 그대로 사용하는 경우는 없다고 봐도 무방할 것 같습니다. (테스트 환경 제외)

 

정리하자면 이렇습니다.

번거로운 것은 보안적으로 좋습니다.

하지만 번거로운 것은 생산성을 낮출 수 있으니 대량의 작업은 검증된 스크립트 형태로 작업합니다.

이 때도 root 계정등이 아닌 제한적인 것을 실행할 수 있는 bot 형태의 계정으로 합니다.

그리고 이를 위해서 자동화 도구(예: 앤서블) 또는 CI/CD 등을 사용해서 진행합니다.

이는 사람이 하는 작업에 대해서 휴먼 폴트를 방지하고, 필요시 롤백도 하고, 기록을 통해서 잘못된 내용이 있다면 파악하기 위한 다양한 목적으로 이루어집니다.

 

답변이 되셨을까요? 혹시 부족한 부분있다면 말씀해 주시면 다시 설명 드리겠습니다. 🙂

0

yjinseo님의 프로필 이미지
yjinseo
질문자

이해가 잘되게 답변해주셔서 감사합니다!

 

저는 강의 초반인 섹션4 부분을 수강하고 있습니다. 추가적으로 궁금한 것이 또 생겼습니다.

아직 서로 키교환을 하지 않았기 때문에 비밀번호 요구 옵션인 -k 를 붙여야 ansible 명령이 수행된다고 하셨습니다.

 

-k 옵션을 사용한 명령어 수행 후에 -k 옵션 없이 다시 같은 명령어를 사용하면 ansible 명령이 잘 수행되는 이유가 무엇일까요?

강의 영상에서도 그렇고, 저 또한 같은 현상이 나타나서 궁금합니다.

조훈(Hoon Jo)님의 프로필 이미지
조훈(Hoon Jo)
지식공유자

안녕하세요

앤서블은 일정 시간동안 패스워드를 (편의적인, 성능적인 목적으로) 캐시합니다.

기본 값은 5분(300초) 입니다.

아마 이해되셨겠지만, 유사한 것으로 은행 같은 곳에 로그인하고 세션이 유지되는 것도 비슷한 개념이 들어가 있다고 보셔도 될 것 같습니다. (구현 방법과 목적은 좀 차이가 있습니다.)

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. yjinseo님.

Ansible과 SSH 설정에 대한 질문을 주셨네요. 현업에서 많은 서버의 SSH 설정을 관리해야 하는 경우, 여러 가지 방법으로 효율성을 높일 수 있습니다.

  1. Configuration Management Tools 사용: 현업에서는 Ansible 뿐만 아니라 Puppet, Chef, SaltStack 같은 구성 관리 도구를 활용할 수 있습니다. 초기 설정 시에는 이러한 도구들로 SSH 설정을 포함한 다양한 설정을 자동화할 수 있습니다.

  2. SSH Key 배포 자동화: SSH 키를 미리 모든 서버에 배포해 놓는 것도 한 방법입니다. 초기 인프라 셋업 시에는 스크립트를 사용하여 SSH 키를 자동으로 배포하고, 이후 구성 관리 도구를 이용하는 방식으로 진행할 수 있습니다.

  3. Bastion Host 사용: SSH 접속을 중앙 관리하기 위해 Bastion Host(점프 서버)를 사용하기도 합니다. 이를 통해 Bastion Host에서만 SSH 접속을 허용하고 다른 서버와의 연결을 관리합니다.

만약 이와 관련된 더 많은 예시와 실무적인 접근 방법을 알고 싶으시다면 다음의 유사한 질문 답변을 참고해주시면 좋을 것 같습니다:

  • 최초 패스워드 입력 질문 - 이 글에서는 Ansible을 이용하여 자동으로 authorized_keys를 등록하는 방법과 초기 패스워드 입력 관련 설정 방법을 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yjinseo님의 프로필 이미지

작성한 질문수

질문하기