Python & Automation

[Ansible] 본격! Playbook 개념의 이해 그리고 공유폴더

모모토 2022. 2. 24. 15:14
반응형

<참고> 본 포스팅에서 사용하는 실습컴퓨터(control node)는 다음 게시물에서 설정한 control node입니다. 

https://griffithh.tistory.com/107

 

[Ansible] Control node & Managed node 설치 및 ssh 접속

Ansible 실습환경 구성 virtualBox 를 이용한 가상 환경 Virtual Machine CPU : dual core memory : 2GB 제어 노드 구성 필수요소 ★ sshd 활성화 python 3.x 버전 interpreter 설치 pip 패키지 설치 Control node..

griffithh.tistory.com

 

Playbook

클로로 루실후르 , 환영여단의 단장

 

헌터x헌터 라는 만화의 매력적인 악당 클로로 루실후르 는 특이한 능력을 갖고 있다. 

 

바로 상대의 능력을 자신의 에 '기록'하여 자유자재로 사용하는 능력을 가지고 있다.

 

능력의 종류는 천차만별이며 , 쓰임도 다양하다. 

 

클로로 를 컴퓨터로 비유해보면 클로로 라는 컴퓨터는 여러 가지 능력(database , web , DNS ... etc)을 손쉽게 다룰 수 있도록 Playbook()을 이용하는 것이다.

 

이 playbook에 기록된 여러가지 명령어들과 설정들이 자신에게 자동으로 적용이 된다.

 

생각을 확장해보자 , 만약 나에게 저 여러가지 능력이 담긴 playbook이 주어진다면 나도 클로로처럼 여러 가지 능력을 자유자재로 똑같이 사용할 수 있게 된다.

 

이것이 바로 Playbook의 핵심 개념이다.

 

다수의 컴퓨터에게 똑같은 작업을 수행할 수 있는 세팅을 하기 위해 playbook을 이용하면 어떠한 환경에서든 오차 없이 일정한 환경설정을 할 수 있다.

 

여기까지 playbook을 직관적으로 이해할 수 있는 설명이었고 이제 본격적으로 playbook에 대해서 살펴보자

 

Playbook

Playbook이란 Ansible 설정 관리 스크립트로써 YAML형식으로 작성된 텍스트 파일이다.

백문이 불여일견 먼저 간단한 예시부터 살펴보자면 다음과 같다.

---
- name: total variable test
  hosts: all
  gather_facts: False
  vars:
    message: "Hello, Ansible"
    hi: "hi ansible"
    hello: "ansible"
    file_path: "/home/ansible/temp"
  tasks:
  - name: create directory
    file:
      path: "{{ file_path }}"
      state: directory
  
  - debug:
      msg: "{{ hi }}"
  - debug:
      msg: "{{ message }}"
  - debug:
      msg: "{{ hello }}"

1. 파일의 시작 , " --- "

 

2. 주석 , " # "

 

3. YAML에서는 문자열을 따옴표로 묶어도 안묶어도 상관이 없다.

ex) My name is MOMOTO

 

4. boolean 

YAML 에서 진실 거짓을 전달할 경우 -> False & True 

모듈에게 매개변수로 전달할때 -> yes & no

 

5. List (python 의 sequence 와 같은 개념)

" - " 으로 구분해준다.

- My name is MOMOTO

- The book is mine

 

JSON으로 표현하면

 

[

"My name is MOMOTO,

"The book is mine

]

 

6. mapping (python 의 dictionary)

 

key : value

name pey
phone 01199993323
birth 1118

 

공유 폴더 & git hub

playbook을 가상컴퓨터 내에서 작성하여 사용할 수도 있지만 , 우분투나 리눅스에서 작성이 다소 용이하지 않기 때문에 외부에서 작성한 playbook을 가져오는게 일반적이다. 이때 외부에서 작성한 playbook을 가져오는 방법은 두가지가 있다.

 

1) 공유 폴더

공유할 windows 폴더를 선택후 폴더의 이름을 지정 , 자동 마운트 체크 후 마운트 경로를 작성한다. 이때 게스트 확장 설치가 되어 있어야만한다.

 

게스트 확장 방법

게스트 확장 후 재부팅을 해주자 이후 아래처럼 설정

확인을 누른 후 가상머신을 가동한다. 게스트 확장이나 공유폴더 설정이나 순서 상관없이 둘 다 하고난 뒤 재부팅을 해주자

 

재부팅을 하고나서 다음과 같은 명령어를 실행해주어야 한다. 실행하고나면 사진과 같은 폴더가 우분투에 생성된다.

sudo usermod -aG vboxf <현재 사용자 id>
sudo mount -t vboxsf <Windows 공유폴더> <mount할 폴더>

 

2) git hub

https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

깃헙에 repository를 생성후 이곳에 IDE프로그램으로 만든 yml 파일을 저장하여 가상컴퓨터에 업로드 할 것이다.

 

나의 깃헙에 있는 파일들을 우분투로 다운받아보자, 먼저 가상컴퓨터에 git을 설치해야한다.

 

깃 설치

 

깃헙의 리포지토리를 가상컴퓨터로 복사

 

이후 yml파일을 편집후 깃헙에 커밋하여 가상컴퓨터에서 pull 해주면 업데이트가 적용된다.

현재 업데이트된 정보가 없기 때문에 위와같이 나타나고 해당 repository에서 명령어를 실행해야 업데이트가 진행된다.