웹사이트 검색

Ansible의 핵심 구성 요소 이해 - 1부


Red Hat Certified Specialist in Ansible Automation 시험(EX407)Ansible을 사용하여 자동화하는 기술을 테스트하는 Red Hat의 새로운 인증 프로그램입니다. 시스템 및 애플리케이션 구성.

이 시리즈의 제목은 "The Red Hat Certified Specialist in Ansible Automation Exam(EX407)"이며 Red Hat Enterprise Linux 7.5을 기반으로 하는 다음 시험 목표를 다룹니다. 이 Ansible 시리즈에서 다룰 Ansible 2.7:

해당 국가의 수수료를 확인하고 시험에 등록하려면 Ansible Automation 시험 페이지를 확인하세요.

Ansible 시리즈의 1부에서는 Ansible의 핵심 구성 요소에 대한 몇 가지 기본 개요를 논의합니다.

Ansible의 핵심 구성 요소 이해

AnsibleRedHat이 제공하는 무료 오픈소스 자동화 플랫폼으로, 이를 통해 하나의 중앙 위치에서 여러 서버를 관리하고 제어할 수 있습니다. 수행해야 하는 여러 개의 반복적인 작업이 있는 경우 특히 이상적입니다. 따라서 각 원격 노드에 로그인하여 작업을 수행하는 대신 중앙 위치에서 편안하게 로그인하고 서버를 편안하게 관리할 수 있습니다.

이는 애플리케이션 배포의 일관성을 유지하고 인적 오류를 줄이며 반복적이고 다소 지루한 작업을 자동화하려는 경우 유용합니다.

물론 Puppet, Chef, SaltAnsible에 대한 다른 대안도 있습니다. 그러나 Ansible은 사용하기 쉽고 배우기 쉽기 때문에 주로 선호됩니다.

당신이 묻는 질문을 배우는 것이 왜 간단한가요? 이는 Ansible이 구성 및 자동화 작업에서 사람이 읽을 수 있고 따라하기 매우 쉬운 YAML(Yet Another Markup Language)을 사용하기 때문입니다. YAML은 원격 서버와 통신하기 위해 원격 노드에 에이전트를 설치해야 하는 다른 자동화 플랫폼과 달리 SSH 프로토콜을 사용하여 원격 서버와 통신합니다.

Ansible을 시작하기 전에, 앞으로 나아갈 때 길을 잃거나 혼동하지 않도록 몇 가지 기본 용어를 숙지하는 것이 중요합니다.

목록

인벤토리는 관리 및 구성 중인 서버 또는 노드 목록이 포함된 텍스트 파일입니다. 일반적으로 서버는 호스트 이름이나 IP 주소를 기준으로 나열됩니다.

인벤토리 파일에는 다음과 같이 IP 주소로 정의된 원격 시스템이 포함될 수 있습니다.

10.200.50.50
10.200.50.51
10.200.50.52

또는 그룹별로 나열할 수도 있습니다. 아래 예에서는 웹 서버데이터베이스라는 두 그룹 아래에 서버가 배치되어 있습니다. 이렇게 하면 IP 주소가 아닌 그룹 이름에 따라 참조될 수 있습니다. 이는 운영 프로세스를 더욱 단순화합니다.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

대규모 프로덕션 환경에 있는 경우 여러 서버로 구성된 여러 그룹을 가질 수 있습니다.

플레이북

플레이북은 원격 호스트 또는 호스트 시스템 그룹에서 작업이 실행되는 방법을 정의하는 구성 관리 스크립트 세트입니다. 스크립트나 지침은 YAML 형식으로 작성됩니다.

예를 들어 CentOS 7에 Apache 웹 서버를 설치하고 httpd.yml이라고 부르는 플레이북 파일이 있을 수 있습니다.

플레이북을 만들려면 명령어를 실행하세요.

touch playbook_name.yml

예를 들어 httpd라는 플레이북을 만들려면 다음 명령을 실행하세요.

touch httpd.yml

YAML 파일은 표시된 것처럼 3개의 하이픈으로 시작됩니다. 파일 내부에 다음 지침을 추가합니다.

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

위의 플레이북은 인벤토리 파일에 웹 서버로 정의된 원격 시스템에 Apache 웹 서버를 설치합니다. 웹 서버를 설치한 후 Ansible은 나중에 Apache 웹 서버가 시작되어 실행 중인지 확인합니다.

모듈

모듈은 원격 호스트나 서버에서 명령을 실행하기 위해 플레이북에 사용되는 개별 코드 단위입니다. 각 모듈 뒤에는 인수가 옵니다.

모듈의 기본 형식은 키: 값입니다.

- name: Install apache packages 
    yum:   name=httpd  state=present

위의 YAML 코드 조각에서 -nameyum은 모듈입니다.

연극

Ansible 플레이는 서버에서 수행할 작업을 정의하는 스크립트 또는 명령입니다. 희곡 모음이 플레이북을 구성합니다. 즉, 플레이북은 서버에서 수행할 작업을 각각 명확하게 규정하는 여러 플레이의 모음입니다. 재생은 YAML 형식으로 존재합니다.

변수

프로그래밍에 대한 배경 지식이 있다면 아마도 변수를 사용해 본 적이 있을 것입니다. 기본적으로 변수는 값을 나타냅니다. 변수에는 문자, 숫자, 밑줄이 포함될 수 있지만 항상 문자로 시작해야 합니다.

변수는 지침이 시스템마다 다를 때 사용됩니다. 이는 구성이나 다양한 서비스 및 기능 중에 특히 그렇습니다.

변수에는 3가지 주요 유형이 있습니다.

  • 플레이북 변수
  • 재고 변수
  • 특수변수

Ansible에서는 먼저 vars k를 사용하여 변수를 정의한 다음 변수 이름과 값을 정의합니다.

구문은 다음과 같습니다.

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

아래 코드를 고려해보세요.

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

위의 예에서 여기의 변수는 web_directory이며 /var/www/html/ 경로에 디렉토리를 생성하도록 ansible에 지시합니다.

사리

사실은 호스트 시스템에서 플레이북을 실행할 때 Ansible이 수집하는 시스템 속성입니다. 속성에는 호스트 이름, OS 제품군, CPU 유형, CPU 코어 등이 포함됩니다.

사용할 수 있는 사실의 수를 살펴보려면 명령을 실행하십시오.

ansible localhost -m setup

보시다시피, 기본적으로 수많은 사실이 표시되었습니다. 표시된 대로 필터 매개변수를 사용하여 결과의 범위를 더 좁힐 수 있습니다.

ansible localhost -m setup -a "filter=*ipv4"

구성 파일

Ansible에서 구성 파일은 Ansible 실행 방법을 결정하는 다양한 매개변수 설정이 포함된 파일입니다. 기본 구성 파일은 /etc/ansible/ 디렉토리에 있는 ansible.cfg 파일입니다.

다음을 실행하여 구성 파일을 볼 수 있습니다.

cat /etc/ansible/ansible.cfg

보시다시피 인벤토리라이브러리 파일 경로, sudo 사용자, 플러그인 필터, 모듈 등과 같은 여러 매개변수가 포함되어 있습니다. 이러한 매개변수는 주석을 달아 간단히 조정할 수 있습니다. 꺼내서 그 안의 값을 수정합니다.

또한 기본 구성 파일 외에도 Ansible과 함께 작동하는 여러 구성 파일을 가질 수 있습니다.

요약

Ansible의 핵심 구성요소를 살펴보았으므로 앞으로 나아갈 때 해당 구성요소를 손쉽게 찾아 선택할 수 있기를 바랍니다. 다음 주제에 참여하세요.