728x90

앤서블로 접근하기 위한 대상 서버(tnode1~3)들은 이미 제어 노드(server)의 인벤토리에 등록되어 있습니다.

- ansible.builtin.hostname 모듈 : 호스트명 설정에 사용합니다.

- ansible.builtin.lineinfile 모듈 : 호스트명을 hosts 파일에 추가할 때 사용

- /etc/hosts 에 tnode 정보들을 등록하기 위해 필요한 정보들을 변수로 정의합니다.

 

 

 

 

1) 프로젝트 디렉터리 생성 및 ansible.cfg, inventory 파일 작성

chapter_10.2/..

 

#
mkdir ~/ansible-project/chapter_10.2
cd ~/ansible-project/chapter_10.2

# ansible.cfg, inventory 파일 작성
cat <<EOT> ansible.cfg
[defaults]
inventory = ./inventory
remote_user = ansible
ask_pass = false
inject_facts_as_vars = false
roles_path = ./roles

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
EOT

cat <<EOT> inventory
[tnode]
tnode1
tnode2
tnode3
EOT

 

2) 변수 정의 파일 생성

touch ~/ansible-project/chapter_10.2/vars_hosts_info.yml

 

chapter_10.2/vars_hosts_info.yml

tnodes:
  - hostname: tnode1
    fqdn: tnode1.local
    net_ip: 10.10.1.11
  - hostname: tnode2
    fqdn: tnode2.local
    net_ip: 10.10.1.12
  - hostname: tnode3
    fqdn: tnode3.local
    net_ip: 10.10.1.13

 

3) 메인 플레이북 작성 :

hostname은 inventory 정보를 통해서 설정,

/etc/hosts 파일은 내용 추가는 변수 정의 파일에서 반복문을 통해 가져온다.

 

regexp는 대체(기본값 수정, state=present)하거나 혹은 삭제(state=absent).

touch ~/ansible-project/chapter_10.2/set_hostname.yml

 

chapter_10.2/set_hostname.yml

---
- hosts: tnode
  tasks: 
  - name: Set hostname from inventory
    ansible.builtin.hostname:
      name: "{{ inventory_hostname }}"

- hosts: all
  vars_files: vars_hosts_info.yml

  tasks: 
  - name: Add host ip to hosts
    ansible.builtin.lineinfile:
      path: /etc/hosts
      line: "{{ item.net_ip }}  {{ item.hostname }} {{ item.fqdn }}"
      regexp: "^{{ item.net_ip }}"
    loop: "{{ tnodes }}"

 

4) 플레이북 실행

- 실행 전

ansible -m shell -a "cat /etc/hosts" tnode

 

 

-실행 후

# 문법 체크
ansible-playbook --syntax-check set_hostname.yml

# 플레이북 실행
ansible-playbook set_hostname.yml
...

# 확인
ansible -m shell -a "hostname" tnode
ansible -m shell -a "cat /etc/hosts | grep tnode" tnode

# tnode1에서 다른 노드 통신 확인
ssh tnode1 ping -c 1 tnode2
ssh tnode1 ping -c 1 tnode3.local

플레이북 실행 화면

 

 

실행 내용 확인 및 통신 확인

 

 

 

 

728x90
반응형