4 minute read

일지

미니프로젝트 리뷰가즈아ㅏㅏ

사실 내가 할 수 있는것은 그렇게 많지 않은데,
기대치를 높여두고, 그에맞게 수행하고,
그로인해 다시한번 기대치가 높아지고, 그에맞게 수행하고,

언젠가는 터지겠지. 그때까진 열심히하자.

오늘의 할일

  • 220412 TIL 작성
  • Ansible 공부자료찾기
  • 실습 진행사항 복기
  • yaml 공부?

주요 키워드

Ansible Architecture
inventory

추가로 정리해야할 부분

수업 정리

  • Ansible 아키텍쳐 구성 내용
    • 시스템 유형으로 컨트롤 머신과 관리 노드가 있음
    • 컨트롤 로드에 Ansible이 설치되며, 관리 노드들은 컨트롤 머신에 의해 유지되거나 관리됨
    • 관리 노드들은 인벤토리 파일에 나열되어야 하며, 여기에는 호스트이름 또는 IP 주소로 저장
    • 인벤토리에 각 관리 노드들의 기능별로 그룹화 시켜서 저장도 가능
    • 시스템 관리자는 컨트롤 로드에 로그인하여 플레이북 또는 원격 전송 명령을 사용하여 관리 노드를 제어할 수 있고, 이 때 인벤토리에 저장된 관리 노드들을 패턴 형식으로 지정하여 제어할 수 있음
    • 컨트롤 로드는 기본적으로 SSH를 사용하여 관리 노드와 통신
    • 플레이북에서 참조한 모듈은 관리 노드에 복사되며, 관리 노드에서 실행
    • 사용되는 모듈의 종류로는 코어(core) 모듈과, 사용자 지정 모듈 등
  • Ansible 구성 파일
    • Ansible의 작동 방식을 구성하는 파일
    • 인벤토리 파일의 위치, 관리 노드에 연결하는 방법, 연결 한 후 작동 방법 등 무수히 많은 구성을 지정할 수 있음
    • 기본 Ansible 구성 파일의 위치는 /etc/ansible/ansible.cfg
    • Ansible 구성 파일 우선 순위
      1. ANSIBLE_CONFIG 환경 변수
      2. 현재 디렉토리의 ansible.cfg
      3. 홈 디렉토리의 ~/.ansible.cfg
      4. /etc/ansible/ansible.cfg
    • 우선 순위가 높은 파일에 정의된 값이 이전 정의된 값보다 우선함
  • Ansible 작동 방식 제어 우선 순위
    • Ansible 작동 방식을 제어하기 위해 Ansible 구성 파일 외에도 ansible 명령의 옵션, 플레이북 키워드, 변수를 이용해 동작을 제어할 수 있음
      1. -e 옵션에 지정한 변수
      2. 변수
      3. 플레이북 키워드
      4. 명령의 옵션
      5. Ansible 구성 파일
  • 인벤토리
    • Ansible은 인프라에 존재하는 여러 호스트를 관리함
    • 호스트의 목록 또는 그룹을 지정한 인벤토리 파일이 필요하며 인벤토리가 정의되면 패턴을 사용하여 Ansible을 실행할 노드 또는 그룹을 선택함
    • 기본 인벤토리 파일은 /etc/ansible/hosts 이며, -i 옵션을 사용하여 다른 인벤토리 파일을 지정할 수 있음
    • 인벤토리 파일은 일반적으로 INI 파일 형식을 가지고 있으며, YAML 형식으로 지정할 수 있음
  • 정적 인벤토리
    • 사용자가 직접 INI 또는 YAML 형식으로 파일을 직접 작성
  • 기본 그룹
    • all : 모든 호스트 포함
    • ungrouped : 그룹에 속하지 않은 모든 호스트 포함
  • 여러 그룹에 속한 호스트
    • 각 호스트는 하나 이상의 그룹에 속할 수 있음
    • 중첩 그룹을 이용한 인벤토리 단순화
  • 동적 인벤토리
    • 가상화, 클라우드 및 컨테이너 환경과 같이 시간이 지남에 따라 관리 노드의 변화가 많은 경우에 사용
    • 클라우드 공급자, LDAP 및 CMDB 등 동적 외부 인벤토리 시스템에서 호스트의 목록을 동적으로 가져올 수 있음
  • 연결 방법
    • 인벤토리 플러그인
    • 인벤토리 스크립트
    • AWS 에서 연결방법을 사용하기 위해서는 파이썬용 AWS SDK boto 패키지를 설치해야 함.
  • 인벤토리 확인
    • ansible 또는 ansible-inventory 명령으로 확인할 수 있음
    • 기본 인벤토리 파일이 아닌 경우 -i 또는 –inventory 옵션을 사용할 수 있음
  • 패턴
    • Ad-hoc 명령 또는 플레이북을 실행할 때 작업을 실행할 관리 노드 또는 그룹을 지정할 때 패턴을 이용해 관리 노드를 선택
    • 패턴은 단일 호스트, IP 주소, 인벤토리 그룹을 참조할 수 있고, 집합, 와일드카드, 정규화 표현식 등 사용이 가능
  • 모듈
    • 모듈은 Ansible을 이용해 관리 노드에 작업을 실행하는 핵심 요소
    • 모듈은 Python 코드로 이루어져 있으며, /usr/lib/python3/dist-packages/ansible 경로에 있음.
    • ansible-doc 명령을 이용해 모듈의 목록을 확인하고, 모듈의 사용법을 확인할 수 있음
  • Ad-Hoc 명령
    • 플러그인 확인 명령어
      • Ansible ad-hoc 명령은 하나 이상의 관리 노드에 단일 작업을 실행하는 임시 명령
      • 임시 명령은 거의 반복하지 않는 간단한 작업에 주로 사용

