init.pp 3.1 KB

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