본문 바로가기

Automation Tools/Ansible

ansible | inventory 내 다른 host 변수 참조

반응형

Inventory

  • "remote_server", "test_win" 2개의 호스트가 "plo" 란 그룹으로 묶이고 각각의 호스트 변수와 그룹변수를 가지고 있다.
> cat host.ini 
[plo]
remote_server    spec_disk=140 spec_cpu=8 spec_memory=8 backup_drive=c:,e: 
test_win    spec_disk=100 spec_cpu=8 spec_memory=8 backup_drive=c:

[plo:vars]
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

 

 

Playbook

  • "remote_server"을 대상으로 playbook을 실행 할 때 "test_win" 호스트 변수를 참조하게 한다.
  • 테스트를 위하여 playbook은 debug 모듈을 사용하고 변수를 msg로 표출한다.
  • 형식 : {{ hostvars['host']['vars'] }}
cat test.yml 
---
- hosts: remote_server
  gather_facts: no
  ignore_unreachable: yes
  tasks:
  - name: other host vars
    debug:
      msg: "{{ hostvars['test_win']['backup_drive'] }}"

 

  • "remote_server" 의 "backup_drive" 는 "c:, e:" 이고 "test_win"의 "backup_drive" 는 "c:" 이므로 playbook 실행 시 "test_win"의 "c:" 값이 출력 된다.
> ansible-playbook -i host.ini test.yml 
{
    "custom_stats": {}, 
    "global_custom_stats": {}, 
    "plays": [
        {
...
            "tasks": [
                {
                    "hosts": {
                        "remote_server": {
                            "_ansible_no_log": false, 
                            "_ansible_verbose_always": true, 
                            "action": "debug", 
                            "changed": false, 
                            "msg": "c:"
                        }
                    }, 
...
    ], 
    "stats": {
        "remote_server": {
            "changed": 0, 
            "failures": 0, 
            "ignored": 0, 
            "ok": 1, 
            "rescued": 0, 
            "skipped": 0, 
            "unreachable": 0
        }
    }
}

 

 

참조 

  • host에서 사용 가능한 변수 목록을 아래와 같이 출력 할 수 있다.
  • var: "hostvars"
> cat test.yml 
---
- hosts: all
  gather_facts: no
  ignore_unreachable: yes
  tasks:
  - name: hostvars
    debug:
      var: "hostvars"
반응형