티스토리 뷰

주로 ssh나 xrdp 같은 well known port 는 그대로 사용하지 않는다. 따라서, Ansible에서 모든 host 마다 다른 

ssh, xrdp port를 설정해주어야 한다. 따라서 playbook에서 변수와 같은 어떤 걸 사용해서 해주어야 할 것 같다는 느낌이든다

/etc/ansible/hosts

여기에서 위의 목적을 달성하기 위해 필요한 값은 ansible_port 라고 하자(본인이 하려고 하는 것에 따라 이름을 자유롭게 지으면 된다. 예를들면 ssh라면 ssh_port=1234 와 같이 하면 되겠다.)

ansible_port를 playbook에서 변수처럼 사용해서 fail2ban의 ssh port 를 각 각 서버에 맞게 설정해줄 것 이다

site.yml

---

- hosts: all
  tasks:
    - name: Print variables
      debug:
        msg: "{{ hostvars[item]['ansible_port'] }}"
      with_inventory_hostnames: labs

(복붙하고 싶으신 분도 있을테니, 보기 좋지 않더래도 이렇게 쓰겠다.) 

with_inventory_hostnames: labs 를 써주면, item 이라는 변수에 현재 처리 중인 host가 binding 된다.

따라서, hostvars[item]['ansible_port'] 는 

labs group에 각 각 host에 대해 ansible_port 를 가리키게 되는 것이다.

$ sudo ansible-playbook site.yml 

전체의 output 을 캡처한 것은 아니지만 위와 흡사한 output이 나온다.

 

댓글