카이도스의 Tech Blog
Ansible 기본4(Facts) 본문
728x90
반응형
2024.03.11 - [Ansible] - Ansible 기본1(설치 후 기본 활용)
2024.03.26 - [Ansible] - Ansible 기본2(변수)
2024.03.26 - [Ansible] - Ansible 기본3(Ansible Vault)
Ansible 실무에 활용 전 vm 통해 테스트하는 방법 안내하도록 하겠습니다.
관련하여 Ansible 사용하실분들은 참고하여 실무에 적용하시면 좋을 것 같습니다.
무작정 따라하시기보다, 내용 변경해가며 따라하시는걸 추천드립니다.
서버 정보
ansible-control | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.123 |
ansible1 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.124 |
ansible2 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.125 |
ansible3 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.126 |
설정파일 수정이 많다보니 vscode로 진행했습니다.
DevOps 업무하게 되면 vscode에 익숙해져야 할 것 같네요.
https://code.visualstudio.com/
Facts 자동으로 검색한 변수
Discovering variables: facts and magic variables
- Facts 사용하기 : 기본 활성화로, 플레이북을 실행할 때 자동으로 팩트가 수집됨. ansible_facts 변수로 사용.
- ansible/facts.yml
---
- hosts: db
tasks:
- name: Print all facts
ansible.builtin.debug:
var: ansible_facts
- 실행
#
ansible-playbook facts.yml
...
"default_ipv4": {
"address": "10.10.x.126",
"fqdn": "ansible3",
...
"kernel": "6.5.0-17-generic"
...
- ansible/facts1.yml
# 파일 복사
cp facts.yml facts1.yml
# facts1.yml 파일 편집
---
- hosts: db
tasks:
- name: Print all facts
ansible.builtin.debug:
msg: >
The default IPv4 address of {{ ansible_facts.fqdn }}
is {{ ansible_facts.default_ipv4.address }}
- 실행
#
ansible-playbook facts1.yml
...
TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************
ok: [ansible3]
TASK [Print all facts] **********************************************************************************************************************************************************************************************************************
ok: [ansible3] => {
"msg": "The default IPv4 address of ansible3 is 10.10.x.126"
}
- 변수로 사용할 수 있는 Ansible Facts
- ansible/facts2.yml
# 파일 복사
cp facts1.yml facts2.yml
# facts2.yml 파일 편집
---
- hosts: db
tasks:
- name: Print all facts
ansible.builtin.debug:
msg: >
The node's host name is {{ ansible_hostname }}
and the ip is {{ ansible_default_ipv4.address }}
- 실행
#
ansible-playbook facts2.yml
...
TASK [Print all facts] **********************************************************************************************************************************************************************************************************************
ok: [ansible3] => {
"msg": "The node's host name is ansible3 and the ip is 10.10.x.126"
}
- ansible.cfg 수정 후 실행
# ansible.cfg 파일 편집
[defaults]
inventory = ./inventory
remote_user = root
ask_pass = false
inject_facts_as_vars = false ##추가
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
# 실행
ansible-playbook facts2.yml
- Facts 수집 끄기
- ansible/facts3.yml
# 파일 복사
cp facts1.yml facts3.yml
# facts3.yml 파일 편집
---
- hosts: db
gather_facts: no
tasks:
- name: Print all facts
ansible.builtin.debug:
msg: >
The default IPv4 address of {{ ansible_facts.fqdn }}
is {{ ansible_facts.default_ipv4.address }}
- 실행
# 실행 결과 확인 : 팩트를 수집하지 않았는데, 팩트에서 수집해야만 하는 변수를 사용하려고 해서 에러가 발생
ansible-playbook facts3.yml
# 파일 복사
cp facts3.yml facts3-2.yml
# facts3-2.yml 파일 편집
---
- hosts: db
gather_facts: no
tasks:
- name: Print message
debug:
msg: Hello Ansible World
# 실행 : TASK [Print all facts] 가 없다!
ansible-playbook facts3-2.yml
PLAY [db] ***************************************************************************
TASK [Print message] ***************************************************************************************
ok: [ansible3] => {
"msg": "Hello Ansible World"
}
...
- ansible/facts4.yml
# 파일 복사
cp facts3.yml facts4.yml
# facts4.yml 파일 편집
---
- hosts: db
gather_facts: no
tasks:
- name: Manually gather facts
ansible.builtin.setup:
- name: Print all facts
ansible.builtin.debug:
msg: >
The default IPv4 address of {{ ansible_facts.fqdn }}
is {{ ansible_facts.default_ipv4.address }}
- 실행
#
ansible-playbook facts4.yml
...
TASK [Manually gather facts] *******************************************************************************
ok: [ansible3]
TASK [Print all facts] *************************************************************************************
ok: [ansible3] => {
"msg": "The default IPv4 address of ansible3 is 10.10.x.126"
}
도전과제3 Facts를 사용하여 3개의 VM의 ‘커널 버전’과 ‘운영체제 종류’를 출력해보자
# 파일 복사
cp facts3.yml facts6.yml
# facts6.yml 파일 편집
---
- hosts: all
gather_facts: no
tasks:
- name: Manually gather facts
ansible.builtin.setup:
- name: Print all facts
ansible.builtin.debug:
msg: >
The kernel_version is {{ ansible_facts.kernel }}
The OS is {{ ansible_facts.lsb.description }}
# 실행
ansible-playbook facts6.yml
TASK [Manually gather facts] ****************************************************************************************************************************************************************************************************************
ok: [ansible3]
ok: [ansible2]
ok: [ansible1]
TASK [Print all facts] **********************************************************************************************************************************************************************************************************************
ok: [ansible1] => {
"msg": "The kernel_version is 6.5.0-17-generic is Ubuntu 22.04.4 LTS"
}
ok: [ansible2] => {
"msg": "The kernel_version is 6.5.0-17-generic is Ubuntu 22.04.4 LTS"
}
ok: [ansible3] => {
"msg": "The kernel_version is 6.5.0-17-generic is Ubuntu 22.04.4 LTS"
}
PLAY RECAP **********************************************************************************************************************************************************************************************************************************
ansible1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible3 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
728x90
반응형
'Ansible' 카테고리의 다른 글
Ansible 기본3(Ansible Vault) (0) | 2024.03.26 |
---|---|
Ansible 기본2(변수) (0) | 2024.03.26 |
Ansible 기본1(설치 후 기본 활용) (0) | 2024.03.11 |
Comments