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 : 패키지를 설치할지, 삭제할지, 최신상태로 유지할지 등 상태 지정