Запуск рецептов Chef с использованием Vagrant на хосте Windows: проблема с SSH

Я использую Vagrant для создания виртуальной машины CentOS на хосте Windows и подключения к ней, пока все хорошо.

Далее я хочу использовать Chef для подготовки стеков на созданной виртуальной машине. Я пытался использовать кулинарные книги в локальном каталоге, а также предоставлять URL-адреса рецептов, но, вероятно, это не удается, потому что он не может подключиться к гостевому ящику по ssh, как видно из ошибки:

SSH authentication failed! This is typically caused by the public/private keypair for the SSH user not being properly set on the guest VM. Please verify that the guest VM is setup with the proper public key, and that the private key path for Vagrant is setup properly as well.

Итак, мой первый вопрос:

1) Как убедиться, что SSH работает в том же окне, что и гостевая ОС на хосте Windows, чтобы все сценарии выполнялись правильно?

Теперь, когда я комментирую строку ниже в vagrantfile

config.ssh.username = "root"

Вышеупомянутая ошибка исчезает, но я получаю другую ошибку:

The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed!

mount -t vboxsf -o uid=id -u vagrant,gid=id -g vagrant v-csr-2 /tmp/vagrant-chef-1/chef-solo-2/roles

Это связано с тем, что у пользователя vagrant недостаточно доступа к ящику, что является моим вторым вопросом:

2) Как указать Vagrant запускать все команды с доступом sudo или su?


person Vishal Biyani    schedule 29.06.2012    source источник


Ответы (2)


Вот как мне удалось заставить работать SSH:

установить cygwin (http://www.cygwin.com/)

настроить openssh из cygwin

добавить ~/.ssh/id_rsa_vagrant

скачать с здесь

изменить ~/.ssh/config

Host localhost IdentityFile ~/.ssh/id_rsa_vagrant

изменить права на каталог ssh

chmod 600 ~/.ssh/*

Все должно работать нормально.

person Alexandre Mélard    schedule 25.01.2013
comment
Одного раза было бы более чем достаточно, удачи с шеф-поваром, туда сложно попасть... - person Alexandre Mélard; 26.01.2013

Я нашел способ использовать пакетный файл и то же окно командной строки из Windows для подключения к виртуальной машине.

Итак, вот шаги:

  • У вас должна быть установлена ​​шпатлевка на той же машине.
  • Вам нужно будет настроить путь к исполняемому файлу шпатлевки в следующем пакетном сценарии.
  • Используйте пакетный файл для подключения к вашему ящику

Вот пакетный файл:

@echo off REM REM This is a replacement for the "vagrant ssh" command on Windows REM (since "vagrant ssh" doesn't actually work on Windows). REM REM PuTTY must be installed. If it is not installed in REM "C:\Program Files (x86)\PuTTY" then set the PUTTY_DIR environment REM to point to the installed location. REM REM As with any vagrant command this should be executed in the directory REM containing the Vagrantfile. REM

setlocal enableextensions

if "%PUTTY_DIR%" == "" ( REM Default location of PuTTY if the Windows installer is used. set "PUTTY_DIR=C:\Program Files (x86)\PuTTY" )

if not exist "%PUTTY_DIR%" ( echo ERROR: PuTTY not found. echo Install PuTTY or check setting of PUTTY_DIR. goto end )

for /F "tokens=1,2" %%A in ('vagrant ssh-config') do ( if "%%A" == "HostName" ( set VagrantHostName=%%B ) if "%%A" == "Port" ( set VagrantPort=%%B ) if "%%A" == "User" ( set VagrantUser=%%B ) if "%%A" == "IdentityFile" ( set IdentityFile=%%B ) )

if "%VagrantHostName%" == "" ( goto end )

if exist %IdentityFile%.ppk ( set "VGPUTTY_OPTIONS=%VGPUTTY_OPTIONS% -i %IdentityFile%.ppk" ) else ( echo. echo TIP: For password-free Vagrant VM login use PuTTYGen to generate echo this file: %IdentityFile%.ppk echo from file: %IdentityFile% echo. )

start "%VagrantHostName%:%VagrantPort%" "%PUTTY_DIR%\PuTTY.exe" %VGPUTTY_OPTIONS% %VagrantUser%@%VagrantHostName% %VagrantPort%

:end

person Vishal Biyani    schedule 25.09.2012