stemcell_builder 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
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