2016-01-13 101 views
0

當我執行我的CP-sshkey.yml劇本(登錄爲我自己,不是無業遊民用戶)從我的頂級Vagrantfile目錄...爲什麼我無法將SSH密鑰複製到Vagrant VM?

ansible-playbook cp-sshkey.yml 

我得到這個錯誤:

TASK: [authorized_key user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}"] *** 
fatal: [web1] => Failed to template user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}": could not locate file in lookup: ./files/id_rsa_vagrant.pub 

我不明白爲什麼會發生此錯誤。這是一個非常簡單的劇本和公共密鑰文件是我說的是:

. 
├── .vagrant 
│   └── machines 
├── Vagrantfile 
├── ansible.cfg 
├── bootstrap-mgmt.sh 
├── files 
│   └── id_rsa_vagrant.pub 
├── inventory.ini 
├── secrets.yml 
├── site.yml 
├── website 
└── cp-sshkey.yml 

,這裏是我的配置和主機文件和劇本:

# ansible.cfg 
[defaults] 
hostfile = inventory.ini 
remote_user = vagrant 
private_key_file = .vagrant/machines/default/virtualbox/private_key 
host_key_checking = False 

# inventory.ini 
[local] 
localhost ansible_connection=local 

[web] 
web1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 

# cp-sshkey.yml 
- name: Install vagrant's public key on VM 
    hosts: web1 
    sudo: True 
    tasks: 
    - authorized_key: user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}" 

我在做什麼錯在這裏?謝謝。

+0

你絕對應該用'ansible'以及標籤這個問題客人使用的操作系統。 –

+0

你最終的版本是什麼?我相信1.9分支報告 –

+0

我使用Ansible 1.9.2。 – William

回答

0

快速的答案將細化 - 我玩這個自己,但只是學習:

我假設你想你的公鑰(或您的ansible控制檯上的其他關鍵就是沒有相關的無業遊民鍵)添加到流浪機讓你ssh進入它沒有vagrant ssh

我假設你已經檢查了所有的文件權限等,你不是雜耍多個實例。嘗試與127.0.0.1和本地主機,你已經嘗試完整的文件路徑,而不是相對於工作目錄 - 我的例子使用模板子文件夾中的文件,但不在下面的工作片段。

  • 您能vagrant ssh 或許檢查你的.ssh/authorized_keys文件?
  • 您能夠確認ansible可以連接做這樣的事情ansible web -a df
  • 使用ssh -i .vagrant/machines/default/virtualbox/private_key [email protected] -p 2222

在我的角色任務文件我有這樣的任務,你可以使用SSH連接流浪機。

- name: Copy origin public key to auth keys 
    authorized_key: user=vagrant key="{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}" 

而且我的主機定義有用戶: web1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant 但假定您使用的配置應該工作。

雖然我的目錄結構不一樣,但這個劇本能夠爲我工作,我期望你很舒服,你很好。

有些事情要注意的是抓住了我:

  • 當你重建流浪機器,你將需要排出來你的.ssh/known_hosts中,如果你已經SSH方式登錄 - 可以從known_hosts中刪除與sh-keygen -R [localhost]:2222
  • 讓我感到不安看到localhost作爲機器標籤

我的設置:

  • ansible 2.2.0。0
  • 流浪漢版本:1.9.1
  • 的Mac OSX
  • 垂直框5.1.6
  • 流浪實例 - Ubuntu的/ trusty64
相關問題