IaC/Ansible

[Ansible] 앤서블 패스워드 없이 연결하기 (ansible authorized_key)

Nirsa 2020. 10. 29. 18:27
반응형

 

  • 앤서블 패스워드 없이 연결하기 (ansible authorized_key)

앤서블을 이용하다보면 항상 입력해야하는 패스워드가 굉장히 불편하게 느껴집니다. 특히 다른 node들의 패스워드가 모두 다르다면, 사용하는데 불편함이 굉장히 크기 때문에 key를 이용해 패스워드 입력 없이 앤서블을 연결하는 방법을 포스팅 하도록 하겠습니다.

 

현재 아래와 같이 ansible all -m ping 명령을 이용하여 확인해보면 모두 실패하고 있습니다.

 

우선 앤서블로 연결을 시켜야하기 때문에 패스워드를 입력하여 연결하도록 하겠습니다. 저의 경우 20,21 서버가 서로 패스워드가 다르기 때문에 두번에 걸쳐 패스워드를 입력 하였습니다.

 

아래 코드와 같은 key.yml 이라는 야믈 파일을 하나 작성해준 후 ansible-playbook key.yml 명령을 이용해 실행 해줍니다.

가장 상단에 보이는 hosts의 경우 /etc/ansible/hosts 파일에 적용한 내용대로 설정 해주어야 합니다. 저는 아래와 같이 nginx라는 그룹(20, 21서버)으로 설정하였기 때문에 hosts: nginx로 기입 하였습니다.

/etc/ansible/hosts

---
- name: ssh-keygen
  hosts: nginx
  gather_facts: no

  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: input key
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
ansible-playbook key.yml

 

패스워드 입력없이 정상적으로 앤서블이 연결 되는지 확인해보기 위해 재부팅 해보았으며, 별도 패스워드 입력 없이 정상적으로 핑퐁이 잘 되는 내용까지 확인 하였습니다.

 

각 서버들을 보면 master(ansible-server)에서는 정상적으로 id_rsa, id_rsa.pub 파일이 생성되어 있고 node1,2 서버에는 authorized_keys가 잘 생성되어 있는것을 확인해볼 수 있습니다.

 

반응형