Ansible 개념

Violet_Evgadn·2023년 4월 25일
0

CI&CD 자동화

목록 보기
17/28

Ansible 명령어

Ansible Option

  • -i(--inventory-file)
    • Remote Host에 대한 정보(IP Address)를 담은 파일
    • -i 옵션이 설정되지 않을 경우 Default로 /etc/ansible/hosts 파일을 사용함
  • -m(--module-name)
    • 원하는 모듈을 선택
    • 모듈은 Ansible의 핵심으로 아래에서 자세히 설명하겠다
  • -k(--ask-pass)
    • 관리자 암호 요청
  • -K(--ask-become-pass)
    • 관리자 권한 상승
  • --list-hosts
    • 접속할 Remote Host들의 IP Address들을 직접 입력
    • 개인적으로는 -i Option이 깔끔하고 관리가 쉽기 때문에 활용을 추천하지는 않는다.

멱등성

Ansible Command의 가장 큰 특징은 멱등성을 가진다는 점이다.

멱등성이란 같은 설정(명령)을 여러 번 적용하더라도 결과가 달라지지 않는 성질이다.

예를 들어보자.

메모장에 글을 입력하고 복사 붙여 넣기를 수행해보자. 이 경우에는 복사한 글이 계속해서 뒤에 기록될 것이다.

즉 같은 명령을 여러 번 적용했을 때 결과도 달라지므로 멱등성을 가지지 않는다.

우리가 선풍기를 끄고 싶다고 생각해보자. 이때 "중지" 버튼을 한 번 누르든 계속해서 연타하든 똑같이 "선풍기가 꺼진다"라는 결과물이 얻어진다. 이 경우 같은 명령(중지 버튼을 누름)을 여러 번 반복해도 결과는 같으므로(선풍기가 꺼짐) 멱등성을 가지는 행위라고 볼 수 있겠다.

이전에 설명했듯 Ansible은 CM Tool로써 변동이 많고 빌드 작업이 자주 일어나는 개발 환경에서 많이 활용되는 Tool이다.

이 때문에 빌드 과정마다 개발자가 의도하지 않은 중복 작업이 일어나지 않게 하기 위해서 멱등성을 가지도록 설계되었다.

Ansible 기초적인 명령어

ansible [group name] -m [사용할 Module name] -i [Remote Host IP Address를 기록한 파일]
  • group name
    • 이전에 /etc/ansible/hosts에 IP Address를 묶은 [devops] 같은 Name을 의미함
    • all : 파일에 존재하는 모든 IP Address에 접근

Ansible 중요 개념

Ansible Module

Ansible에서 Module은 Ansible에서 사용하는 "명령어" 라고도 이해할 수 있다.

Ansible은 다양한 Command를 제어하기 위한 작은 프로그램인 Module을 활용하여 내가 원하는 작업을 Ansible 측에서 수행할 수 있도록 지원한다.

이전에 말했듯 ansible Command Option 중 "-m [Module Name]"을 통해 내가 원하는 모듈을 활용할 수 있다.

즉, Anisble은 Module을 통해 멱등성이 보장되는 다양한 기능을 제공한다.

Ansible Module Documentation

Ansible Playbook

이전에 Ansible은 자체 DSL Script가 아닌 YAML 파일을 통해 서버 설정 값을 적용한다고 언급했다.

그리고 Ansible에서 서버 설정 값을 기록한 YAML 파일을 "Ansible Playbook"이라고 한다.

Ansible Playbook은 사용자(or 개발자)가 원하는 명령 및 동작들을 미리 YAML 파일을 통해 작성해 놓은 것이다.

Ansible Playbook에는 여러 개의 명령들을 동시에 입력할 수 있기 때문에 1개의 Ansible Playbook에 여러 개의 명령어(혹은 동작)를 기입해 한 번에 여러 개의 작업을 처리할 수도 있다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글