init.pp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. # Set up VirtualBox guest utils
  14. package { "virtualbox-guest-utils": }
  15. exec { "vbox-add" :
  16. command => "/etc/init.d/vboxadd setup",
  17. require => [
  18. Package["virtualbox-guest-utils"],
  19. Package["linux-headers-3.5.0-25-generic"], ],
  20. }
  21. }
  22. class ec2 {
  23. }
  24. class docker {
  25. # update this with latest docker binary distro
  26. $docker_url = "http://get.docker.io/builds/$kernel/$hardwaremodel/docker-master.tgz"
  27. # update this with latest go binary distry
  28. $go_url = "http://go.googlecode.com/files/go1.0.3.linux-amd64.tar.gz"
  29. Package { ensure => "installed" }
  30. package { ["lxc", "debootstrap", "wget", "bsdtar", "git",
  31. "pkg-config", "libsqlite3-dev",
  32. "linux-image-3.5.0-25-generic",
  33. "linux-image-extra-3.5.0-25-generic",
  34. "linux-headers-3.5.0-25-generic"]: }
  35. notify { "docker_url = $docker_url": withpath => true }
  36. $ec2_version = file("/etc/ec2_version", "/dev/null")
  37. if ($ec2_version) {
  38. include ec2
  39. } else {
  40. # virtualbox is the vagrant default, so it should be safe to assume
  41. include virtualbox
  42. }
  43. user { "vagrant":
  44. ensure => present,
  45. comment => "Vagrant User",
  46. shell => "/bin/bash",
  47. home => "/home/vagrant",
  48. }
  49. file { "/usr/local/bin":
  50. ensure => directory,
  51. owner => root,
  52. group => root,
  53. mode => 755,
  54. }
  55. exec { "fetch-go":
  56. require => Package["wget"],
  57. command => "/usr/bin/wget -O - $go_url | /bin/tar xz -C /usr/local",
  58. creates => "/usr/local/go/bin/go",
  59. }
  60. exec { "fetch-docker" :
  61. command => "/usr/bin/wget -O - $docker_url | /bin/tar xz -C /tmp",
  62. require => Package["wget"],
  63. }
  64. file { "/etc/init/dockerd.conf":
  65. mode => 600,
  66. owner => "root",
  67. group => "root",
  68. content => template("docker/dockerd.conf"),
  69. require => Exec["fetch-docker"],
  70. }
  71. file { "/home/vagrant":
  72. mode => 644,
  73. require => User["vagrant"],
  74. }
  75. file { "/home/vagrant/.profile":
  76. mode => 644,
  77. owner => "vagrant",
  78. group => "ubuntu",
  79. content => template("docker/profile"),
  80. require => File["/home/vagrant"],
  81. }
  82. exec { "copy-docker-bin" :
  83. command => "/usr/bin/sudo /bin/cp -f /tmp/docker-master/docker /usr/local/bin/",
  84. require => [ Exec["fetch-docker"], File["/usr/local/bin"] ],
  85. }
  86. service { "dockerd" :
  87. ensure => "running",
  88. start => "/sbin/initctl start dockerd",
  89. stop => "/sbin/initctl stop dockerd",
  90. require => File["/etc/init/dockerd.conf"],
  91. name => "dockerd",
  92. provider => "base"
  93. }
  94. }