Я пытаюсь создать rsa и скопировать на другие удаленные машины, чтобы test[0] мог подключиться по ssh к test[1] и test[2]
Мой инвентарный файл
[ test ]
10.100.0.1
10.100.0.2
10.100.0.3
Я хочу создать токен rsa на 10.100.0.1 в качестве пользователя root и скопировать открытый ключ в /home/centos/.ssh/authorized_keys в качестве пользователя root на 10.100.0.2 и 10.100.0.3.
Как этого можно добиться с помощью ansible. Все 3 экземпляра являются машинами AWS -ec2 centos 7. Я хочу, чтобы код был динамическим, а не жестко заданным ips.
Я не могу двигаться дальше.
- name: Generate /etc/ssh RSA host key
command: ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N ""
args:
creates: /root/.ssh/vid_rsa
run_once: True
В идеале вы захотите отделить «главный» экземпляр от остальных, поскольку не все [test]
машины одинаковы, но, к счастью, можно использовать нотацию массива для обозначения первой машины.
Затем вы просто захотите внедрить открытый ключ как «факт» в первый элемент test
, а затем получить этот факт для всех членов test
.
- hosts: test[0]
tasks:
- name: generate ssh key
command: ssh-keygen etc etc
- name: grab the public key
command: cat /root/.ssh/id_rsa.pub
register: the_pub_key
- hosts: test
tasks:
- name: install the public key
authorized_key:
key: '{{ hostvars[test0].the_pub_key }}'
user: root # or whatever
vars:
test0: '{{ groups.test[0] }}'
Если вы хотите опустить authorized_key
в самом test[0]
, вы можете использовать соответствующий пункт when:
, чтобы пропустить его.
Изучение исходного кода кубеспрей обнаружит всевозможные уловки, подобные этому.
Дублировать Ansible авторизованная копия из удаленного источника в удаленный пункт назначения