asteris-llc/converge

View on GitHub
examples/elk/converge/docker.hcl

Summary

Maintainability
Test Coverage
param "docker-package" {
  default = "docker-engine"
}

param "docker-service" {
  default = "docker"
}

param "docker-group" {
  default = "docker"
}

param "user-name" {
  default = "vagrant"
}

file.content "overlay-module" {
  destination = "/etc/modules-load.d/overlay.conf"
  content     = "overlay"
}

task "load-overlay-module" {
  check   = "lsmod | grep overlay"
  apply   = "modprobe overlay"
  depends = ["file.content.overlay-module"]
}

file.directory "service-directory" {
  destination = "/etc/systemd/system/docker.service.d"
  create_all  = true
}

file.content "docker-storage-driver" {
  destination = "/etc/systemd/system/docker.service.d/overlay.conf"

  content = <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --storage-driver=overlay
EOF

  depends = ["file.directory.service-directory"]
}

package.rpm "docker-install" {
  name  = "{{param `docker-package`}}"
  state = "present"

  depends = ["file.content.docker-repo"]
}

task "docker-user-group" {
  check = "groups {{param `user-name`}} | grep -i {{param `docker-group`}}"
  apply = "usermod -aG {{param `docker-group`}} {{param `user-name`}}"

  depends = ["package.rpm.docker-install"]
}

task "docker-enable" {
  check   = "systemctl is-enabled {{param `docker-service`}}"
  apply   = "systemctl daemon-reload; systemctl enable {{param `docker-service`}}"
  depends = ["task.docker-user-group"]
}

task "docker-start" {
  check   = "systemctl is-active {{param `docker-service`}}"
  apply   = "systemctl daemon-reload; systemctl start {{param `docker-service`}}"
  depends = ["task.docker-enable"]
}

file.content "docker-repo" {
  destination = "/etc/yum.repos.d/docker.repo"

  content = <<EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
}