IT/cloud

[Ansible] lac를 통한 클라우드 인프라 구축-2

lakedata 2025. 2. 13. 22:24

플레이북 실행

3가지 유형의 파일

  • 구성파일
  • 인벤토리 파일
  • 플레이북 파일

구성파일

구성파일: Ansible의 동작방법을 설정하는 파일
기본위치 /etc/ansible/ansible.cfg

기본적으로 구성 파일은 /etc/ansible/ansible.cfg에 위치하지만, 일반적으로 프로젝트별 작업 디렉토리를 생성해 해당 디렉토리에서 구성 파일을 관리합니다.

기본 인벤토리 파일

[defaults]
inventory = ./inventory
remote_user = user
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false #기본값 

다음은 각 행에 대한 설명입니다. (중요!!!!)

  • [defaults] : 섹션이름. 기본적인 내용을 설정
    • inventory : 인벤토리 파일의 경로를 지정
    • remote_user : 관리 호스트에 ssh 연결할 때 사용할 사용자 이름 지정. 지정하지 않았을 경우 현재 사용자의 이름이 지정 (=ansible user)
    • ask_pass : 관리호스트에 ssh 연결할 때 암호를 묻는 메세지 표시 여부를 지정 (false면 바로 설치 가능)
    • become : 연결 후 관리 호스트에서 자동으로 사용자를 전환할지의 여부를 지정
      (일반적으로 root 로 전환)
    • become_method : 사용자 전환 방식을 지정. (일반적으로 기본값 sudo 를 사용, su 는 옵션)
    • become_user : 관리 호스트에서 전환할 사용자를 지정(일반적으로 기본값인 root )
    • become_ask_pass : become_method 매개 변수에 대한 암호를 묻는 메시지 표시여부를 지정[privilege_escalation] : 권한 상승을 위한 사용자 전환 설정

ansible.cfg 구성

vi ansible.cfg

ansible config list #목록

권한 상승

ansible_user ALL=(ALL) NOPASSWD:ALL

Ansible 구성 파일의[privilege_escalation] 섹션에 설정

구성 파일에 become = true 매개 변수를 설정

인벤토리 파일

  • 정적
  • 동적
vi inventory

호스트 명 혹은 IP주소를 한줄에 입력
호스트 그룹을 지정

그룹에 포함하지 않는 것은 맨 위에 지정
맨 아래에 지정하면 마지막 그룹에 편성

serverd # 그룹 지정 X

[seoul]
servera

[busan]
serverb
serverc

[dev]
serverc

[prod]
servera
serverb

serverd #prod 그룹

all : 모든 호스트 목록을 포함하는 그룹 - ungrouped : 인벤토리에서 그룹에 속하지 않는 모든 호스트 목록

중첩 그룹

[dev]
web1.test.com
web2.test.com

[prod]
web3.test.com
web4.test.com

[web-servers:children]
dev
prod

호스트 그룹 이름 생성 시:children 접미사를 추가, 그룹을 멤버로(상속)
: web1,web2,web3,web4 다 실행

범위 지정

[처음값:마지막값]
  • 192.168.[4:7].[0:255] → 192.168.4.0 ~ 192.168.7.255 범위의 모든 IP 주소
  • server[01:20].example.com → server01.example.com 부터 server20.example.com 까지 모든 호스트
  • [a:e].dns.example.com → a.dns.example.com 부터 e.dns.example.com 까지의 호스트

모든 호스트 한 줄로 표현 가능

 

인벤토리 파일 위치 재정의

ansible 명령어의 -i 인자는 인벤토리 파일의 기본위치가 아닌 사용자가 원하는 파일로 대체하는 옵션

ansible -i ./inventory

사용자는 앤서블 구성파일의 defaults 섹션에서 인벤토리 파일의 위치를 정의

[defaults]
inventory = ./inventory

동적 인벤토리

실행 가능한 스크립트 파일들

  • 프로바이더 스크립트와 CLI를 통해 자동으로 호스트를 감지하고 목록화