IaC/Ansible

Ansible 이란? (설치 및 간단한 Test)

chanstory 2023. 6. 16. 15:13
반응형

Ansible 이란?

=> IT 자동화 및 구성 관리 도구

=> 시스템 설정, 배포 및 관리 작업 자동화 도구

=> YAML 기반의 Playbook 구성파일을 사용하여 시스템 구성 및 관리 작업 정의

     * play book 은 호스트 그룹, 태스크, 변수 등을 포함하며 원하는 상태를 명시적으로 정의하여

       시스템을 해당 상태로 구성

=> 원격 시스템에 에이전트를 설치하거나 구성할 필요가 없음

=> SSH를 통해 원격 시스템에 접속하여 명령 실행 및 상태 확인 가능

=> 오픈 소스

 

 

Ansible 설치

(필자는 VMware 내 CentOS 7.9 에서 테스트 하였음)

EPEL 저장소 및 ansible 설치

sudo yum install epel-release
sudo yum install ansible 
// ansible 및 EPEL 저장소 설치
// -y 옵션 추가해서 설치해도됨

* EPEL 이란 (Extra Packages for Enterprise Linux)

- 엔터프라이즈 리눅스 배포판인 CentOS 등을 위한 추가 패키지 저장소

- CentOS와 같은 엔터프라이즈 리눅스 배포판의 기본 패키지 저장소에 포함되지 않은 추가패키지를 제공

 

 

playbook.yaml 파일 생성

(yaml 에 대해선 따로 찾아보길 바람 / 이전 작성한 게시글 https://chance-story.tistory.com/19)

 

* Hello, Ansible 를 출력하는 스크립트 파일을 생성하고 한단계 상위 디렉토리로 파일 복사

--- # YAML 문서의 시작
- name: 쉘 스크립트 실행    # 플레이북 이름 지정
  hosts: localhost        # 작업을 수행할 대상 호스트 그룹이나 호스트 지정 
                          # 필자는 localhost 진행
  tasks:                  # 플레이북에서 수행할 작업들을 정의하는 섹션
    - name: 쉘 스크립트 생성
      copy:               # copy 모듈 사용
        content: |        # 생성할 파일의 내용을 이곳에 다음줄 부터 입력
          #!/bin/bash
          echo "Hello, Ansible!"
        dest: /home/test1/ansible_test/hello.sh   # 저장될 경로
        mode: '0755'                              # 생성 파일의 퍼미션모드
    - name: 복사
      copy:
        src: /home/test1/ansible_test/hello.sh    # 원본파일 경로
        dest: /home/test1/                        # 복사될 경로

 

Ansible 옵션

1. copy : 파일이나 디렉토리 복사

- src : 복사할 원본 파일 또는 디렉토리 경로 지정

- dest : 복사한 파일 또는 디렉토리를 위치시킬 대상 경로 지정

- mode : 복사된 파일의 퍼미션(mode)을 지정

- owner 및 group : 복사된 파일의 소유자와 그룹 지정

- backup : 복사 대상 파일이 이미 존재하는 경우 백업 여부 설정

 

2. template : 템플릿 파일을 사용하여 파일을 생성

- src : 사용할 템플릿 파일 경로 설정

- dest : 생성된 파일을 위치시킬 대상 경로 지정

- mode : 생성된 파일 퍼미션(mode) 지정

- owner 및 group : 생성된 파일의 소유자와 그룹 지정

- backup : 생성 대상 파일이 이미 존재하는 경우 백업 여부 설정

- vars : 템플릿 파일에서 사용할 변수 정의

 

3. lineinfile : 파일에서 특정 라인을 찾아 변경하거나 추가

- path : 대상 파일의 경로 지정

- line : 추가하거나 변경할 라인 내용 지정

- regexp : 변경할 라인을 찾기 위한 정규식 패턴 지정

- backrefs : 정규식 그룹을 사용하여 변경할 라인 찾기

- state : 라인을 추가할지, 변경할지, 제거할지 등의 상태 지정

 

4. apt, yum, dnf, zypper 등 패키지 관리자를 사용하여 패키지 설치 및 삭제

- name : 설치할 패키지 이름 지정

- state : 패키지를 설치할지, 삭제할지, 최신상태로 유지할지 등 상태 지정

반응형