只需 shell 在线配置
simple shell inline provisionning
我怎样才能简单地在 virtualbox-iso Ubuntu 和 shell 内联配置的打包程序模板中安装 apache2 包?
我正在测试这个模板:
{
"builders": [{
"boot_command": [
"<esc><wait>",
"<esc><wait>",
"<enter><wait>",
"/install/vmlinuz<wait>",
" auto<wait>",
" console-setup/ask_detect=false<wait>",
" console-setup/layoutcode=fr<wait>",
" console-setup/modelcode=pc105<wait>",
" debconf/frontend=noninteractive<wait>",
" debian-installer=fr_FR<wait>",
" fb=false<wait>",
" initrd=/install/initrd.gz<wait>",
" kbd-chooser/method=fr<wait>",
" keyboard-configuration/layout=fr<wait>",
" keyboard-configuration/variant=fr<wait>",
" locale=fr_FR<wait>",
" netcfg/get_domain=vm<wait>",
" netcfg/get_hostname=vagrant<wait>",
" noapic<wait>",
" preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg<wait>",
" -- <wait>",
"<enter><wait>"
],
"boot_wait": "20s",
"disk_size": 20480,
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"guest_os_type": "Ubuntu_64",
"http_directory": "http",
"headless": false,
"iso_checksum": "0501c446929f713eb162ae2088d8dc8b6426224a",
"iso_checksum_type": "sha1",
"iso_url": "http://mirrors.mit.edu/ubuntu-releases/trusty/ubuntu-14.04.3-server-amd64.iso",
"output_directory": "packer-ubuntu-14.04-amd64-virtualbox",
"shutdown_command": "echo 'vagrant'|sudo -S shutdown -P now",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "10000s",
"type": "virtualbox-iso",
"vboxmanage": [
[
"modifyvm",
"{{.Name}}",
"--memory",
"1024"
],
[
"modifyvm",
"{{.Name}}",
"--cpus",
"1"
]
],
"virtualbox_version_file": ".vbox_version",
"vm_name": "packer-ubuntu-14.04-amd64"
}],
"post-processors": [{
"output": "builds/ubuntu-14.04.box",
"type": "vagrant"
}],
"provisioners": [
{
"type": "shell",
"execute_command": "echo '{{user `ssh_pass`}}' | {{ .Vars }} sudo -E -S sh '{{ .Path }}'",
"inline": [
"echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers",
"sudo apt-get install -y apache2"
]
}
]
}
测试配置的结果是:
==> virtualbox-iso: Provisioning with shell script: C:\Users\toto\AppData\Local\Temp\packer-shell178737243
virtualbox-iso: [sudo] password for vagrant: Sorry, try again.
virtualbox-iso: [sudo] password for vagrant:
virtualbox-iso: sudo: 1 incorrect password attempt
构建 Vagrant 的第一步似乎与 preseed.cfg 文件有关。但是这个问题在开始供应流浪者时就出现了。
在 packer 和 vagrant 系统中使用具有良好管理权限的内联配置的技巧是什么 Ubuntu ?
技术背景
- OS主持人:windows7亲
- OS 来宾:Ubuntu 14.04 LTS
- 虚拟机技术:VirtualBox 5.0.10 + Vagrant 1.7.4
- VM 工具生成器:Packer 0.8.6
PS :我的模板已通过 packer validate
验证
这种情况下的问题是 ssh_pass
用户变量从未在您的 Packer 模板中设置。有两种解决方案。最简单的选择是修改 shell 配置器中的 execute_command
设置,并从构建器硬编码 ssh 密码...
"execute_command": "echo 'vagrant' | {{ .Vars }} sudo -E -S sh '{{ .Path }}'",
更优雅的解决方案是在 Packer 模板顶部的 builders
块之前添加一个 variables
块,并使用它来设置 ssh 用户名和密码...
"variables": {
"ssh_user": "vagrant",
"ssh_pass": "vagrant"
},
这将修复 shell 配置器中现有的 execute_command
,您也可以像这样在构建器中使用这些变量...
"shutdown_command": "echo '{{user `ssh_pass`}}' | sudo -S shutdown -P now",
"ssh_username": "{{user `ssh_user`}}",
"ssh_password": "{{user `ssh_pass`}}",
这样您就可以在 Packer 模板的一个地方定义您的 ssh 凭据。
我怎样才能简单地在 virtualbox-iso Ubuntu 和 shell 内联配置的打包程序模板中安装 apache2 包?
我正在测试这个模板:
{
"builders": [{
"boot_command": [
"<esc><wait>",
"<esc><wait>",
"<enter><wait>",
"/install/vmlinuz<wait>",
" auto<wait>",
" console-setup/ask_detect=false<wait>",
" console-setup/layoutcode=fr<wait>",
" console-setup/modelcode=pc105<wait>",
" debconf/frontend=noninteractive<wait>",
" debian-installer=fr_FR<wait>",
" fb=false<wait>",
" initrd=/install/initrd.gz<wait>",
" kbd-chooser/method=fr<wait>",
" keyboard-configuration/layout=fr<wait>",
" keyboard-configuration/variant=fr<wait>",
" locale=fr_FR<wait>",
" netcfg/get_domain=vm<wait>",
" netcfg/get_hostname=vagrant<wait>",
" noapic<wait>",
" preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg<wait>",
" -- <wait>",
"<enter><wait>"
],
"boot_wait": "20s",
"disk_size": 20480,
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"guest_os_type": "Ubuntu_64",
"http_directory": "http",
"headless": false,
"iso_checksum": "0501c446929f713eb162ae2088d8dc8b6426224a",
"iso_checksum_type": "sha1",
"iso_url": "http://mirrors.mit.edu/ubuntu-releases/trusty/ubuntu-14.04.3-server-amd64.iso",
"output_directory": "packer-ubuntu-14.04-amd64-virtualbox",
"shutdown_command": "echo 'vagrant'|sudo -S shutdown -P now",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "10000s",
"type": "virtualbox-iso",
"vboxmanage": [
[
"modifyvm",
"{{.Name}}",
"--memory",
"1024"
],
[
"modifyvm",
"{{.Name}}",
"--cpus",
"1"
]
],
"virtualbox_version_file": ".vbox_version",
"vm_name": "packer-ubuntu-14.04-amd64"
}],
"post-processors": [{
"output": "builds/ubuntu-14.04.box",
"type": "vagrant"
}],
"provisioners": [
{
"type": "shell",
"execute_command": "echo '{{user `ssh_pass`}}' | {{ .Vars }} sudo -E -S sh '{{ .Path }}'",
"inline": [
"echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers",
"sudo apt-get install -y apache2"
]
}
]
}
测试配置的结果是:
==> virtualbox-iso: Provisioning with shell script: C:\Users\toto\AppData\Local\Temp\packer-shell178737243
virtualbox-iso: [sudo] password for vagrant: Sorry, try again.
virtualbox-iso: [sudo] password for vagrant:
virtualbox-iso: sudo: 1 incorrect password attempt
构建 Vagrant 的第一步似乎与 preseed.cfg 文件有关。但是这个问题在开始供应流浪者时就出现了。
在 packer 和 vagrant 系统中使用具有良好管理权限的内联配置的技巧是什么 Ubuntu ?
技术背景
- OS主持人:windows7亲
- OS 来宾:Ubuntu 14.04 LTS
- 虚拟机技术:VirtualBox 5.0.10 + Vagrant 1.7.4
- VM 工具生成器:Packer 0.8.6
PS :我的模板已通过 packer validate
这种情况下的问题是 ssh_pass
用户变量从未在您的 Packer 模板中设置。有两种解决方案。最简单的选择是修改 shell 配置器中的 execute_command
设置,并从构建器硬编码 ssh 密码...
"execute_command": "echo 'vagrant' | {{ .Vars }} sudo -E -S sh '{{ .Path }}'",
更优雅的解决方案是在 Packer 模板顶部的 builders
块之前添加一个 variables
块,并使用它来设置 ssh 用户名和密码...
"variables": {
"ssh_user": "vagrant",
"ssh_pass": "vagrant"
},
这将修复 shell 配置器中现有的 execute_command
,您也可以像这样在构建器中使用这些变量...
"shutdown_command": "echo '{{user `ssh_pass`}}' | sudo -S shutdown -P now",
"ssh_username": "{{user `ssh_user`}}",
"ssh_password": "{{user `ssh_pass`}}",
这样您就可以在 Packer 模板的一个地方定义您的 ssh 凭据。