Задача Ansible для копирования SSH-ключей

#ansible

Вопрос:

У меня есть кластер Cassandra, который содержит 6 узлов, и вот мой файл инвентаризации Ansible:

 [cassandra]
cassandra-01 ansible_host=192.168.2.10
cassandra-02 ansible_host=192.168.2.11
cassandra-03 ansible_host=192.168.2.12 
cassandra-04 ansible_host=192.168.2.13
cassandra-05 ansible_host=192.168.2.14
cassandra-06 ansible_host=192.168.2.15
 

Я хочу скопировать свой SSH-ключ со cassandra-01 всех узлов кластера, и я хочу сделать это с помощью задачи Ansible.

Каков наилучший и идемпотентный способ достичь этого?

P.S. Я нашел этот модуль ssh-copy-id на Github, может быть, он будет работать?

Комментарии:

1. Что касается модуля в вашем вопросе, похоже, что в соответствии с документацией он предназначен для » авторизации удаленных систем для аутентификации SSH без пароля». Так что это не совсем то, что вы искали в своем вопросе.

Ответ №1:

Поскольку в прошлом у меня было аналогичное требование, я обнаружил, что следующий подход работает

 - name: Copy SSH key from node 01 to all others
  synchronize:
    src: "/tmp/ssh.key"
    dest: "/tmp/ssh.key"
    mode: push
  delegate_to: cassandra-01
  check_mode: no
  when: ( ansible_host != "cassandra-01" )
  tags: distribute_keys
 

в основном

  • Используйте модуль synchronize, rsync оболочку
  • Позвольте задаче выполняться только на сервере-участнике ( when: "cassandra-01" not in ansible_host )
  • Делегируйте задачу главному узлу
  • Переход от основного узла к узлам-участникам

Комментарии:

1. извините, я имею в виду, что хочу провести аналогию с ssh-copy-id