init.pp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. class docker {
  2. # update this with latest docker binary distro
  3. $docker_url = "http://docker.io.s3.amazonaws.com/builds/$kernel/$hardwaremodel/docker-master.tgz"
  4. # update this with latest go binary distry
  5. $go_url = "http://go.googlecode.com/files/go1.0.3.linux-amd64.tar.gz"
  6. Package { ensure => "installed" }
  7. package { ["lxc", "debootstrap", "wget", "bsdtar", "git",
  8. "pkg-config", "libsqlite3-dev",
  9. "linux-image-3.5.0-25-generic",
  10. "linux-image-extra-3.5.0-25-generic",
  11. "virtualbox-guest-utils",
  12. "linux-headers-3.5.0-25-generic"]: }
  13. notify { "docker_url = $docker_url": withpath => true }
  14. exec { "debootstrap" :
  15. require => Package["debootstrap"],
  16. command => "/usr/sbin/debootstrap --arch=amd64 quantal /var/lib/docker/images/docker-ut",
  17. creates => "/var/lib/docker/images/docker-ut",
  18. timeout => 0
  19. }
  20. exec { "fetch-go":
  21. require => Package["wget"],
  22. command => "/usr/bin/wget -O - $go_url | /bin/tar xz -C /usr/local",
  23. creates => "/usr/local/go/bin/go",
  24. }
  25. exec { "fetch-docker" :
  26. require => Package["wget"],
  27. command => "/usr/bin/wget -O - $docker_url | /bin/tar xz -C /home/vagrant",
  28. creates => "/home/vagrant/docker-master"
  29. }
  30. file { "/etc/init/dockerd.conf":
  31. mode => 600,
  32. owner => "root",
  33. group => "root",
  34. content => template("docker/dockerd.conf"),
  35. require => [Exec["fetch-docker"], Exec["debootstrap"]]
  36. }
  37. file { "/home/vagrant/.profile":
  38. mode => 644,
  39. owner => "vagrant",
  40. group => "vagrant",
  41. content => template("docker/profile"),
  42. }
  43. exec { "copy-docker-bin" :
  44. require => Exec["fetch-docker"],
  45. command => "/bin/cp /home/vagrant/docker-master/docker /usr/local/bin",
  46. creates => "/usr/local/bin/docker"
  47. }
  48. exec { "vbox-add" :
  49. require => Package["linux-headers-3.5.0-25-generic"],
  50. command => "/etc/init.d/vboxadd setup",
  51. }
  52. service { "dockerd" :
  53. ensure => "running",
  54. start => "/sbin/initctl start dockerd",
  55. stop => "/sbin/initctl stop dockerd",
  56. require => File["/etc/init/dockerd.conf"],
  57. name => "dockerd",
  58. provider => "base"
  59. }
  60. }