https://www.inflearn.com/course/ansible-%EC%8B%AC%ED%99%94
CH 1. 실습 환경 구성하기
ㅇ 베이그런트를 이용한 실습 환경 구성
- GIt : https://github.com/sysnet4admin/_Lecture_Ansible.expert
- vagrant up 으로 실행 후, ping 모듈 확인
- ans nodes -m ping 으로 ssh key yes로 획득 후, ans nodes -m ping -k 로 진행
ㅇ 자동으로 Known_hosts에 등록하기
- 알려진 호스트 (known_hosts)
> 이미 알고 있어, 확인하지 않아도 되는 믿을 수 있는 호스트
1. 앤서블 노드에 접속을 시도
2. 접속하려는 대상이 믿을만 한지 사용자에게 확인 요청
3. 사용자에 확인이 끝난 이후에 접속 대상의 key를 저장 (~/.ssh/known_hosts)
- known_hosts에 등록할때 필요한 내용 확인 명령어
# /usr/bin/ssh-keyscan -t ecdsa 192.168.1.102
- serail: 1 은 현재 노드들에 대한 task를 하나씩 실행하도록 함
=> known_hosts 파일에 누락을 방지하기 위한 옵션 (튜닝때 자세히)
- 유닉스 리눅스 계열에서는 개행문자가 LF 인데 , 윈도우는 CR LF 이다. 이건 nodepad++ 에서 변경할 수 있다.
- Auto_known_hosts.yml
=> ansible_host 가 keyscan에 저장되고 item에 들어가게된다.
---
- 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 }}"
ㅇ 자동으로 authorized_keys 등록하기
- authorized_keys : 이미 사용 허가를 받아서 믿을 수 있는 사용자.
- 진행 과정
1. 앤서블서버가 노드에 접속을 시도
2. 앤서블 노드의 ~/.ssh/authorized_keys 파일의 존재를 확인
3. authorized_keys 내용에 접속자의 접속을 허가할 수 있는 정보가 저장되어 있는지 확인하고 접속을 허용함
- 실제로는 여러번 필요값을 입력해야하나 아래 명령어로 pub key 생성
# ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ""
- 위 명령어를 node를 hosts로 실행되도록 작성하는데, connection:local 로 하여 ansible-server에서 pub key를 생성되도록 함 , run_once 로 ansible-server에서는 한번만 실행되도록 함
- 아래 파일을 실행 과정은
1. 퍼블릭 키를 서버에서 생성
2. 그 키값을 register에 저장
3. register의 값을 .ssh/authorized_keys 파일에 추가함
- Auto_authorized_keys.yml
---
- hosts: nodes
gather_facts: no
tasks:
- name: ssh-keygen
connection: local
command: "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''"
ignore_errors: yes
run_once: true
- name: read id_rsa.pub
connection: local
command: "cat ~/.ssh/id_rsa.pub"
register: id_pub
run_once: true
- name: remote lineinfile for authorized_keys
lineinfile:
dest: /home/vagrant/.ssh/authorized_keys
line: "{{ id_pub.stdout }}"
이후 ansible-server 에서 # ans all -m ping 하면 -k를 붙일필요도 패스워드 입력할 필요도 없다.