공부합시다!/Ansible

Ansible: ssh key 자동 배포 (2023년 1월 11일 Test)

간서치 2022. 7. 7. 10:04
728x90

Ansible은 ssh를 이용해서 통신을 합니다.

그럼 완전 자동화를 위해서는 ssh 통신에서 패스워드를 사용하는 방법을 지향하고

ssh를 암호화키를 생성해서 통신하는 방법이 훨 안전하고 편리합니다.

 

해당 방법은 일단 ssh-key를 생성 후 각 Node에 Authorized_key로 접속 대상의 사용자 홈디렉토리에 배포해야 합니다.

이 방법을 자동화 해보겠습니다.

1. ssh. yml 파일 생성

 1.2. ssh.yml code

 

---
- name: ssh deploy
  hosts: all
  tasks:
    - name: create key
      connection: local
      command: "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''"
      ignore_errors: yes
      run_once: true
    
    - name: push key
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

#실행시 반드시 -u root -k  입력할 것.
localhost error 시  export ANSIBLE_HOST_KEY_CHECKING=False

2. # /etc/ansible/ansible.cfg 

 2.1. 반드시  host_key_check=false 로 설정해주셔야 합니다.

  2.1.1. 작업 전 오류

 

  2.1.2. 설정 변경

 

  2.1.3. 변경 후 ssh.yml 실행 및 Test

 

 

ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''

local에서 password를 사용하지 않고 RSA방식의 키 쌍을 만들어 내는 Code 입니다.

만들어내 Key쌍중 공개키를 id_rsa.pub를 각 node의 root사용자 권한으로 Authorized_key로 변경해서 배포하는 Code입니다.

 

Have a nice day!

728x90