#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