私のパッカービルドは次のメッセージで失敗します:
Sudo: sorry, you must have a tty to run Sudo.
私のホストはvagrantとvirtualboxを備えたWindows8で、ゲストはcentos7です。調査の結果、Sudoにttyを必要としないことがメッセージの理由であると理解しています。しかし、私はks.cfg
に次のものがあります。
sed -i 's/^.*requiretty/#Defaults requiretty/' /etc/sudoers
問題は、psuedo-ttyが作成されるように、Windowsのvagrant ssh側に設定する必要があるものがあるということでしょうか?
これは私の初めてのパッカーです。
ダウンロードしたパッカービルドを使用しています。
以下のpacker.json:
{
"variables": {
"version": "{{env `VERSION`}}"
},
"provisioners": [
{
"type": "Shell",
"execute_command": "Sudo {{.Vars}} sh {{.Path}}",
"scripts": [
"scripts/vagrant.sh",
"scripts/vmtools.sh",
"scripts/cleanup.sh",
"scripts/zerodisk.sh"
]
}
],
"post-processors": [
{
"type": "vagrant",
"output": "INSANEWORKS-CentOS-7.0-x86_64-{{user `version`}}-{{.Provider}}.box"
}
],
"builders": [
{
"type": "virtualbox-iso",
"iso_url": "http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-1503.iso",
"iso_checksum": "498bb78789ddc7973fe14358822eb1b48521bbaca91c17bd132c7f8c903d79b3",
"iso_checksum_type": "sha256",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_wait_timeout": "45m",
"ssh_disable_agent": "true",
"boot_command": [
"<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
],
"disk_size": "40000",
"hard_drive_interface": "sata",
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"guest_additions_sha256": "7b61f523db7ba75aebc4c7bb0cae2da92674fa72299e4a006c5c67517f7d786b",
"guest_os_type": "RedHat_64",
"headless": "true",
"http_directory": "http",
"shutdown_command": "Sudo /sbin/halt -p",
"vboxmanage": [
[ "modifyvm", "{{.Name}}", "--memory", "1024" ],
[ "modifyvm", "{{.Name}}", "--cpus", "1" ]
]
}
]
}
前もって感謝します。
Ssh接続でPTYを有効にする必要があります。次の構成アイテムをビルダーセクションに追加します。
"ssh_pty" : "true"
参照 https://packer.io/docs/templates/communicator.html#ssh_pty
プロビジョナーセクションの「execute_command」は"execute_command" : "echo 'vagrant' | {{ .Vars }} Sudo -E -S sh '{{ .Path }}'"
である必要があります
同様のエラーメッセージについて-'Sudo:ttyが存在せず、askpassプログラムが指定されていません '-この記事で解決策を見つけました:
http://blog.endpoint.com/2014/03/provisioning-development-environment_14.html
Builderセクションに"ssh_pty" : "true"
を追加することに加えて、次のプロビジョナーを追加します。
{
"type": "Shell",
"execute_command": "echo '{{user `ssh_pass`}}' | {{ .Vars }} Sudo -E -S sh '{{ .Path }}'",
"inline": [
"echo '%Sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers"
]
}
スタック: