Я пытаюсь запустить исходную книгу воспроизведения на удаленном хосте, т.е. установить ключ S SH publi c. Проблема в том, что без S SH я не могу подключиться. Я пробовал подобные вещи, но это не работает.
- hosts: remote_host
become: yes
become_user: mongod
become_method: sudo
become_exe: "sudo su - "
tasks:
- name: Add public ssh keys
lineinfile:
path: /home/mongod/.ssh/authorized_keys
owner: mongod
group: mongod
mode: '0600'
state: present
line: "{{ item }}"
loop:
- "ssh-rsa AAAAB3NzaC1yc2E...= domscheit@ansible_host"
Обратите внимание, sudo su - mongod
- это команда only , которую я могу запустить как пользователь domscheit
. У меня нет пароля для пользователя mongod
, поэтому я не могу использовать его напрямую для подключения. Выше playbook возвращает ошибку вроде FAILED! => {"msg": "Missing sudo password"}
На самом деле я нашел решение:
- hosts: remote_host
tasks:
- name: Add public ssh-key to authorized_keys
shell: |
sudo su - mongod <<< "mkdir --mode=700 /home/mongod/.ssh"
sudo su - mongod <<< "echo ssh-rsa AAAAB3Nza...= domscheit@ansible_host >> /home/mongod/.ssh/authorized_keys"
sudo su - mongod <<< "chmod 600 /home/mongod/.ssh/authorized_keys"
args:
executable: /bin/bash
Оно работает, но должно быть лучшее решение. Он создает [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo
После того, как установлен ключ publi c s sh, я могу продолжить работу с моими реальными книгами воспроизведения, используя --user mongod
.