YAML Tutorial

  1. Intro

  2. YAML is popular

    • Configuration files all written in YAML
    • Widely use format
    • For diff. Devops tools and applications
      • Docker, Kubernetes, Ansible, Prometheus, etc…
  3. What is YAML?

    • YAML is a data serialization language, > Like XML, JSON
    • What is a serialization language? Standard format to transfer data

        YAML Ain't Markup Language
        File extension: .yaml .yml
      
  4. Why learn YAML? YAML Format compared to XML and JSON

    YAML Format compared to others

    • human readable and intuitive
    YAML XML JSON
    Line Separation
    Indentation
    Tags
    Angle bracket
    Curly brackets
    {}
    • Clean, Human Readable form of the 3

    💡 YAML is superset of JSON: Any valid JSON file is also a valid YAML file

  5. YAML Use Cases
    Docker compose file, Ansible, Kubernetes, Prometheus

  6. YAML Syntax

    • Spaces(Indetation) should be exactly same for each attributes
    • Indenting well or install a yaml plugin/extension on ur preferred IDE

      • Key-Value Pair; Basic cpnt. of YAML
      • Comments; b2w attrb. OR anywhere to make YAML readable, understandable
      • Object; By indenting, individual k-v pair into obj
      • Lists; By using dash-, stay at same level
      • Boolean; value like true or false / yes or no / on or off
      • More of lists; Can put lists in list > list of objects
        Can use Square brackets[] like list
  7. Real Kubernetes YAML Configuration Example

    • For Real example
    • Example of App containers on k8s example
  8. Multi-line strings
    • File contents 작성할때 사용
     multilinestring: "rather than using carrage return like this \n"
     multilinestring: |
     "You can use the pipe sign
     to express the contents of the file
     so all of these will be interpreted as multiline inserts"
    
     mutillinestirng: >
     "those are super long text.
     but it should be written in a one sentence.
     So those 3 lines will be interpreted as one sentence."
    
  9. Environment variables

    • 만약 $처럼 특정하게 정해진 변수 기호를 활용한다면 pod 외부에서 pod 내부로 접속하는 식으로 사용가능
    • inside of YAML file
      • mysql -h 127.0.0.1 -u root -p$MYSQL_ROOT_PASSWORD -e ‘SELECT 1’
      • YAML에서 환경변수를 사용하는것은 잘알려져 OR 잘정리되어 있지않음(isn’t well documented).
  10. Placeholders

    • Instead of directly writing the values,
    • Define placeholder. by double curly brace {{}}
    metadata:
      name:  \{\{ .Values.service.name }}
    spec:
      selector:
        app: \{\{  .Values.service.app  }}
      ports:
        - protocol: TCP
          port: \{\{.Values.service.port }}
          targetPort: \{\{ .Values.service.targetport }}
    
  11. Multiple YAML documents
    • In 1 file, define multiple cpnts
    • Separates by using — three dashes
  12. YAML and JSON in Kubernetes
    • you can use yaml and json
    • but I(presenter) prefer yaml

Categories:

Updated:

Leave a comment