[Playbook] SSH authorized_keys 등록

 

Ansible 마스터 노드에서 각각의 호스트에 ssh rsa key 전파

 

authorized_key 모듈을 이용합니다.

root 유저로 할 경우 아래와 같이 진행합니다.

---
- name: Create authority between server and nodes
  hosts: ceph
  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 }}"

    - name: ssh-keygen for authorized_keys file
      command: "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''"
      ignore_errors: yes

    - name: Set authorized key taken from file
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
$ ansible-playbook -i inventory add_sshauthkey.yml -k

root 유저가 아닐 경우 맨 아랫줄 /root/.ssh/id_rsa.pub 를 ~/.ssh/id_rsa.pub 로 바꿔 줍니다.

인벤토리 파일에 ip만 추가해주면 몇번이든 다시 돌려도 키 값이 없는 노드에만 rsa키를 등록합니다.

처음 rsa키를 넣어주는 작업이기 때문에 -k 옵션을 넣어서 암호를 넣어줘야 ssh 접속이 가능합니다.

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다