Ansible - Facts 활용 > Ansible 자료실

본문 바로가기
사이트 내 전체검색

Ansible 자료실

운영 Ansible - Facts 활용

페이지 정보

profile_image
작성자 AnsibleM
댓글 0건 조회 742회 작성일 21-05-07 16:39

본문

Ansible을 사용하면 원격 시스템 또는 Ansible 자체에 대한 정보가 포함된 특정 변수를 검색하거나 활용할 수 있습니다. 원격 시스템과 관련된 변수를 fact 라고 합니다. Ansible Facts 를 통해 한 시스템의 동작 또는 상태를 다른 시스템의 구성으로 사용할 수 있습니다. 예를 들어 한 시스템의 IP 주소를 다른 시스템의 구성 값으로 사용할 수 있습니다.


1. Ansible Facts

Ansible 팩트는 운영 체제, IP 주소, 연결된 파일 시스템 등을 포함하여 원격 시스템과 관련된 데이터입니다.
ansible_facts 변수를 활용하여 데이터에 액세스 할 수 있으며, ansible_ 접두사가 있는 변수로 일부 ansible fact 에 액세스 할 수 있습니다.

1
2
3
- name: Print all available facts
  debug:
    var: ansible_facts
cs
> 사용 가능한 모든 fact 확인

1
ansible <hostname> -m setup
cs
> Ad-Hoc Command 를 활용한 fact 확인

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
>수집 가능한 Ansible Fact 예시

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
> /etc/ansible/facts.d/preferences.fact 파일 작성 예시

1
2
3
4
5
6
7
8
9
10
ansible <hostname> -m setup -"filter=ansible_local"
 
"ansible_local": {
        "preferences": {
            "general": {
                "asdf" : "1",
                "bar"  : "2"
            }
        }
 }
cs
> custom fact 수집 예시

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

접속자집계

오늘
469
어제
331
최대
680
전체
82,214
Copyright © www.linuxdata.org All rights reserved.