운영 Ansible - Facts 활용
페이지 정보
본문
Ansible을 사용하면 원격 시스템 또는 Ansible 자체에 대한 정보가 포함된 특정 변수를 검색하거나 활용할 수 있습니다. 원격 시스템과 관련된 변수를 fact 라고 합니다. Ansible Facts 를 통해 한 시스템의 동작 또는 상태를 다른 시스템의 구성으로 사용할 수 있습니다. 예를 들어 한 시스템의 IP 주소를 다른 시스템의 구성 값으로 사용할 수 있습니다.
Ansible 팩트는 운영 체제, IP 주소, 연결된 파일 시스템 등을 포함하여 원격 시스템과 관련된 데이터입니다.
ansible_facts 변수를 활용하여 데이터에 액세스 할 수 있으며, ansible_ 접두사가 있는 변수로 일부 ansible fact 에 액세스 할 수 있습니다.
> 사용 가능한 모든 fact 확인
> Ad-Hoc Command 를 활용한 fact 확인
>수집 가능한 Ansible Fact 예시
>첫 번째 디스크의 모델을 참조하는 예시
> 시스템 호스트 참조 예시
기본적으로 Ansible은 각 플레이를 시작할 때 fact 를 수집합니다. fact 를 수집 할 필요가 없는 경우 (예 : 중앙에서 시스템에 대한 모든 것을 알고 있는 경우) 확장성을 개선하기 위해 플레이 fact 수집을 끌 수 있습니다. fact 수집을 비활성화 하면 시스템 성능 및 속도가 향상될 수 있습니다.
fact에 사용자 지정 값을 추가하려면 custom facts 모듈을 사용하거나 set_fact 모듈을 활용하여 임시 fact 를 설정할 수 있습니다. 이외에도 facts.d 디렉토리를 사용하여 영구적으로 custom facts 를 제공할 수 있습니다.
1) facts.d
원격 호스트에 /etc/ansible/facts.d 디렉토리를 생성하고 custom fact 를 제공할 파일을 디렉토리에 추가합니다. 모든 파일 이름은 .fact 형식이 되어야 합니다.
> /etc/ansible/facts.d/preferences.fact 파일 작성 예시
> custom fact 수집 예시
1. Ansible Facts
Ansible 팩트는 운영 체제, IP 주소, 연결된 파일 시스템 등을 포함하여 원격 시스템과 관련된 데이터입니다.
ansible_facts 변수를 활용하여 데이터에 액세스 할 수 있으며, ansible_ 접두사가 있는 변수로 일부 ansible fact 에 액세스 할 수 있습니다.
1 2 3 | - name: Print all available facts debug: var: ansible_facts | cs |
1 | ansible <hostname> -m setup | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | { "ansible_all_ipv4_addresses": [ "REDACTED IP ADDRESS" ], "ansible_all_ipv6_addresses": [ "REDACTED IPV6 ADDRESS" ], "ansible_apparmor": { "status": "disabled" }, "ansible_architecture": "x86_64", "ansible_bios_date": "11/28/2013", "ansible_bios_version": "4.1.5", "ansible_cmdline": { "BOOT_IMAGE": "/boot/vmlinuz-3.10.0-862.14.4.el7.x86_64", "console": "ttyS0,115200", "no_timer_check": true, "nofb": true, "nomodeset": true, "ro": true, "root": "LABEL=cloudimg-rootfs", "vga": "normal" }, "ansible_date_time": { "date": "2018-10-D25", "day": "25", "epoch": "1540469324", "hour": "12", "iso8601": "2018-10-25T12:08:44Z", "iso8601_basic": "20181025T120844109754", "iso8601_basic_short": "20181025T120844", "iso8601_micro": "2018-10-25T12:08:44.109968Z", "minute": "08", "month": "10", "second": "44", "time": "12:08:44", "tz": "UTC", "tz_offset": "+0000", "weekday": "Thursday", "weekday_number": "4", "weeknumber": "43", "year": "2018" }, "ansible_default_ipv4": { "address": "REDACTED", "alias": "eth0", "broadcast": "REDACTED", "gateway": "REDACTED", "interface": "eth0", "macaddress": "REDACTED", "mtu": 1500, "netmask": "255.255.255.0", "network": "REDACTED", "type": "ether" }, ( 중 ... 략 ) "ansible_python_version": "2.7.5", "ansible_real_group_id": 1000, "ansible_real_user_id": 1000, "ansible_selinux": { "config_mode": "enforcing", "mode": "enforcing", "policyvers": 31, "status": "enabled", "type": "targeted" }, "ansible_selinux_python_present": true, "ansible_service_mgr": "systemd", "ansible_ssh_host_key_ecdsa_public": "REDACTED KEY VALUE", "ansible_ssh_host_key_ed25519_public": "REDACTED KEY VALUE", "ansible_ssh_host_key_rsa_public": "REDACTED KEY VALUE", "ansible_swapfree_mb": 0, "ansible_swaptotal_mb": 0, "ansible_system": "Linux", "ansible_system_capabilities": [ "" ], "ansible_system_capabilities_enforced": "True", "ansible_system_vendor": "Xen", "ansible_uptime_seconds": 151, "ansible_user_dir": "/home/zuul", "ansible_user_gecos": "", "ansible_user_gid": 1000, "ansible_user_id": "zuul", "ansible_user_shell": "/bin/bash", "ansible_user_uid": 1000, "ansible_userspace_architecture": "x86_64", "ansible_userspace_bits": "64", "ansible_virtualization_role": "guest", "ansible_virtualization_type": "xen", "gather_subset": [ "all" ], "module_setup": true } | cs |
1 | {{ ansible_facts['devices']['xvda']['model'] }} | cs |
1 | {{ ansible_facts['nodename'] }} | cs |
2. Facts 비활성화
기본적으로 Ansible은 각 플레이를 시작할 때 fact 를 수집합니다. fact 를 수집 할 필요가 없는 경우 (예 : 중앙에서 시스템에 대한 모든 것을 알고 있는 경우) 확장성을 개선하기 위해 플레이 fact 수집을 끌 수 있습니다. fact 수집을 비활성화 하면 시스템 성능 및 속도가 향상될 수 있습니다.
1 2 | - hosts: whatever gather_facts: false | cs |
3. Custom Facts
fact에 사용자 지정 값을 추가하려면 custom facts 모듈을 사용하거나 set_fact 모듈을 활용하여 임시 fact 를 설정할 수 있습니다. 이외에도 facts.d 디렉토리를 사용하여 영구적으로 custom facts 를 제공할 수 있습니다.
1) facts.d
원격 호스트에 /etc/ansible/facts.d 디렉토리를 생성하고 custom fact 를 제공할 파일을 디렉토리에 추가합니다. 모든 파일 이름은 .fact 형식이 되어야 합니다.
1 2 3 | [general] asdf=1 bar=2 | cs |
1 2 3 4 5 6 7 8 9 10 | ansible <hostname> -m setup -a "filter=ansible_local" "ansible_local": { "preferences": { "general": { "asdf" : "1", "bar" : "2" } } } | cs |
- 이전글Ansible Galaxy 21.06.14
- 다음글Ansible - Playbook 에러 처리 21.04.14
댓글목록
등록된 댓글이 없습니다.