Skip to content

Instantly share code, notes, and snippets.

@sebest
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebest/2791b1ba6cba2d5c37b1 to your computer and use it in GitHub Desktop.
Save sebest/2791b1ba6cba2d5c37b1 to your computer and use it in GitHub Desktop.
docker-repo:
pkgrepo.managed:
- humanname: Docker
- name: deb https://get.docker.com/ubuntu docker main
- dist: docker
- file: /etc/apt/sources.list.d/docker.list
- keyid: 36A1D7869245C8950F966E92D8576A8BA88D21E9
- keyserver: keyserver.ubuntu.com
- require_in:
- pkg: docker-pkg
docker-pkg:
pkg.installed:
- name: lxc-docker
datadog-agent-service:
service:
- name: docker
- running
- enable: True
- watch:
- pkg: docker-pkg
python-pip:
pkg:
- installed
docker-py:
pip.installed:
- require:
- pkg: python-pip
{% set name = 'myapi' %}
{% set image = 'mycorp-api' %}
{% set owner = 'mycorp' %}
{% set env = grains['my_env'] %}
{% set tag = pillar['myapi']['version'] %}
{% set hostport = pillar['myapi']['host_port'] %}
{% set hostip = grains['ip_interfaces']['eth0'][0] %}
{% set mongo_uri = pillar['myapi']['mongo_uri'] %}
{% set loggly_token = pillar['loggly']['token'] %}
include:
- docker
{{ name }}-image:
docker.pulled:
- name: {{ owner }}/{{ image }}
- tag: {{ tag }}
- require:
- pkg: docker-pkg
- pip: docker-py
{{ name }}-stop-if-old:
module.run:
- name: docker.stop
- container: {{ name }}-{{ env }}
- onlyif: docker ps | grep {{ name }}-{{ env }} && docker inspect --format "{% raw %}{{ .Config.Image }}{% endraw %}" {{ name }}-{{ env }} | grep -v "{{ owner }}/{{ image }}:{{ tag }}"
- require:
- docker: {{ name }}-image
{{ name }}-remove-if-old:
module.run:
- name: docker.remove_container
- container: {{ name }}-{{ env }}
- onlyif: docker ps -a | grep {{ name }}-{{ env }} && docker inspect --format "{% raw %}{{ .Config.Image }}{% endraw %}" {{ name }}-{{ env }} | grep -v "{{ owner }}/{{ image }}:{{ tag }}"
- require:
- module: {{ name }}-stop-if-old
{{ name }}-container:
docker.installed:
- name: {{ name }}-{{ env }}
- hostname: {{ name }}-{{ env }}
- image: {{ owner }}/{{ image }}:{{ tag }}
- ports:
- "80/tcp"
- environment:
- MONGO_URI: {{ mongo_uri }}
- LOGGLY_TOKEN: {{ loggly_token }}
- LOGGLY_TAGS: "docker {{ name }} {{ grains['pxl_env'] }}"
- require_in: {{ name }}
- require:
- docker: {{ name }}-image
{{ name }}:
docker.running:
- image: {{ owner }}/{{ image }}:{{ tag }}
- container: {{ name }}-{{ env }}
- port_bindings:
"80/tcp":
HostIp: "{{ hostip }}"
HostPort: "{{ hostport }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment