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를 통해 자동으로 호스트를 감지하고 목록화