본문으로 바로가기

Ansible 정적 인벤터리

category Ansible 2021. 6. 21. 17:32
반응형

시스템의 정보가 고정적이고 소규모라면 인벤터리 파일로 정의할 수 있지만, 호스트 수와 접속 정보(IP 주소)가 자주 바뀌거나 관리하는 호스트 수가 대규모일 때는 동적 인벤토리를 이용해 IaaS의 API와 각종 관리 시스템에서 동적으로 호스트 정보를 가져오는 편이 좋다.

 

정적 Inventory 파일을 작성하는 방법

 

여러 대로 구성된 시스템일 때에는 그룹화 해야한다.

 

1. 그룹 변수를 정의한다.

인벤토리 파일에서 호스트 단위로 변수를 정의할 수 있을 뿐만 아니라 그룹 단위로 변수를 정의할 수도 있다.

그룹 변수를 정의하는 방법은 호스트 변수를 정의할 때와 달리 [그룹 이름:vars] 형식으로 그룹 변수 전용 섹션을 사용한다.

 

ex) 루트(root)가 아닌 작업 관리자의 이름과 UID를 각각 admin_username, admin_uid라는 이름의 그룹으로 지정하고 

싶을 때

[app]

app1 ansible_host=192.168.1.172
app2 ansible_host=192.168.1.173



[app:vars]

admin_username=app_user
admin_uid=1001

2. 호스트를 여러 그룹에 할당한다.

호스트의 역할 별로 인벤터리를 그룹화 했으나, 호스트의 위치에 따른 리전, 시스템의 운용단계 등에 따라 파라미터를 변경하는 경우도 있다. 이럴 때는 1개의 호스트를 여러 그룹에 추가할 수 있다.

ex) 호스트가 있는 리전을 고려 app1은 koreaeast 그룹에 app2는 koreawest 그룹에

[app]

app1 ansible_host=192.168.1.172
app2 ansible_host=192.168.1.173



[app:vars]

admin_username=app_user
admin_uid=1001

[koreaeast]
app1

[koreawest]
app2

3. 인벤토리 변수를 yaml 파일에 정의한다.

 

1) 변수를 정의하는 파일 이름의 규칙

  • 인벤토리 변수를 설정한 YAML 파일의 저장 장소와 파일 이름의 규칙은 앤서블에서 다음과 같이 정해져있다.
  • 호스트 변수를 정의하는 파일은 host_vars/[호스트 이름].yml로 한다.
  • 그룹 변수를 정의하는 파일은 group_vars/[그룹 이름].yml로 한다.
  • host_vars 디렉터리, group_vars 디렉터리는 인벤터리 파일 또는 플레이북 파일과 같은 디렉토리에 있어야 한다.
반응형