728x90
known_hosts란
- 알려진 호스트
- 이미 알고 있어 확인하지 않아도 되는 호스트
Vagrantfile 파일 수정
Ansible Server 영역에 두 줄 추가
cfg.vm.provision "file", source: "auto_pass.yml", destination: "auto_pass.yml"
cfg.vm.provision "shell", inline: "ansible-playbook auto_pass.yml", privileged: false
#================#
# Ansible Server #
#================#
config.vm.define "ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Server"
end
cfg.vm.host_name = "ansible-server"
cfg.vm.network "public_network", ip: "172.30.1.100"
cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", inline: "yum install epel-release -y"
cfg.vm.provision "shell", inline: "yum install ansible -y"
cfg.vm.provision "file", source: "ansible_env_ready.yml",
destination: "ansible_env_ready.yml"
cfg.vm.provision "shell", inline: "ansible-playbook ansible_env_ready.yml"
cfg.vm.provision "file", source: "auto_pass.yml", destination: "auto_pass.yml" # 추가
cfg.vm.provision "shell", inline: "ansible-playbook auto_pass.yml", privileged: false # 추가
end
ansible_env_ready.yml 파일 수정
해당 부분 지우기
- name: Generate sshkey
become: yes
become_user: vagrant
shell: "{{ item }}"
with_items:
- "ssh-keyscan 172.30.1.101 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.102 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.103 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.104 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.105 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.201 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.202 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.203 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.204 >> ~/.ssh/known_hosts"
- "ssh-keyscan 172.30.1.205 >> ~/.ssh/known_hosts"
auto_pass.yml 파일 생성
ansible_host: /etc/ansible/hosts 파일에 등록된 모든 호스트
keyscan.stdout_lines: keyscan 명령 실행 결과를 with_items를 이용해 지속적으로 출력함
-> 출력 결과는 다시 ~/.ssh/known_hosts로 입력됨
---
- name: Create authority between server and nodes
hosts: nodes
connection: local
serial: 1
gather_facts: no
tasks:
- name: ssh-keyscan for known_hosts file
command: /usr/bin/ssh-keyscan -t ecdsa {{ ansible_host }}
register: keyscan
- name: input key
lineinfile:
path: ~/.ssh/known_hosts
line: "{{ item }}"
create: yes
with_items:
- "{{ keyscan.stdout_lines }}"
vag_reconf.bat 실행
- known_hosts 자동 등록을 위해 생성한 auto_pass.yml 파일과 수정한 Vagranfile이 제대로 적용되는지 vag_reconf.bat 파일을 실행하여 테스트 진행
- 파일 실행 결과: 모든 가상 머신이 삭제되고 재생성되어 결과 마지막 부분에서 known_hosts를 자동으로 등록한 것을 확인할 수 있음
[ 배치 파일의 LF, CR ]
- 유닉스/리눅스 OS의 경우 유닉스 타입의 LF( Line Feed: 커서를 현재 행의 다음 행으로, 즉 아래로 이동 )를 사용함
- 윈도우 OS의 경우 CR( Carriage Return: 커서를 현재 행의 제일 좌측으로 이동 )과 LF를 동시에 사용함 > 따라서 해당 파일을 실행하려면 CRLF( 커서를 다음 줄, 그 줄의 시작 부분으로 이동) 타입으로 변경하고 저장해야 함
@echo off
setlocal
set /p name=어느 vagrant를 재구성 및 시작하시겠습니까? ^
모두는 그냥 enter를 입력 하세요: || set name=default
if %name%==default (
vagrant halt && vagrant destroy -f && vagrant up
) else (
vagrant halt %name% && vagrant destroy %name% -f && vagrant up %name%
)
PS C:\HashiCorp\udemy-ansible> .\vag_reconf.bat
통신 확인
- 모든 노드에 ping이 앤서블을 통해서 전달된 것을 확인할 수 있음
PS C:\HashiCorp\udemy-ansible> vagrant ssh ansible-server
[vagrant@ansible-server ~]$ ans nodes -m ping -k
SSH password: # vagrant
728x90
'Ansible' 카테고리의 다른 글
220613_1_앤서블_심화_플레이북 동적 구성-FACT(s) (0) | 2022.06.13 |
---|---|
220610_1_앤서블_심화_자동으로 authorized_keys 등록 (0) | 2022.06.10 |
220609_1_앤서블_심화_실습 환경 구성-vagrant (0) | 2022.06.09 |
220608_6_앤서블_응용_베이그런트를 이용한 우분투 가상 머신 생성 (0) | 2022.06.09 |
220608_5_앤서블_응용_NFS 서버와 클라이언트 구성 (0) | 2022.06.08 |