[심화] 앤서블(Ansible)을 깊이 있게 활용하기 대시보드 - 인프런 | 강의 (inflearn.com)
1. known_hosts 수동 설정 방법
vagrant로 서버와 노드를 프로비저닝하고 ping 모듈을 통해 통신 테스트를하면 아래와 같이 Failed가 발생한다.
ssh키 교환이 아직 이루어지지 않았기 때문에 발생한다.
위와 같이 nodes 에게 ping 모듈 테스트를 진행하면 실패했다고 출력된다.
이를 수동으로 해결하기 위해서는 ans nodes -m ping을 입력하면 나오는 질문들에 yes를 입력하여 키 교환을 수동으로 해주면 해결이 가능하다.
키 교환이 완료되고 다시 ping 모듈을 테스트하면 정상적으로 SUCCESS가 출력되는 것을 볼 수 있다.
2. known_hosts 설정 자동화
2.1 Known_hosts 정의
이미 알고있는 호스트로, 확인하지 않아도 되는 신뢰 가능한 호스트를 의미한다.
- Ansible Server가 Ansible node에 접속을 시도한다.
- 접속하려는 대상이 믿을 만 한 대상인지 사용자에게 확인 요청
- 사용자의 확인이 끝난 호스트를 접속 대상의 Key를 저장한다.(~/.ssh/known_hosts)
/usr/bin/ssh-keyscan -t ecdsa 192.168.1.x : known_hosts에 접속 대상의 ssh키를 저장하는 명령어이다.
위 명령어를 사용하여 ssh key 교환을 자동화 하도록 하겠다.
2.2 Auto_known_host.yml 파일 생성
C:\Hashicorp 경로에 아래의 내용을 작성하여 yml 파일을 생성한다.
# Auto_known_host.yml
---
- hosts: nodes
connection: local
serial: 1
gather_facts: no
tasks:
- command: /usr/bin/ssh-keyscan -t ecdsa {{ ansible_host }}
register: keyscan
- lineinfile:
name=~/.ssh/known_hosts
create=yes
line={{ item }}
with_items:
- "{{ keyscan.stdout_lines }}"
serial을 1로 설정하면 현재 노드들에 대한 Task를 하나씩 실행하게 설정한다. 이를 설정하지 않으면 known_hosts에 들어가야하는 ssh key값이 일부 노드에는 정상적으로 들어가지 않는 현상이 발생한다.
command 모듈로 ssh key를 생성하는 명령어를 실행한다. 여기서 {{ ansible_host }}는 /etc/ansible/hosts에 등록된 모든 호스트를 의미한다.
register로 keyscan에 ssh key값을 저장한다.
lineinfile 모듈을 사용하여 /.ssh/known_hosts 파일에 내용을 추가한다.
with_items에서 저장해둔 ssh 키 값을 불러와 /.ssh/known_hosts에 ssh 키를 추가한다.
2.3 Vagrantfile 수정
cfg.vm.provision "file", source: "Auto_known_host.yml", destination: "Auto_known_host.yml"
cfg.vm.provision "shell", inline: "ansible-playbook Auto_known_host.yml", privileged: false
위 내용을 vagrantfile의 Ansible-Server 구성 코드에 아래와 같이 작성한다.
2.4 구성 및 테스트
C:\HashiCorp>vagrant up
C:\HashiCorp>vagrant ssh ansible-server
# ans nodes -m ping -k
vagrant up 또는 vagrant provision ansible-server를 통해 변경사항을 프로비저닝하고 vagrant ssh로 ansible-server에 접속한다.
ansible nodes -m ping -k 를 입력하여 테스트를 진행한다.
#vi ~/.ssh/known_hosts
등록된 호스트 정보를 확인해보기 위해 known_hosts를 열어본다.
'Ansible' 카테고리의 다른 글
Ansible FACT(s) 활용 (0) | 2021.07.21 |
---|---|
Ansible 구성 authorized_keys 등록 자동화 (0) | 2021.07.21 |
Ansible 사용시 유용한 디버그 기능 (0) | 2021.07.20 |
Vagrant와 Ansible로 윈도우 노드 구성 및 관리 (1) | 2021.07.18 |
기존 구성에 Window Server node 추가 및 서버 구성 (0) | 2021.07.17 |