3 minute read

일지

어질어질하다
이게..맞아..?

그나마 주말에 좀봐둬서 진짜 다행이였지 아니였으면 하….

빠르게 미니프로젝트 준비부터하면서 필요한거 공부해야겠다.

오늘의 할일

  • 220411 TIL 작성
  • Ansible 추가공부
  • 별도 팀프로젝트 진행회의
  • JtP

주요 키워드

Playbooks, Module, YAML

추가로 정리해야할 부분

Ansible Vault, AWX

수업 정리

ansible 대충 뭐 막 적고 –module “usermod user01”

.vimrc 설정값

syntax on autocmd FileType yaml setlocal ai ts=2 sw=2 sts=2 et autoindent set cursorcolumn

IaC 개념

  • IaC(Infrastructure as Code-코드형 인프라)

  • 인프라를 웹 인터페이스 및 대화형식의 도구를 사용해 수동적으로 인프라를 구성하는 것이 아닌, 시스템이 읽을 수 있는 인프라 정의 파일을 통해 인프라의 구성 관리 및 배포를 자동화 하는 것

  • 인프라는 물리적 하드웨어 뿐만 아니라 가상 컴퓨터, 클라우드 등 관련 리소스를 IaC를 통해 구성 관리 및 배포할 수 있음

  • IaC는 폭발적으로 확장되는 컴퓨팅과 차세대 웹 프레임워크와 같은 새로운 기술을 구현하고 구성하는 어려움에 대한 해결책으로 발전하게 되었고, 기업들은 이런 기술을 통해 스케일링 확장하는 문제도 해결할 수 있었음

IaC 장점

  • 비용 절감
    • 사람의 노력적인 측면에서 인프라 관리를 수동적으로 하지 않음으로 다른 생산적인 작업에 노력을 집중할 수 있음.
  • 빠른 속도
    • 인프라 구성 관리 및 배포를 자동화 함으로 신속한 실행을 가능하게 하고,효율적으로 작업할 수 있는 가시성을 제공
  • 안정성
    • 수동으로 구성할 때와 같은 사람의 실수와 관련 위험을 제거할 수 있음
  • 코드화 및 버전 관리
    • 표준화된 포맷과 규칙으로 작성된 코드 문서를 통해 누구나 읽을 수 있고 확인할 수 있다. 또한 코드는 변경 사항 이력을 남길 수 있어 추후 문제 발생 시 어떤 부분이 변경되어 발생한 문제인지 확인하기 쉬움
  • 재사용성
    • 인프라를 코드화 하고 관련 리소스를 그룹 및 모듈화 해서 필요 시 필요한 부분을 재사용 할 수 있음

laC 도구 및 특징 비교

  • 구성 관리 / 배포 도구

    • 구성 관리
      • 물리(Baremetal) 시스템, 가상 컴퓨터 및 클라우드 인스턴스 내에서 패키지 설치, 애플리케이션 구성, 운영체제 관련 구성 및 구성 변경을 관리하는 도구
      • Ansible, Chef, Puppet, SaltStack 등
    • 배포
      • 새로운 인프라 리소스를 배포하고 이미 배포된 인 프라 리소스의 생명 주기를 관리하는 도구
      • AWS CloudFormation, OpenStack Heat, Terraform 등
  • 가변 인프라 / 불변 인프라
    • 가변 인프라
      • 여러 관리 대상 인프라가 독립적으로 관리되며 별도의 변경 사항을 가지는 형태
    • 불변 인프라
      • 클라우드 인스턴스의 이미지나 컨테이너의 이미지 와 같이 변하지 않는 이미지를 배포하는 것과 같이 인프라가 배포된 후 절대 로 변하지 않는 인프라
  • 절차적 / 선언적 언어
    • 절차적 언어
      • 원하는 최종 상태에 도달하기 위해 코드가 단계별로 정의되고 실행되는 형태
    • 선언적 언어
      • 최종적으로 원하는 형태를 정의만 하면 필요한 절차는 내부적으로 알아서 진행되는 형태
  • 마스터 및 에이전트 유무
    • 마스터
      • 인프라의 정보와 구성 관리 및 배포를 위한 정보를 가지고 있음
      • 장점 : 중앙 집중화 된 관리 및 모니터링이 가능
      • 단점 : 추가적인 리소스의 필요, 마스터의 관리, 장애 등이 존재
    • 에이전트
      • 서버가 관리할 인프라에 에이전트 소프트웨어가 설치되어 있음

