2016-08-18 45 views
0

我想在打包器中使用OpenStack置備程序API克隆一個實例。到目前爲止,我已經開發的腳本:打包器ssh_private_key_file無效

{ 
"variables": { 
}, 
"description": "This will create the baked vm images for any environment from dev to prod.", 
"builders": [ 
    { 
    "type": "openstack", 
    "identity_endpoint": "http://192.168.10.10:5000/v3", 
    "tenant_name": "admin", 
    "domain_name": "Default", 
    "username": "admin", 
    "password": "****************", 
    "region": "RegionOne", 

    "image_name": "cirros", 
    "flavor": "m1.tiny", 
    "insecure": "true", 
    "source_image": "0f9b69ee-4e9f-4807-a7c4-6a58355c37b1", 

    "communicator": "ssh", 
    "ssh_keypair_name": "******************", 
    "ssh_private_key_file": "~/.ssh/id_rsa", 
    "ssh_username": "root" 
} 
], 
"provisioners": [ 
{ 
    "type": "shell", 
    "inline": [ 
    "sleep 60" 
    ] 
} 
] 
} 

但在使用時的封隔器構建script.json運行該腳本,我得到以下錯誤:

User:packer User$ packer build script.json 
openstack output will be in this color. 

1 error(s) occurred: 

* ssh_private_key_file is invalid: stat ~/.ssh/id_rsa: no such file or directory 

我id_rsa是開始與結尾的文件:

------BEGIN RSA PRIVATE KEY------ 

     key 

------END RSA PRIVATE KEY-------- 

而且我認爲他的意思,這是一個PEM相關文件,所以我覺得這是奇怪的,所以我做了我的PACKER_LOG的引擎收錄:http://pastebin.com/sgUPRkGs

初始分析告訴我唯一的錯誤是缺少packerconfig文件。在谷歌搜索這個頂級搜索告訴我,如果它沒有找到它默認的一個。這是爲什麼它不起作用嗎?

任何幫助將有很大的幫助。顯然,在github支持頁面(https://github.com/mitchellh/packer/issues)上也有類似的問題,但我不明白一些發佈的解決方案,如果它們適用於我。

我試過儘可能提供信息。樂於提供任何信息,我可以!

謝謝。

回答

2
* ssh_private_key_file is invalid: stat ~/.ssh/id_rsa: no such file or directory 

「〜」字符對於操作系統並不是特殊的。這對於s​​hell和某些選擇將其解釋爲指向主目錄的其他程序來說只是特別的。

看來OpenStack並不把「〜」當作特殊對象,而是尋找一個帶有文字路徑名「〜/ .ssh/id_rsa」的密鑰文件。它失敗了,因爲它找不到具有該文字路徑名的密鑰文件。

更新ssh_private_key_file條目列出實際路徑密鑰文件:

"ssh_private_key_file": "/home/someuser/.ssh/id_rsa", 

當然,你也應該確保密鑰文件實際上是在您指定的位置存在。

+0

這似乎改變了錯誤信息! 現在它說: ssh_private_key_file是無效的:無法讀取密鑰「/用戶/用戶/文件/ id_rsa」:密碼保護的密鑰不被支持 。請在使用前解密密鑰。 這很奇怪,因爲這是一個直接來自終端的keygen。我是否想從一開始就指定我希望以PEM形式出現? – shirafuno