0412 Ansible 둘쨋날

Ada·2022년 4월 12일
0

Playdata-Cloud

목록 보기
7/21

복습

apache 설치

ansible [그룹명] -m apt -a "update_cache=yes state=present"

ansible [그룹명] -m apt -a "name=apache2 state=present"

플레이북

▪ Ansible 플레이북은 반복 가능하고 재사용 가능하며 간단한 구성 관리부터 여러
호스트에 복잡한 애플리케이션을 배포하는데 매우 적합

▪ 작업을 두 번 이상 실행해야하는 경우 Ad-hoc 명령을 사용하지 않고, 플레이북을
작성하고 Git과 같은 소스 제어를 사용하는 것을 권장

YAML

YAML 문서의 원활한 사용을 위해 vim 문서 작성

vi ~/.vimrc
syntax on
autocmd FileType yaml setlocal ai ts=2 sw=2 sts=2 et
set cursorcolumn

▪ Ansible 플레이북의 YAML 파일은 항상 목록(List)으로 시작되며, 목록의 각 항목은 해시(Hash) 는 사전(Dictionary)이라는 키/값 쌍을 가지고 있음
▪ 선택적으로 YAML 파일의 시작은 ---로, 파일의 끝은 ...으로 끝을 나타내고 들여쓰기 수준은 동일해야 하며, 공백문자로 만 사용
▪ 탭은 구문 오류를 발생함으로 일반적으로 공백 2칸을 사용

플레이북 구문

• 목록 (list)

  • 목록은 -와 공백으로 시작
  • 들여쓰기 수준은 동일해야 함

• 사전 (dictionary)

  • 사전은 키/값 쌍을 가지고 있으며, 키와 값은 : 으로 구분되며 : 뒤에 반드시 공백이 와야 함

YAML 작성 시 주의사항

▪ 콜론 사용시 구문 오류

foo: somebody said I should put a colon here: so I did => 콜론 이후에 콜론
windows_drive: c: => 콜론 뒤에 공백

▪ 해결 방법

foo: ‘somebody said I should put a colon here: so I did’
windows_drive: ‘c:’
  • ‘ 작은 따옴표나, “ 큰 따옴표로 인용부호를 사용
  • 따옴표의 차이는 큰 따옴표는 탈출 문자를 사용할 수 있음
foo: "a \t TAB and a \n NEWLINE"

▪ 변수 참조

  • 변수를 참조할 때는 변수 명을 {{ }} 이중 중괄호를 사용 (괄호 사이 공백 필수)
foo: "{{ variable }}"
  • 사전의 값 중 일부만 변수일 경우에도 값 전체를 큰 따옴표를 사용
foo1: "{{ variable }}/additional/string/literal"
foo2: "c:\\{{ variable }}\\rest\\of\\path"
foo3: user is {{ variable }}

▪ 문자열

  • yes, true, no, false는 부울 값으로 예약되었다. 일반 문자열로 인식 하려면 인용
non_boolean: "yes"
other_string: "False"

플레이북 기본

▪ 플레이북은 하나 이상의 플레이를 가지고 있으며, 플레이는 작업을 실행하기 위한
특정 관리 노드 또는 그룹을 지정
▪ 플레이에는 작업을 선언하며, 작업은 모듈을 호출
▪ 플레이북은 위에서 아래 순서대로 실행
▪ YAML의 목록은 위에서 아래로 순서를 가짐

  • 플레이북: 하나 이상의 플레이를 가짐
  • 플레이: 하나 이상의 작업을 가짐
  • 작업: 하나의 모듈과 모듈의 옵션/아규먼트를 지정

플레이북 기본 구조

플레이북

- name: update web servers # 플레이/플레이 이름
  hosts: webservers # 호스트 패턴
  tasks:
    - name: ensure apache is at the latest version # 작업/작업 이름
      yum: # 모듈/모듈 이름
        name: httpd # 모듈 옵션/아큐먼트
        state: latest
    - name: write the apache config file # 작업
      template:
        src: /srv/httpd.j2
        dest: /etc/httpd.conf
    
    - name: update db servers # 플레이
        hosts: databases
        remote_user: root
        tasks:
        - name: ensure postgresql is at the latest version # 작업
          yum:
          name: postgresql
          state: latest
      - name: ensure that postgresql is started # 작업
        service:
          name: postgresql
          state: started

멱등성

  • 수학이나 IT에서 연산의 한 성질을 나타내며, 연산을 여러 번 적용하더라도 결과가 달라지지
    않는 성질을 의미

  • Ansible의 대부분 모듈은 원하는 최종 상태가 달성 되었는지 확인하고, 이미 원하는 최종
    상태를 달성했다면 작업을 실행하지 않게 되는데 몇 번이고 작업을 반복 실행 하더라도 최종
    상태가 변경되지 않기 때문에 멱등성을 가진다고 함.

  • 모듈의 옵션에 따라 이러한 멱등성을 제공하지 않는 것도 있음.
    • 멱등성을 제공하지 않는 모듈( 무조건 changed)

    » 명령 관련 모듈: command, shell, raw
    » service 모듈의 서비스 재시작

    YAML 실습

    vi 편집기로 yml파일 생성 후
    ansible-playbook test.yml 명령어로 실행
    ansible-playbook test.yml --syntax-check : 문법 체크

    [test1]

    -> AA 그룹 안의 ansi-node1과 ansi-node2의 msg가 출력된다.


    [test2]

->


[test3]

-> apache 패키지가 설치된다.


어제 이론 위주로 나가던 내용들을 복습 겸 실습 하면서 정리가 많이 됐다.

수업 끝나고 자습시간에 정리를 몰아서 하는 것 보다 중간중간 같이 해주는게 더 효율적인 것 같다.

오늘도 나름 열심히 했다! 오류가 안나서 더 좋았다 ㅎㅎ

profile
백엔드 프로그래머

0개의 댓글