앤서블을 이용한 서버 형상 관리
---
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이름으로 접속하기 때문이다.
---
일단 테라폼과 패커를 끝내지 못하면 앤서블을 듣지 못하도록 막아놓았다 까비...
'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글
클라우드 프로젝트1 - docker, react, express, mysql, k8s, ansible 이게 모냐... (0) | 2022.03.29 |
---|---|
클라우드 58일차 (0) | 2022.03.29 |
클라우드 56 일차 (0) | 2022.03.25 |
클라우드 55일차 (0) | 2022.03.24 |
클라우드 54일차 - 오픈스택 보강 (0) | 2022.03.22 |