Setup babelbox partitioning and cleanup
This commit is contained in:
		
							parent
							
								
									e5b1594023
								
							
						
					
					
						commit
						787fecd81c
					
				
					 9 changed files with 228 additions and 79 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1,4 +1,5 @@ | |||
| /packer_cache/ | ||||
| /babelbox/ | ||||
| /build/ | ||||
| /http/*.iso | ||||
| *.iso | ||||
| .*.swp | ||||
|  |  | |||
|  | @ -1,37 +1,53 @@ | |||
| { | ||||
|     "builders": [{ | ||||
|         "type": "virtualbox-iso", | ||||
|         "guest_os_type": "Debian", | ||||
|         "iso_url": "http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-8.3.0-i386-netinst.iso", | ||||
|         "iso_checksum": "f270d1ffa0f9472464bfc0fffa7ac3ddc89abb5786eb02454f26e49f143b01d6", | ||||
|         "iso_checksum_type": "sha256", | ||||
|         "ssh_username": "demo", | ||||
|         "ssh_password": "babelbox", | ||||
|         "ssh_wait_timeout": "1800s", | ||||
|         "shutdown_command": "echo 'packer' | sudo -S shutdown -P now", | ||||
|         "disk_size": 10240, | ||||
|         "headless": false, | ||||
|         "http_directory": "http", | ||||
|         "boot_command": [ | ||||
|             "<esc><wait>", | ||||
|             "install <wait>", | ||||
|             "debian-installer=en_US <wait>", | ||||
|             "auto <wait>", | ||||
|             "locale=en_US <wait>", | ||||
|             "kbd-chooser/method=us <wait>", | ||||
|             "netcfg/get_hostname={{ .Name }} <wait>", | ||||
|             "netcfg/get_domain=demo.local <wait>", | ||||
|             "fb=false <wait>", | ||||
|             "console-setup/ask_detect=false <wait>", | ||||
|             "console-keymaps-at/keymap=us <wait>", | ||||
|             "keyboard-configuration/xkb-keymap=us <wait>", | ||||
|             "<enter><wait>" | ||||
|         ], | ||||
|         "boot_wait": "5s", | ||||
|         "vm_name": "babelbox-jessie", | ||||
|         "vboxmanage": [ | ||||
|             ["modifyvm", "{{.Name}}", "--memory", "512"], | ||||
|             ["modifyvm", "{{.Name}}", "--cpus", "1"] | ||||
|         ] | ||||
|     }] | ||||
|   "description": "Debian Babelbox", | ||||
|   "builders": [{ | ||||
|     "boot_command": [ | ||||
|       "<esc><wait>", | ||||
|       "install <wait>", | ||||
|       "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", | ||||
|       "debian-installer=en_US <wait>", | ||||
|       "auto <wait>", | ||||
|       "locale=en_US <wait>", | ||||
|       "kbd-chooser/method=de <wait>", | ||||
|       "netcfg/get_hostname={{ .Name }} <wait>", | ||||
|       "netcfg/get_domain=demo.local <wait>", | ||||
|       "fb=false <wait>", | ||||
|       "debconf/frontend=noninteractive <wait>", | ||||
|       "console-setup/ask_detect=false <wait>", | ||||
|       "console-keymaps-at/keymap=de <wait>", | ||||
|       "keyboard-configuration/xkb-keymap=de <wait>", | ||||
|       "<enter><wait>" | ||||
|     ], | ||||
|     "disk_size": 10240, | ||||
|     "guest_os_type": "Debian", | ||||
|     "hard_drive_interface": "sata", | ||||
|     "headless": false, | ||||
|     "http_directory": "http", | ||||
|     "iso_checksum": "f270d1ffa0f9472464bfc0fffa7ac3ddc89abb5786eb02454f26e49f143b01d6", | ||||
|     "iso_checksum_type": "sha256", | ||||
|     "iso_url": "http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-8.3.0-i386-netinst.iso", | ||||
|     "shutdown_command": "sudo /sbin/halt -p", | ||||
|     "ssh_username": "demo", | ||||
|     "ssh_password": "babelbox", | ||||
|     "ssh_port": "22", | ||||
|     "ssh_wait_timeout": "1800s", | ||||
|     "type": "virtualbox-iso", | ||||
|     "vm_name": "babelbox-jessie", | ||||
|     "vboxmanage": [ | ||||
|       ["modifyvm", "{{.Name}}", "--memory", "512"], | ||||
|       ["modifyvm", "{{.Name}}", "--cpus", "1"] | ||||
|     ], | ||||
|     "output_directory": "babelbox" | ||||
|   }], | ||||
|   "provisioners": [{ | ||||
|     "type": "shell", | ||||
|     "execute_command": "{{ .Vars }} sudo -E /bin/sh '{{ .Path }}'", | ||||
|     "scripts": [ | ||||
|       "scripts/babelbox-partitions.sh", | ||||
|       "scripts/setup-babelbox.sh", | ||||
|       "scripts/virtualbox.sh", | ||||
|       "scripts/cleanup.sh", | ||||
|       "scripts/minimize.sh" | ||||
|     ] | ||||
|   }] | ||||
| } | ||||
|  |  | |||
							
								
								
									
										106
									
								
								http/preseed.cfg
									
										
									
									
									
								
							
							
						
						
									
										106
									
								
								http/preseed.cfg
									
										
									
									
									
								
							|  | @ -1,59 +1,95 @@ | |||
| ### Localization | ||||
| d-i debian-installer/locale string en_US | ||||
| d-i debian-installer/language string en | ||||
| d-i debian-installer/country string US | ||||
| d-i debian-installer/locale string en_US.UTF-8 | ||||
| d-i localechooser/supported-locales multiselect en_US.UTF-8, de_DE.UTF-8 | ||||
| d-i keyboard-configuration/xkb-keymap select us | ||||
| 
 | ||||
| # Keyboard selection. | ||||
| d-i console-tools/archs select at | ||||
| d-i console-keymaps-at/keymap select de | ||||
| 
 | ||||
| d-i keyboard-configuration/xkb-keymap select de | ||||
| 
 | ||||
| ### Network configuration | ||||
| d-i netcfg/choose_interface select auto | ||||
| 
 | ||||
| ### Mirror settings | ||||
| d-i mirror/country string manual | ||||
| d-i mirror/http/hostname string http.debian.net | ||||
| d-i mirror/http/hostname string httpredir.debian.org | ||||
| d-i mirror/http/directory string /debian | ||||
| d-i mirror/http/proxy string | ||||
| 
 | ||||
| ### Account setup | ||||
| d-i passwd/root-login boolean false | ||||
| d-i passwd/user-fullname string Babelbox Demo User | ||||
| d-i passwd/username string demo | ||||
| d-i passwd/user-password-crypted password $6$M0jXQ0qT0W$4aZR9JeivSUot1WpUv5elFOEz2lZ6D4a67NMu40OR3ocHeDQIN.bkBV/JAGINgZ9tp.yLQL7wGGhLM2ZJZ9Mp/ | ||||
| d-i clock-setup/utc boolean true | ||||
| d-i clock-setup/ntp boolean false | ||||
| d-i time/zone string Europe/Berlin | ||||
| debconf debconf/frontend string Noninteractive | ||||
| 
 | ||||
| d-i partman-auto/disk string /dev/sda | ||||
| ### Clock and time zone setup | ||||
| d-i clock-setup/utc boolean true | ||||
| d-i time/zone string GMT+0 | ||||
| d-i clock-setup/ntp boolean false | ||||
| 
 | ||||
| ### Partitioning | ||||
| #d-i partman-auto/disk string /dev/sda | ||||
| d-i partman-lvm/purge_lvm_from_device boolean true | ||||
| d-i partman-lvm/device_remove_lvm boolean true | ||||
| d-i partman-md/device_remove_md boolean true | ||||
| d-i partman-lvm/confirm boolean true | ||||
| d-i partman-lvm/confirm_nooverwrite boolean true | ||||
| 
 | ||||
| d-i partman-md/device_remove_md boolean true | ||||
| 
 | ||||
| d-i partman-auto/disk string /dev/sda | ||||
| d-i partman-auto/method string regular | ||||
| d-i partman-auto/expert_recipe string                    \ | ||||
|     root ::                                              \ | ||||
|         4608 50 4608 ext4                                \ | ||||
|                     $primary{ } $bootable{ }             \ | ||||
|                     method{ format } format{ }           \ | ||||
|                     use_filesystem{ } filesystem{ ext4 } \ | ||||
|                     mountpoint{ / }                      \ | ||||
|         .                                                \ | ||||
|         512 90 512 linux-swap                            \ | ||||
|                     $primary{ }                          \ | ||||
|                     method{ swap }                       \ | ||||
|                     format{ }                            \ | ||||
|         .                                                \ | ||||
|         1 1000 -1 ext4                                   \ | ||||
|                     $primary{ }                          \ | ||||
|                     method{ keep }                       \ | ||||
|         . | ||||
| d-i partman-auto/choose_recipe select root | ||||
| d-i partman-basicmethods/method_only boolean false | ||||
| d-i partman-partitioning/confirm_write_new_label boolean true | ||||
| #d-i partman-auto/method string regular | ||||
| d-i partman-auto/expert_recipe string                           \ | ||||
|     root ::                                                     \ | ||||
|         5000 50 5000 ext4                                       \ | ||||
|                     $primary{ }                                 \ | ||||
|                     $bootable{ }                                \ | ||||
|                     method{ format }                            \ | ||||
|                     format{ }                                   \ | ||||
|                     use_filesystem{ }                           \ | ||||
|                     filesystem{ ext4 }                          \ | ||||
|                     mountpoint { / }                            \ | ||||
|                     label { root }                              \ | ||||
|                     .                                           \ | ||||
|         250 50 100% linux-swap                                  \ | ||||
|                     $primary{ }                                 \ | ||||
|                     method{ swap }                              \ | ||||
|                     format{ }                                   \ | ||||
|                     . | ||||
| d-i partman/choose_partition select finish | ||||
| d-i partman/confirm boolean true | ||||
| d-i partman/confirm_nooverwrite boolean true | ||||
| 
 | ||||
| ### Apt setup | ||||
| d-i apt-setup/non-free boolean false | ||||
| d-i apt-setup/contrib boolean false | ||||
| d-i base-installer/install-recommends boolean false | ||||
| d-i apt-setup/use_mirror boolean true | ||||
| d-i apt-setup/services-select multiselect security, updates | ||||
| d-i apt-setup/security_host string security.debian.org | ||||
| d-i pkgsel/include string parted openssh-server acpid sudo | ||||
| d-i pkgsel/upgrade select none | ||||
| popularity-contest popularity-contest/participate boolean false | ||||
| 
 | ||||
| ### Package selection | ||||
| tasksel tasksel/first multiselect standard | ||||
| grub-pc grub-pc/install_devices multiselect /dev/sda | ||||
| grub-installer grub-installer/choose_bootdev select /dev/sda | ||||
| 
 | ||||
| d-i pkgsel/include string parted openssh-server acpid sudo ca-certificates curl | ||||
| d-i pkgsel/upgrade select safe-upgrade | ||||
| 
 | ||||
| popularity-contest popularity-contest/participate boolean false | ||||
| 
 | ||||
| ### GRUB | ||||
| d-i grub-installer/only_debian boolean true | ||||
| d-i grub-installer/bootdev string default | ||||
| 
 | ||||
| ### Finishing up the installation | ||||
| d-i finish-install/keep-consoles boolean true | ||||
| d-i finish-install/reboot_in_progress note | ||||
| 
 | ||||
| d-i preseed/early_command string sed -i \ | ||||
|   '/in-target/idiscover(){/sbin/discover|grep -v VirtualBox;}' \ | ||||
|   /usr/lib/pre-pkgsel.d/20install-hwpackages | ||||
| # Setup passwordless sudo for demo | ||||
| d-i preseed/late_command string \ | ||||
|     echo "demo ALL=(ALL:ALL) NOPASSWD:ALL" > /target/etc/sudoers.d/demo ; \ | ||||
|     in-target chmod 0440 /etc/sudoers.d/demo | ||||
|  |  | |||
							
								
								
									
										18
									
								
								scripts/babelbox-partitions.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								scripts/babelbox-partitions.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| echo " | ||||
| d | ||||
| 3 | ||||
| n | ||||
| e | ||||
| 3 | ||||
| 
 | ||||
| +4G | ||||
| n | ||||
| p | ||||
| 
 | ||||
| 
 | ||||
| w" | /sbin/fdisk /dev/sda || true | ||||
| /sbin/partprobe | ||||
							
								
								
									
										10
									
								
								scripts/cleanup.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								scripts/cleanup.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| # Clean up | ||||
| apt-get --yes autoremove | ||||
| apt-get --yes clean | ||||
| 
 | ||||
| # Removing leftover leases and persistent rules | ||||
| echo "cleaning up dhcp leases" | ||||
| rm /var/lib/dhcp/* | ||||
| 
 | ||||
| echo "Adding a 2 sec delay to the interface up, to make the dhclient happy" | ||||
| echo "pre-up sleep 2" >> /etc/network/interfaces | ||||
							
								
								
									
										29
									
								
								scripts/minimize.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								scripts/minimize.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| #!/bin/sh -eux | ||||
| #Copyright 2012-2014, Chef Software, Inc. (<legal@chef.io>) | ||||
| #Copyright 2011-2012, Tim Dysinger (<tim@dysinger.net>) | ||||
| 
 | ||||
| #Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| #you may not use this file except in compliance with the License. | ||||
| #You may obtain a copy of the License at | ||||
| 
 | ||||
| #    http://www.apache.org/licenses/LICENSE-2.0 | ||||
| 
 | ||||
| #Unless required by applicable law or agreed to in writing, software | ||||
| #distributed under the License is distributed on an "AS IS" BASIS, | ||||
| #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| #See the License for the specific language governing permissions and | ||||
| #limitations under the License. | ||||
| 
 | ||||
| echo "Fill with 0 the swap partition to reduce box size" | ||||
| readonly swapuuid=$(/sbin/blkid -o value -l -s UUID -t TYPE=swap) | ||||
| readonly swappart=$(readlink -f /dev/disk/by-uuid/"$swapuuid") | ||||
| /sbin/swapoff "$swappart" | ||||
| dd if=/dev/zero of="$swappart" bs=1M || echo "dd exit code $? is suppressed" | ||||
| /sbin/mkswap -U "$swapuuid" "$swappart" | ||||
| 
 | ||||
| echo "Fill filesystem with 0 to reduce box size" | ||||
| dd if=/dev/zero of=/EMPTY bs=1M | ||||
| rm -f /EMPTY | ||||
| # Block until the empty file has been removed, otherwise, Packer | ||||
| # will try to kill the box while the disk is still full and that's bad | ||||
| sync | ||||
							
								
								
									
										14
									
								
								scripts/setup-babelbox.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								scripts/setup-babelbox.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| apt-get install -y git wget | ||||
| cd /srv | ||||
| wget http://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/gtk/initrd.gz http://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/gtk/vmlinuz | ||||
| git clone https://anonscm.debian.org/git/d-i/babelbox.git | ||||
| cd babelbox | ||||
| cat babelbox-grub >> /etc/grub.d/40_custom | ||||
| update-grub | ||||
| ./cronscript | ||||
| 
 | ||||
| echo "You need to download a Debian i386 DVD ISO into /srv" | ||||
							
								
								
									
										33
									
								
								scripts/virtualbox.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								scripts/virtualbox.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| echo "installing virtualbox guest additions" | ||||
| 
 | ||||
| # install virtualbox additions build dependancies | ||||
| apt-get --yes install linux-headers-$(uname -r) build-essential dkms | ||||
| 
 | ||||
| 
 | ||||
| # If libdbus is not installed, virtualbox will not autostart | ||||
| apt-get -y install --no-install-recommends libdbus-1-3 | ||||
| 
 | ||||
| # deprecated: this remove virtualbox additions installed | ||||
| # from the debian installer pre-wheezy release | ||||
| 
 | ||||
| #if test -f .vbox_version ; then | ||||
|   # The netboot installs the VirtualBox support (old) so we have to remove it | ||||
| #  if test -f /etc/init.d/virtualbox-ose-guest-utils ; then | ||||
| #    /etc/init.d/virtualbox-ose-guest-utils stop | ||||
| #  fi | ||||
| 
 | ||||
| #  rmmod vboxguest | ||||
| #  aptitude -y purge virtualbox-ose-guest-x11 virtualbox-ose-guest-dkms virtualbox-ose-guest-utils | ||||
| #fi | ||||
| 
 | ||||
| # Install the VirtualBox guest additions | ||||
| mount -o loop VBoxGuestAdditions.iso /mnt | ||||
| yes|sh /mnt/VBoxLinuxAdditions.run | ||||
| umount /mnt | ||||
| rm -f VBoxGuestAdditions.iso | ||||
| 
 | ||||
| # Start the newly build driver | ||||
| service vboxadd start | ||||
| 
 | ||||
| # cleanup virtualbox stuff | ||||
| apt-get --yes remove linux-headers-$(uname -r) build-essential dkms | ||||
|  | @ -1,8 +0,0 @@ | |||
| #!/bin/sh | ||||
| set -e | ||||
| 
 | ||||
| cd http | ||||
| wget -c -N http://cdimage.debian.org/debian-cd/current/i386/iso-dvd/debian-8.3.0-i386-DVD-1.iso | ||||
| cd .. | ||||
| 
 | ||||
| packer build debian-babelbox.json | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue