2015-08-12 4 views
4

Я пытаюсь использовать Ansible для создания инфраструктуры для ssh-соединений.execute ssh-add with ansible raise error

- name: Copy ssh key to each server 
    copy: src=static_folder_key dest=/home/ec2-user/.ssh/ mode=0600 

- name: Enable ssh Agent 
    shell: eval $(ssh-agent -s) 

- name: Adding ssh key for static forlder project 
    shell: ssh-add /home/ec2-user/.ssh/static_folder_key 
    sudo: True 

Я создаю новый ключ ssh и копирую на свои серверы. Затем я запускаю агент, а затем добавляю новый ключ, чтобы разрешить соединение. Но когда я выполняю ansible, я получил эту ошибку.

TASK: [git | Adding ssh key for static forlder project] *********************** 
failed: [admin_vehicles] => {"changed": true, "cmd": "ssh-add /home/ec2-user/.ssh/static_folder_key", "delta": "0:00:00.004346", "end": "2015-08-12 15:05:00.878208", "rc": 2, "start": "2015-08-12 15:05:00.873862", "warnings": []} 
stderr: Could not open a connection to your authentication agent. 
failed: [leads_messages] => {"changed": true, "cmd": "ssh-add /home/ec2-user/.ssh/static_folder_key", "delta": "0:00:00.004508", "end": "2015-08-12 15:05:01.286031", "rc": 2, "start": "2015-08-12 15:05:01.281523", "warnings": []} 
stderr: Could not open a connection to your authentication agent. 

FATAL: all hosts have already failed -- aborting 

Если я выполняю эти действия вручную, все будет хорошо.

ssh-add /home/ec2-user/.ssh/static_folder_key 
Identity added: /home/ec2-user/.ssh/static_folder_key (/home/ec2-user/.ssh/static_folder_key) 

Итак, какие-нибудь советы? Может быть, я что-то упустил в своей задаче с книжной книгой?

+0

Вы пробовали модуль authorized_key? [Authorized_key] (http://docs.ansible.com/ansible/authorized_key_module.html#authorized-key-adds-or-removes-an-ssh-authorized-key) – ThoFin

ответ

4

Окружающая среда для каждой задачи независима, поэтому вы не можете оставлять ssh-agent настройки, сделанные в одной задаче другим.

Я настоятельно рекомендую использовать SSH-агент для перемотки. Поместите следующее в ~/.ssh/config, затем запустите ssh-agent и ssh-add static_folder_key локально перед запуском ansible-playbook. Это все.

Host * 
ForwardAgent yes 

Даже когда экспедитор не вариант, вам не нужно запускать ssh-agent для файла закрытого ключа, без пароля. Скопируйте следующую конфигурацию в ~/.ssh/config на удаленных хостах и ​​запустите ssh в static-folder-host.

Host static-folder-host 
Hostname static-folder-host.static-folder-domain 
User static-folder-user 
IdentityFile ~/.ssh/static_folder_key