init.pp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. class virtualbox {
  2. Package { ensure => "installed" }
  3. # remove some files from the base vagrant image because they're old
  4. file { "/home/vagrant/docker-master":
  5. ensure => absent,
  6. recurse => true,
  7. force => true,
  8. purge => true,
  9. }
  10. file { "/usr/local/bin/dockerd":
  11. ensure => absent,
  12. }
  13. file { "/usr/local/bin/docker":
  14. ensure => absent,
  15. }
  16. # Set up VirtualBox guest utils
  17. package { "virtualbox-guest-utils": }
  18. exec { "vbox-add" :
  19. command => "/etc/init.d/vboxadd setup",
  20. require => [
  21. Package["virtualbox-guest-utils"],
  22. Package["linux-headers-3.5.0-25-generic"], ],
  23. }
  24. }
  25. class docker {
  26. # update this with latest go binary dist
  27. $go_url = "http://go.googlecode.com/files/go1.0.3.linux-amd64.tar.gz"
  28. Package { ensure => "installed" }
  29. package { ["lxc", "debootstrap", "wget", "bsdtar", "git",
  30. "linux-image-3.5.0-25-generic",
  31. "linux-image-extra-3.5.0-25-generic",
  32. "linux-headers-3.5.0-25-generic"]: }
  33. $ec2_version = file("/etc/ec2_version", "/dev/null")
  34. $rax_version = inline_template("<%= %x{/usr/bin/xenstore-read vm-data/provider_data/provider} %>")
  35. if ($ec2_version) {
  36. $vagrant_user = "ubuntu"
  37. $vagrant_home = "/home/ubuntu"
  38. } elsif ($rax_version) {
  39. $vagrant_user = "root"
  40. $vagrant_home = "/root"
  41. } else {
  42. # virtualbox is the vagrant default, so it should be safe to assume
  43. $vagrant_user = "vagrant"
  44. $vagrant_home = "/home/vagrant"
  45. include virtualbox
  46. }
  47. exec { "fetch-go":
  48. require => Package["wget"],
  49. command => "/usr/bin/wget -O - $go_url | /bin/tar xz -C /usr/local",
  50. creates => "/usr/local/go/bin/go",
  51. }
  52. file { "/etc/init/dockerd.conf":
  53. mode => 600,
  54. owner => "root",
  55. group => "root",
  56. content => template("docker/dockerd.conf"),
  57. }
  58. file { "/opt/go":
  59. owner => $vagrant_user,
  60. group => $vagrant_user,
  61. recurse => true,
  62. }
  63. file { "${vagrant_home}/.profile":
  64. mode => 644,
  65. owner => $vagrant_user,
  66. group => $vagrant_user,
  67. content => template("docker/profile"),
  68. }
  69. exec { "build-docker" :
  70. cwd => "/opt/go/src/github.com/dotcloud/docker",
  71. user => $vagrant_user,
  72. environment => "GOPATH=/opt/go",
  73. command => "/usr/local/go/bin/go get -v ./... && /usr/local/go/bin/go install ./docker",
  74. creates => "/opt/go/bin/docker",
  75. logoutput => "on_failure",
  76. require => [ Exec["fetch-go"], File["/opt/go"] ],
  77. }
  78. service { "dockerd" :
  79. ensure => "running",
  80. start => "/sbin/initctl start dockerd",
  81. stop => "/sbin/initctl stop dockerd",
  82. require => [ Exec["build-docker"], File["/etc/init/dockerd.conf"] ],
  83. name => "dockerd",
  84. provider => "base"
  85. }
  86. }