Ansible setup 모듈(setup module)을 사용하는 방법
Ansible의 setup 모듈은 대상 호스트의 시스템 정보를 수집하여 Ansible 플레이북에서 사용할 수 있는 팩트(사실)를 생성합니다. 이는 호스트의 운영 체제, 하드웨어, 네트워크 정보 등 다양한 정보를 확인하는 데 사용됩니다.
ansible facts
ansible facts는 운영체제, IP주소, 연결된 파일시스템 등을 포함하여 원격시스템과 관련된 데이터
setup 모듈 사용 방법
ansible -i inventory/hosts localhost -m setup
$ ansible -i inventory/hosts -m setup localhost
bvm41 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.56.11",
"192.168.101.199"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe9d:eae8",
"fe80::480e:72fa:8856:aff9"
],
"ansible_apparmor": {
"status": "disabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "12/01/2006",
"ansible_bios_version": "VirtualBox",
"ansible_cmdline": {
"BOOT_IMAGE": "/vmlinuz-3.10.0-1160.25.1.el7.x86_64",
"LANG": "en_US.UTF-8",
"crashkernel": "auto",
"quiet": true,
"rhgb": true,
"ro": true,
"root": "UUID=ad62d3f6-1579-471d-8d9f-7be9d4dab178"
},
"ansible_date_time": {
"date": "2021-06-03",
"day": "03",
"epoch": "1622687020",
"hour": "11",
"iso8601": "2021-06-03T02:23:40Z",
"iso8601_basic": "20210603T112340814113",
"iso8601_basic_short": "20210603T112340",
"iso8601_micro": "2021-06-03T02:23:40.814113Z",
"minute": "23",
"month": "06",
"second": "40",
"time": "11:23:40",
"tz": "KST",
"tz_offset": "+0900",
"weekday": "목요일",
"weekday_number": "4",
"weeknumber": "22",
"year": "2021"
},
...
"ansible_selinux_python_present": true,
"ansible_service_mgr": "systemd",
"ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAF6dl8y1Iw7wTYsQMoPsfIDphwEi3NN7vZLE7sKgk2yFpwwp0fsJ5ZEBZPoTMPnspnsv1Dl+9iTJ6mUMT1fyu0=",
"ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIAuOF7DbOMaGF92QID1TRQ/TW7JjPlRVilIeb8v/rd+O",
"ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABAQCzrs0I+bLAivb+aN2s9+hMwPM9lR2EmQdLrUuelA4VY0WQ3wqkh5Vb1+mhCT9w2mPA/qniKxwhneANKKrYgGXCeJhhnhvxhAnwm82qSI+Cis2yNSQIaejauaozlIXRmmgjLRq6L+3nceCsHMzTOkKTDs4oRRy/gYkmzy7cvhL9Ck4XY0sZw3dVTJm022QQxRtW07hbyT1U0ET5sMFJdYlm7j/cF7eM8datdMEfs1X/Woa9mOKvjnzY7UKSqGZUubdiRNVQe1046LtogGTtpgr8Xd85VzXSB7RQW7oRhRU7u0dCy0lYWIVhDWoLSOG/Z6uVWc3gQza0uZwR2eMO2yoJ",
"ansible_swapfree_mb": 4095,
"ansible_swaptotal_mb": 4095,
"ansible_system": "Linux",
"ansible_system_capabilities": [
""
],
"ansible_system_capabilities_enforced": "True",
"ansible_system_vendor": "innotek GmbH",
"ansible_uptime_seconds": 9916,
"ansible_user_dir": "/home/ec2-user",
"ansible_user_gecos": "",
"ansible_user_gid": 1000,
"ansible_user_id": "ec2-user",
"ansible_user_shell": "/bin/zsh",
"ansible_user_uid": 1000,
"ansible_userspace_architecture": "x86_64",
"ansible_userspace_bits": "64",
"ansible_virtualization_role": "guest",
"ansible_virtualization_type": "virtualbox",
"discovered_interpreter_python": "/usr/bin/python",
"gather_subset": [
"all"
],
"module_setup": true
},
"changed": false
}
많은 양의 데이터가 출력되므로 필터 파라미터를 사용하여 필요한 데이터만 출력할 수 있다
파라미터
IP 주소 및 CPU 정보 출력
ansible -i inventory/hosts localhost -m setup -a "filter=ansible_all_ipv4_addresses"
$ ansible -i inventory/hosts localhost -m setup -a "filter=ansible_all_ipv4_addresses"
bvm41 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.56.11",
"192.168.101.199"
],
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
}
ansible -i inventory/hosts localhost -m setup -a "filter=ansible_processor"
$ ansible -i inventory/hosts localhost -m setup -a "filter=ansible_processor"
bvm41 | SUCCESS => {
"ansible_facts": {
"ansible_processor": [
"0",
"GenuineIntel",
"Intel(R) Core(TM) i7-4558U CPU @ 2.80GHz"
],
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
}
setup 모듈을 사용하여 Ansible에서 호스트 정보를 수집하는 간단한 예제
1. Ansible 플레이북 작성
Ansible 플레이북을 작성합니다. 예를 들어 collect_host_info.yml라는 플레이북 파일을 만듭니다.
---
- name: Collect Host Information
hosts: your_target_host
gather_facts: yes # setup 모듈 사용을 위해 필요한 옵션
tasks:
- name: Run setup module
setup:
여기서 your_target_host는 정보를 수집하려는 대상 호스트의 그룹이나 호스트 이름으로 바꿔주어야 합니다.
2. 플레이북 실행
작성한 플레이북을 실행합니다.
ansible-playbook -i your_inventory_file collect_host_info.yml
여기서 your_inventory_file는 대상 호스트를 지정하는 인벤토리 파일의 경로입니다.
3. 수집된 정보 확인
Ansible이 플레이북을 실행하면, 호스트에서 수집된 정보는 Ansible 팩트로 저장됩니다. 이 정보는 이후의 태스크에서 사용할 수 있습니다.
수집된 정보는 다음과 같이 확인할 수 있습니다.
ansible your_target_host -m setup
your_target_host는 호스트 이름이나 호스트 그룹으로 변경되어야 합니다.
이렇게 함으로써 setup 모듈을 사용하여 호스트에서 수집한 정보를 활용할 수 있습니다. 이 정보는 특히 플레이북에서 동적으로 환경에 맞게 동작해야 하는 경우에 유용하게 사용됩니다.
참고URL
- https://docs.ansible.com/ansible/2.9/modules/setup_module.html
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_vars_facts.html
'리눅스' 카테고리의 다른 글
sipcalc 명령어 (0) | 2021.06.03 |
---|---|
zsh 프롬프트 전체 경로 대신 현재 디렉터리만 표시하는 방법 (0) | 2021.06.03 |
ansible inventory(인벤토리) 설정 (0) | 2021.06.01 |
[리눅스] 리눅스에서 삭제된 파일의 디스크 공간을 복구하는 방법 (0) | 2021.05.30 |
[리눅스] ab(Apache Bench) tools 에러 (0) | 2021.05.30 |