stemcell_builder 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. data/.gitignore +20 -0
  2. data/.rvmrc +1 -0
  3. data/.travis.yml +1 -0
  4. data/Gemfile +14 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +123 -0
  7. data/Rakefile +10 -0
  8. data/assets/box.ovf.erb +81 -0
  9. data/assets/stemcell_mf_schema.yaml +30 -0
  10. data/bin/stemcell_builder +138 -0
  11. data/lib/stemcell.rb +3 -0
  12. data/lib/stemcell/builder.rb +445 -0
  13. data/lib/stemcell/builders/centos.rb +33 -0
  14. data/lib/stemcell/builders/redhat.rb +34 -0
  15. data/lib/stemcell/builders/ubuntu.rb +36 -0
  16. data/lib/stemcell/const.rb +12 -0
  17. data/lib/stemcell/version.rb +10 -0
  18. data/spec/spec_helper.rb +10 -0
  19. data/spec/stemcell_builder/builder_spec.rb +186 -0
  20. data/spec/stemcell_builder/centos_spec.rb +39 -0
  21. data/spec/stemcell_builder/redhat_spec.rb +53 -0
  22. data/spec/stemcell_builder/ubuntu_spec.rb +38 -0
  23. data/stemcell_builder.gemspec +42 -0
  24. data/templates/centos/_60-bosh-sysctl.conf +5 -0
  25. data/templates/centos/_empty_state.yml +9 -0
  26. data/templates/centos/_monitrc +8 -0
  27. data/templates/centos/_ntpdate +10 -0
  28. data/templates/centos/_runonce +46 -0
  29. data/templates/centos/_sysstat +18 -0
  30. data/templates/centos/_variables.sh.erb +31 -0
  31. data/templates/centos/base.sh +23 -0
  32. data/templates/centos/bosh_agent.sh +39 -0
  33. data/templates/centos/cleanup.sh +28 -0
  34. data/templates/centos/definition.rb.erb +37 -0
  35. data/templates/centos/harden.sh +8 -0
  36. data/templates/centos/ks.cfg +43 -0
  37. data/templates/centos/micro.sh +57 -0
  38. data/templates/centos/monit.sh +21 -0
  39. data/templates/centos/postinstall.sh +27 -0
  40. data/templates/centos/ruby.sh +42 -0
  41. data/templates/centos/setup-bosh.sh +20 -0
  42. data/templates/centos/sudo.sh +13 -0
  43. data/templates/centos/timestamp.sh +15 -0
  44. data/templates/centos/vmware-tools.sh +17 -0
  45. data/templates/centos/zerodisk.sh +9 -0
  46. data/templates/noop/erbtest.txt.erb +1 -0
  47. data/templates/noop/test.txt +1 -0
  48. data/templates/redhat/_60-bosh-sysctl.conf +5 -0
  49. data/templates/redhat/_empty_state.yml +9 -0
  50. data/templates/redhat/_monitrc +8 -0
  51. data/templates/redhat/_ntpdate +10 -0
  52. data/templates/redhat/_runonce +46 -0
  53. data/templates/redhat/_sysstat +18 -0
  54. data/templates/redhat/_variables.sh.erb +31 -0
  55. data/templates/redhat/base.sh +41 -0
  56. data/templates/redhat/bosh_agent.sh +37 -0
  57. data/templates/redhat/cleanup.sh +30 -0
  58. data/templates/redhat/definition.rb.erb +38 -0
  59. data/templates/redhat/harden.sh +8 -0
  60. data/templates/redhat/ks.cfg +86 -0
  61. data/templates/redhat/micro.sh +57 -0
  62. data/templates/redhat/monit.sh +21 -0
  63. data/templates/redhat/postinstall.sh +27 -0
  64. data/templates/redhat/rhnreg.sh.erb +15 -0
  65. data/templates/redhat/ruby.sh +42 -0
  66. data/templates/redhat/setup-bosh.sh +20 -0
  67. data/templates/redhat/sudo.sh +13 -0
  68. data/templates/redhat/timestamp.sh +15 -0
  69. data/templates/redhat/vmware-tools.sh +17 -0
  70. data/templates/redhat/zerodisk.sh +9 -0
  71. data/templates/ubuntu/_60-bosh-sysctl.conf +5 -0
  72. data/templates/ubuntu/_empty_state.yml +9 -0
  73. data/templates/ubuntu/_helpers.sh +40 -0
  74. data/templates/ubuntu/_monitrc +8 -0
  75. data/templates/ubuntu/_ntpdate +10 -0
  76. data/templates/ubuntu/_runonce +46 -0
  77. data/templates/ubuntu/_sysstat +18 -0
  78. data/templates/ubuntu/_variables.sh.erb +30 -0
  79. data/templates/ubuntu/apt-upgrade.sh +19 -0
  80. data/templates/ubuntu/base-stemcell.sh +95 -0
  81. data/templates/ubuntu/bosh_agent.sh +39 -0
  82. data/templates/ubuntu/definition.rb.erb +63 -0
  83. data/templates/ubuntu/harden.sh +9 -0
  84. data/templates/ubuntu/micro.sh +57 -0
  85. data/templates/ubuntu/monit.sh +22 -0
  86. data/templates/ubuntu/network-cleanup.sh +17 -0
  87. data/templates/ubuntu/postinstall.sh +45 -0
  88. data/templates/ubuntu/preseed.cfg +87 -0
  89. data/templates/ubuntu/ruby.sh +54 -0
  90. data/templates/ubuntu/setup-bosh.sh +14 -0
  91. data/templates/ubuntu/sudo.sh +14 -0
  92. data/templates/ubuntu/timestamp.sh +13 -0
  93. data/templates/ubuntu/vmware-tools.sh +22 -0
  94. data/templates/ubuntu/zero-disk.sh +10 -0
  95. metadata +375 -0
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+ set -x
3
+
4
+ bosh_app_dir=/var/vcap
5
+ bosh_dir=${bosh_app_dir}/bosh
6
+ infrastructure="vsphere"
7
+ SRC_DIR=`pwd`
8
+
9
+ blobstore_path=${bosh_app_dir}/micro_bosh/data/cache
10
+ agent_host=localhost
11
+ agent_port=6969
12
+ agent_uri=http://vcap:vcap@${agent_host}:${agent_port}
13
+ export PATH=${bosh_app_dir}/bosh/bin:$PATH
14
+
15
+ # Packages
16
+ yum -y install mkisofs genisoimage postgresql-libs postgresql-devel boost boost-devel mysql mysql-devel lua lua-devel nc
17
+
18
+ # Install package compiler if not already installed
19
+ if [ ! -f "$bosh_dir/bin/package_compiler" ]
20
+ then
21
+ mkdir -p /tmp/package_compiler
22
+ pushd /tmp/package_compiler
23
+ cp $SRC_DIR/_package_compiler.tar .
24
+ tar -xvf _package_compiler.tar
25
+ $bosh_dir/bin/gem install *.gem --no-ri --no-rdoc --local
26
+ popd
27
+ fi
28
+
29
+ mkdir -p ${bosh_app_dir}/bosh/blob
30
+ mkdir -p ${blobstore_path}
31
+
32
+ echo "Starting micro bosh compilation"
33
+
34
+ # Start agent
35
+ $bosh_dir/bin/bosh_agent -I ${infrastructure} -n ${agent_uri} -s ${blobstore_path} -p local &
36
+ agent_pid=$!
37
+
38
+ # Wait for agent to come up
39
+ for i in {1..10}
40
+ do
41
+ nc -z ${agent_host} ${agent_port} && break
42
+ sleep 1
43
+ done
44
+
45
+ # Start compiler
46
+ $bosh_dir/bin/package_compiler --cpi ${infrastructure} compile $SRC_DIR/_release.yml $SRC_DIR/_release.tgz ${blobstore_path} ${agent_uri}
47
+
48
+ kill -15 $agent_pid
49
+
50
+ # Wait for agent
51
+ for i in {1..5}
52
+ do
53
+ kill -0 $agent_pid && break
54
+ sleep 1
55
+ done
56
+ # Force kill if required
57
+ kill -0 $agent_pid || kill -9 $agent_pid
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+
3
+ source _variables.sh
4
+
5
+ ### stage bosh_monit
6
+ mkdir -p $bosh_dir/etc
7
+ cp _monitrc $bosh_dir/etc/monitrc
8
+ chmod 0700 $bosh_dir/etc/monitrc
9
+
10
+ yum -y install pam-devel
11
+
12
+ pushd /tmp
13
+ [ ! -f "monit-5.5.tar.gz" ] && wget http://mmonit.com/monit/dist/monit-5.5.tar.gz
14
+ tar xzvf monit-5.5.tar.gz
15
+ cd monit-5.5
16
+ ./configure --prefix=$bosh_dir --without-ssl
17
+ make && make install
18
+ # monit refuses to start without an include file present
19
+ mkdir -p $bosh_app_dir/monit
20
+ touch /$bosh_app_dir/monit/empty.monitrc
21
+ popd
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+
3
+ #import helpers scripts
4
+ source _variables.sh
5
+
6
+ ### stage bosh_sysstat
7
+ cp $SRC_DIR/_sysstat /etc/default/sysstat
8
+
9
+ ### stage bosh_sysctl
10
+ [ ! -d /etc/sysctl.d ] && mkdir -p /etc/sysctl.d
11
+ cp $SRC_DIR/_60-bosh-sysctl.conf /etc/sysctl.d/60-bosh-sysctl.conf
12
+ chmod 0644 /etc/sysctl.d/60-bosh-sysctl.conf
13
+
14
+ ### stage bosh_ntpdate
15
+ # setup crontab for root to use ntpdate every 15 minutes
16
+ mkdir -p $bosh_dir/log
17
+ cp $SRC_DIR/_ntpdate $bosh_dir/bin/ntpdate
18
+ chmod 0755 $bosh_dir/bin/ntpdate
19
+ echo "0,15,30,45 * * * * ${bosh_dir}/bin/ntpdate" > /tmp/ntpdate.cron
20
+ crontab -u root /tmp/ntpdate.cron
21
+ rm /tmp/ntpdate.cron
22
+
23
+ # Final system update
24
+ yum -y update
25
+
26
+ # Create list of installed packages -- legal requirement
27
+ yum list installed > $bosh_dir/stemcell_yum_list_installed.out
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ set -x
4
+
5
+ source _variables.sh
6
+ echo "Register with RHN ... "
7
+
8
+ <% if ENV['HTTP_PROXY'] || ENV['http_proxy'] || ENV['https_proxy'] || ENV['HTTPS_PROXY'] %>
9
+ subscription-manager register --username=<%= @rhn_user %> --password=<%= @rhn_pass %> --proxy=`echo $http_proxy`
10
+ rhnreg_ks --nohardware --nopackages --novirtinfo --norhnsd --username="<%= @rhn_user %>" --password="<%= @rhn_pass %>" --proxy=`echo $http_proxy`
11
+ <% else %>
12
+ subscription-manager register --username=<%= @rhn_user %> --password=<%= @rhn_pass %>
13
+ rhnreg_ks --nohardware --nopackages --novirtinfo --norhnsd --username="<%= @rhn_user %>" --password="<%= @rhn_pass %>"
14
+ <% end %>
15
+
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+
3
+ set -x
4
+
5
+ source _variables.sh
6
+
7
+ # install libyaml
8
+ pushd /tmp
9
+ [ ! -f "yaml-0.1.4.tar.gz" ] && wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
10
+ tar zxf yaml-0.1.4.tar.gz
11
+ cd yaml-0.1.4
12
+ ./configure
13
+ make
14
+ make install
15
+ echo /usr/local/lib >> /etc/ld.so.conf
16
+ ldconfig
17
+ popd
18
+
19
+ # install ruby and rubygems
20
+ pushd /tmp
21
+ [ ! -f "ruby-1.9.3-p374.tar.gz" ] && wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz
22
+ tar zxf ruby-1.9.3-p374.tar.gz
23
+ cd ruby-1.9.3-p374
24
+ ./configure --prefix=$bosh_dir --disable-install-doc
25
+ make
26
+ make install
27
+ popd
28
+
29
+ pushd /tmp
30
+ [ ! -f "rubygems-1.8.24.tgz" ] && wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
31
+ tar zxf rubygems-1.8.24.tgz
32
+ cd rubygems-1.8.24
33
+ $bosh_dir/bin/ruby setup.rb --no-format-executable
34
+ popd
35
+
36
+ export PATH=$PATH:$bosh_dir/bin
37
+ $bosh_dir/bin/gem update --system --no-ri --no-rdoc
38
+ mkdir -p $bosh_dir/etc
39
+ echo "gem: --no-rdoc --no-ri" >> $bosh_dir/etc/gemrc
40
+
41
+ # Install bundler gem
42
+ $bosh_dir/bin/gem install bundler --no-ri --no-rdoc
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+
3
+ source _variables.sh
4
+
5
+ yum -y install glibc-static sg3_utils
6
+
7
+ pushd /usr/bin
8
+ if [ ! -f rescan-scsi-bus.sh ]
9
+ then
10
+ ln -s rescan-scsi-bus rescan-scsi-bus.sh
11
+ fi
12
+ popd
13
+
14
+ pushd /tmp
15
+ yum -y install git rpm-build rpmdevtools gcc glibc-static make
16
+ git clone https://github.com/imeyer/runit-rpm.git
17
+ cd runit-rpm
18
+ ./build.sh
19
+ rpm -i ~/rpmbuild/RPMS/*/*.rpm
20
+ popd
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+
3
+ cp /etc/sudoers /etc/sudoers.orig
4
+ sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=admin' /etc/sudoers
5
+ sed -i -e 's/%admin ALL=(ALL) ALL/%admin ALL=NOPASSWD:ALL/g' /etc/sudoers
6
+ cp -p /etc/sudoers /etc/sudoers.save
7
+ echo '#includedir /etc/sudoers.d' >> /etc/sudoers
8
+ visudo -c
9
+ if [ $? -ne 0 ]; then
10
+ echo "ERROR: bad sudoers file"
11
+ exit 1
12
+ fi
13
+ rm /etc/sudoers.save
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ set -x
4
+
5
+ source _variables.sh
6
+
7
+ # Turn on NTP service
8
+ chkconfig ntpd on
9
+ # Synchronize time with pool.ntp.org
10
+ ntpdate pool.ntp.org
11
+ # Start the NTP service
12
+ /etc/init.d/ntpd start
13
+
14
+ # save build time
15
+ date > /etc/box_build_time
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ ### stage system_open_vm_tools
4
+ source _variables.sh
5
+
6
+ cat > /etc/yum.repos.d/vmware-tools.repo << EOM
7
+ [vmware-tools]
8
+ name=VMware Tools
9
+ baseurl=http://packages.vmware.com/tools/esx/5.0/rhel6/x86_64
10
+ enabled=1
11
+ gpgcheck=1
12
+ EOM
13
+
14
+ rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
15
+ rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
16
+
17
+ yum -y install vmware-tools-esx-kmods-`uname -r` vmware-tools-esx
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -x
4
+
5
+ source _variables.sh
6
+
7
+ # Zero out the free space to save space in the final image:
8
+ dd if=/dev/zero of=/EMPTY bs=1M
9
+ rm -f /EMPTY
@@ -0,0 +1,5 @@
1
+ # Copyright (c) 2009-2012 VMware, Inc.
2
+
3
+ # Setup rp_filter in loose mode
4
+ net.ipv4.conf.default.rp_filter=2
5
+ net.ipv4.conf.all.rp_filter=2
@@ -0,0 +1,9 @@
1
+ deployment: ""
2
+ job: ""
3
+ index: ""
4
+ networks: {}
5
+ resource_pool: {}
6
+ packages: {}
7
+ persistent_disk: {}
8
+ configuration_hash: {}
9
+ properties: {}
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+
3
+ function disable {
4
+ mv $1 $1.back
5
+ ln -s /bin/true $1
6
+ }
7
+
8
+ function enable {
9
+ if [ -L $1 ]
10
+ then
11
+ mv $1.back $1
12
+ else
13
+ # No longer a symbolic link, must have been overwritten
14
+ rm -f $1.back
15
+ fi
16
+ }
17
+
18
+ function run_in_chroot {
19
+ local chroot=$1
20
+ local script=$2
21
+
22
+ # Disable daemon startup
23
+ disable $chroot/sbin/initctl
24
+ disable $chroot/usr/sbin/invoke-rc.d
25
+
26
+ unshare -m $SHELL <<EOF
27
+ mkdir -p $chroot/dev
28
+ mount -n --bind /dev $chroot/dev
29
+ mount -n --bind /dev/pts $chroot/dev/pts
30
+
31
+ mkdir -p $chroot/proc
32
+ mount -n -t proc proc $chroot/proc
33
+
34
+ chroot $chroot env -i $(cat $chroot/etc/environment) http_proxy=${http_proxy:-} bash -e -c "$script"
35
+ EOF
36
+
37
+ # Enable daemon startup
38
+ enable $chroot/sbin/initctl
39
+ enable $chroot/usr/sbin/invoke-rc.d
40
+ }
@@ -0,0 +1,8 @@
1
+ set daemon 10
2
+ set logfile /var/vcap/monit/monit.log
3
+
4
+ set httpd port 2822 and use address 127.0.0.1
5
+ allow cleartext /var/vcap/monit/monit.user
6
+
7
+ include /var/vcap/monit/*.monitrc
8
+ include /var/vcap/monit/job/*.monitrc
@@ -0,0 +1,10 @@
1
+ #!/bin/sh
2
+ #
3
+ # Copyright (c) 2009-2012 VMware, Inc.
4
+
5
+ BOSH=/var/vcap/bosh
6
+ NTP_SERVER_FILE=$BOSH/etc/ntpserver
7
+ if [ -f $NTP_SERVER_FILE ]; then
8
+ NTP_SERVER=`cat $NTP_SERVER_FILE`
9
+ /usr/sbin/ntpdate $NTP_SERVER > $BOSH/log/ntpdate.out 2>&1
10
+ fi
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+
3
+ if [[ $# -eq 0 ]]; then
4
+ echo "Schedules a command to be run after the next reboot."
5
+ echo "Usage: $(basename $0) <command>"
6
+ echo " $(basename $0) -p <path> <command>"
7
+ echo " $(basename $0) -r <command>"
8
+ else
9
+ REMOVE=0
10
+ COMMAND=${!#}
11
+ SCRIPTPATH=$PATH
12
+
13
+ while getopts ":r:p:" optionName; do
14
+ case "$optionName" in
15
+ r) REMOVE=1; COMMAND=$OPTARG;;
16
+ p) SCRIPTPATH=$OPTARG;;
17
+ esac
18
+ done
19
+
20
+ SCRIPT="${HOME}/.$(basename $0)_$(echo $COMMAND | sed 's/[^a-zA-Z0-9_]/_/g')"
21
+
22
+ if [[ ! -f $SCRIPT ]]; then
23
+ echo "PATH=$SCRIPTPATH" >> $SCRIPT
24
+ echo "cd $(pwd)" >> $SCRIPT
25
+ echo "logger -t $(basename $0) -p local3.info \"COMMAND=$COMMAND ; USER=\$(whoami) ($(logname)) ; PWD=$(pwd) ; PATH=\$PATH\"" >> $SCRIPT
26
+ echo "$COMMAND | logger -t $(basename $0) -p local3.info" >> $SCRIPT
27
+ echo "$0 -r \"$(echo $COMMAND | sed 's/\"/\\\"/g')\"" >> $SCRIPT
28
+ chmod +x $SCRIPT
29
+ fi
30
+
31
+ CRONTAB="${HOME}/.$(basename $0)_temp_crontab_$RANDOM"
32
+ ENTRY="@reboot $SCRIPT"
33
+
34
+ echo "$(crontab -l 2>/dev/null)" | grep -v "$ENTRY" | grep -v "^# DO NOT EDIT THIS FILE - edit the master and reinstall.$" | grep -v "^# ([^ ]* installed on [^)]*)$" | grep -v "^# (Cron version [^$]*\$[^$]*\$)$" > $CRONTAB
35
+
36
+ if [[ $REMOVE -eq 0 ]]; then
37
+ echo "$ENTRY" >> $CRONTAB
38
+ fi
39
+
40
+ crontab $CRONTAB
41
+ rm $CRONTAB
42
+
43
+ if [[ $REMOVE -ne 0 ]]; then
44
+ rm $SCRIPT
45
+ fi
46
+ fi
@@ -0,0 +1,18 @@
1
+ #
2
+ # Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
3
+ # and /etc/cron.daily/sysstat files
4
+ #
5
+
6
+ # Should sadc collect system activity informations? Valid values
7
+ # are "true" and "false". Please do not put other values, they
8
+ # will be overwritten by debconf!
9
+ ENABLED="true"
10
+
11
+ # Additional options passed to sa1 by /etc/init.d/sysstat
12
+ # and /etc/cron.d/sysstat
13
+ # By default contains the `-S DISK' option responsible for
14
+ # generating disk statisitcs.
15
+ SA1_OPTIONS="-S DISK"
16
+
17
+ # Additional options passed to sa2 by /etc/cron.daily/sysstat.
18
+ SA2_OPTIONS=""
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+
3
+ bosh_app_dir=/var/vcap
4
+ bosh_dir=$bosh_app_dir/bosh
5
+ bosh_users_password="c1owdc0w"
6
+ infrastructure="vsphere"
7
+ SRC_DIR=`pwd`
8
+
9
+ if [ ! -d "$bosh_dir" ]; then
10
+ # create bosh_dir and add to path
11
+ mkdir -p $bosh_dir
12
+ echo "PATH=$PATH:$bosh_dir/bin
13
+ export PATH
14
+ " >> /etc/profile
15
+
16
+ echo "PATH=$PATH:$bosh_dir/bin
17
+ export PATH
18
+ " >> /root/.bash_profile
19
+
20
+ export PATH=$PATH:$bosh_dir/bin
21
+ fi
22
+ <% if ENV['HTTP_PROXY'] || ENV['http_proxy'] %>
23
+ export HTTP_PROXY=<%= ENV['HTTP_PROXY'] || ENV['http_proxy'] %>
24
+ export http_proxy=<%= ENV['HTTP_PROXY'] || ENV['http_proxy'] %>
25
+ <% end %>
26
+
27
+ <% if ENV['HTTPS_PROXY'] || ENV['https_proxy'] %>
28
+ export HTTPS_PROXY=<%= ENV['HTTPS_PROXY'] || ENV['https_proxy'] %>
29
+ export https_proxy=<%= ENV['HTTPS_PROXY'] || ENV['https_proxy'] %>
30
+ <% end %>
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+ set -x
3
+
4
+ source _variables.sh
5
+ # Upgrade all packages
6
+ apt-get -y update
7
+
8
+ apt-get -y --force-yes install build-essential libssl-dev lsof \
9
+ strace bind9-host dnsutils tcpdump iputils-arping \
10
+ curl wget libcurl3 libcurl3-dev bison libreadline6-dev \
11
+ libxml2 libxml2-dev libxslt1.1 libxslt1-dev zip unzip \
12
+ nfs-common flex psmisc apparmor-utils iptables sysstat \
13
+ rsync openssh-server traceroute libncurses5-dev quota \
14
+ libaio1 gdb psmisc dialog bridge-utils debootstrap libcap-dev libyaml-dev
15
+
16
+ # Upgrade packages to latest version
17
+ apt-get -y update
18
+ apt-get -y upgrade
19
+ apt-get clean