Ansible 개념

  • 애플리케이션 및 IT 인프라를 자동화 할 수 있는 도구
    • Ansible을 사용하여 호스트를 구성하고, 소프트웨어를 배포하고, 지속적인 배포 및 다운 타임 없는 롤링 업데이트 등 고급 IT 작업은 조율할 수 있음
    • Ansible의 주요 목적은 간결성과 사용 용이성이며 또한 보안과 신뢰성을 바탕으로 OpenSSH를 기본 전송 방법으로 사용
    • 컨트롤 로드는 리눅스나 유닉스 시스템만 가능
    • 관리 노드는 어떠한 시스템이든 상관없음
    • 시스템 관리에 특별한 에이전트가 필요하지 않지만 파이썬을 이용해서 해당 작업들을 행해야 되기 때문에 컨트롤 로드든 관리 노드든 파이썬이 설치되어 있어야 함
  • 장점
    • SSH 기반이므로 원격 노드에 에이전트를 설치할 필요가 없음
    • YAML 언어를 사용하기 때문에 쉽게 배울 수 있음
    • 플레이북 구조는 간단하고 명확하게 구조화되어 있음
    • 변수 기능을 사용하여 같은 작업에 대해서 다른 구성으로 쉽게 구성할 수 있음
    • 다른 도구보다 훨씬 간소화 된 코드 기반
  • 단점
    • 다른 프로그래밍 언어를 기반으로 하는 도구보다 덜 강력
    • 변수 등록은 기본적인 기능조차도 요구되기 때문에 더 쉬운 작업을 더 복잡하게 만들 수 있음
    • 플레이 내 변수의 값을 확인하기가 어려움이 있음
    • 입력, 출력, 구성 파일의 형식 간에 일관성이 없음
    • 때때로 성능 속도가 저하됨
  • 컨트롤 노드
    • Ansible이 설치된 모든 호스트
    • 컨트롤 노드에서는 ansible 또는 ansible-playbook 명령을 이용하여 작업을 실행할 수 있음
    • Python이 설치된 모든 호스트를 제어 노드로 사용할 수 있음
    • Windows 호스트를 컨트롤 노드로 사용할 수 없음
  • 관리 노드
    • 컨트롤 머신에서 접근하여 모듈을 설치하고, 원격의 명령을 실행하는 작업을 수행하는 시스템.쉽게 말해 컨트롤 머신에 관리되는 시스템을 의미함
    • Ansible은 관리 노드에 설치되지 않음
  • 플러그인
    • Ansible의 핵심 기능을 확장할 수 있도록 다양한 플러그인을 제공
    • Action, Become, Cache, Callback, Cliconf, Connection, Httpapi, Inventory, Netconf, Lookup, Shell, Strategy, Vars
  • 인벤토리
    • 관리 노드의 목록으로, 관리 노드에 대한 호스트 이름이나 IP 주소와 같은 정보를 지정
    • 여러 관리 노드를 그룹으로 조직화 할수 있고, 중첩 그룹을 사용할 수 있음
  • 모듈
    • Ansible을 실행하는 Python 코드 단위
    • 각 모듈은 호스트에 패키지를 설치 및 관리하고, 데이터베이스의 사용자를 관리하고, 네트워크 장치의 VLAN 인터페이스를 관리할 수 있는 등 약 3000개의 모듈이 있음
    • 하나의 모듈은 하나의 작업을 실행할 수 있고, 플레이북을 이용해 여러 모듈을 선언해 여러 작업을 수행할 수 있음
  • 작업(Task)
    • Ansible의 작업 실행 단위
    • 하나의 모듈이 하나의 작업이 되며, Ad-hoc 명령을 통해 단일 작업을 실행하거나, 플레이북을 작성해 여러작업을 실행할 수 있음
  • Ad-hoc 명령
    • Ansible 명령을 이용하여 단일 작업을 실행할 수 있음
  • Play
    • 특정 관리 노드를 대상으로한 순서가 지정된 작업 목록
  • Playbook
    • 관리 노드에서 실행할 모듈을 인자와 함께 정의한 파일
    • YAML로 작성되며, Ansible의 핵심
    • ansible-playbook 명령을 이용해 플레이북을 실행할 수 있음

Categories:

Updated:

Leave a comment