본문 바로가기
Development(Web, Server, Cloud)/22) LINUX - Cloud

클라우드 57일차

by tonyhan18 2022. 3. 27.
728x90

앤서블을 이용한 서버 형상 관리

---

Ansible Documentation — Ansible Documentation

 

Ansible Documentation — Ansible Documentation

© Copyright Ansible project contributors. Last updated on Dec 21, 2021.

docs.ansible.com

서버 형상 관리란

테라폼으로는 프로비저닝 작업을 할 수 있었다.

이후에는 운영체제 상에 필요한 소프트웨어를 설치하고 원하는 설정으로 관리하는 작업이 필요(Configuration as Code) -> GitOps로 운영

 

ansible 형상관리. python, agentless(SSH)

 

처음에는 Configuration Management -> Continuous Delivery -> Application Deployment -> Security Compliance(보안 전검) -> Provisioning

 

다양한 유즈 케이스가 존재한다. 빨간색일때 쓰는 것을 추천한다.

 

앤서블을 쓰면 과거 쉘스크립트를 통해 소프트웨어와 OS를 제어했는데 이제는 Ansible 코드로 처리해줄 수 있다.

 

간단한 yaml 문법으로 소프트웨어 설치가 가능해진다. 멱등성을 보장하기 때문에 안전.

대상 서버에 에이전트 설치가 필요하지 않음.

 

tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료 (github.com)

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

실습 수행을 위한 대상 서버들이 필요해진다.

 

Ansible Inventory

inventory는 서버 형상 관리를 할 대상 서버가 필요해진다. 대상 서버 호스트를 관리하는 파일이다. 인벤토리는 그룹기능 지원하기에 한 호스트가 여러 그룹에 속할 수 있다.

 

인벤토리를 정의하는 방법에 따라서 Static Inventory(정적)와 Dynamic Inventory(동적)가 존재

Static Inventory 는 기본이 되는 인벤토리이다. 이번시간에는 이걸 사용해보자.

Dynamic Inventory(AWS cloud)를 사용시 autoscaling과 같이 ip정보가 자주 바뀔때 사용할 수 있다.

 

현재 폴더 안에 inventory 파일들을 확인할 수 있다.

 

사실 inv 확장자가 반드시 필요한 것은 아니다. 그냥 편한 이름으로 관리하자.

 

amazon.inv -> amazon ec2의 ip주소

ubuntu.inv -> public DNS

simple.inv -> GROUP기능(amazon안에 ubuntu 2개가 존재 확인가능. all 기본그룹은 inventory에 포함된 모든 그룹 포함)

위와같이 한 그룹안에 두개가 정의되어 있다.

 

all은 inventory에 포함된 모든 그룹을 이야기한다.

 

alias.inv -> 유니크한 별칭기능.

ip나 도메인에 대해서 별칭을 붙여주는 방식이다.

 

vars.inv -> 상대 pc 접속시 사용자 ID를 알아야 ansible로 대상 서버에 접속이 가능해진다.

결국 위와같이 작성해주어 사용자 별로 접근할 수 있게 했다.

[amazon] : GROUP 기능을 이야기 한다.

 

ansible_user이라는 부분이 추가되었다. 앞에서 Ansible은 agentless이기 때문에 SSH와 /win_rm 프로토콜로 원격 명령을 보낸다고 했다. SSH로 로그인을 하면 해당 인스턴스의 사용자 정보를 알아야한다.

amazon 리눅스는 기본 사용자가 ec2-user이고

ubuntu는 기본 사용자가 ubuntu이다.

 

이걸 정의해주지 않으면 컴퓨터의 user id로 접속하기에 에러가 난다.

 

[linux:children] : 하위그룹

linux 그룹은 amazon, ubuntu 그룹을 포함한다고 생각해서 총 4가지 호스트가 있다고 생각해주면 된다.

 

ANSIBLE Ad-hoc

yaml 파일을 이용해서 ansible playbook을 작성하고 해당 playbook을 특정 인벤토리에 사용하는 방법을 알아보자. 이거 외에도 Ad-hoc command 방법이 있다.

 

Ad-hoc은 yaml 없이도 ansible을 빠르게 사용하는 방법이다.

명령어를 실행하는 방식이기에 재사용은 어렵다.

테스트 목적으로 사용할때 Ad-hoc을 사용하게 된다.

 

ansible host-pattern -m module [-a 'module options'] [-i inventory]
          그룹명       모듈       모듈의 인자값        인벤토리파일지정
          
ansible -i amazon.inv -m ping all

위와같이 해주면 에러가 난다.

 

왜냐하면 접속시 localhost이름으로 접속하기 때문이다.

 

---

 

일단 테라폼과 패커를 끝내지 못하면 앤서블을 듣지 못하도록 막아놓았다 까비...

 

728x90