diff --git a/README.md b/README.md index 63dcd80..a491dd2 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,7 @@ None Role Variables -------------- -``` -- vars: - docker_rc: no # no by default. Set to yes to install the latest Docker version (release candidates and such) -``` +None Dependencies ------------ @@ -25,18 +22,27 @@ None Example Playbook ---------------- -Install vanilla Docker +Install Docker ``` - hosts: servers roles: - mongrelion.docker ``` -Install testing release of Docker +Testing +------- +For development, we use Vagrant. +Bring the VM up with + +``` +$ vagrant up +``` + +This will automatically run the playbooks against the virtual machine once it's up. +After making changes to any playbook, you can test the provisioning with + ``` -- hosts: servers - roles: - - { role: mongrelion.docker, docker_rc: yes } +$ vagrant provision ``` License diff --git a/Vagrantfile b/Vagrantfile index 1e14d4c..f6cca82 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,12 +2,24 @@ # vi: set ft=ruby : Vagrant.configure(2) do |config| - config.vm.box = "centos/7" config.vm.provider "virtualbox" do |vb| vb.memory = "512" end - config.vm.provision "ansible" do |ansible| - ansible.playbook = "tests/vagrant.yml" + config.vm.define "centos" do |machine| + machine.vm.box = "minimal/centos7" + machine.vm.provision "shell", inline: "yum update -y" + machine.vm.provision "ansible" do |ansible| + ansible.playbook = "tests/vagrant.yml" + end end + + config.vm.define "debian" do |machine| + machine.vm.box = "minimal/jessie64" + machine.vm.provision "shell", inline: "apt-get update && apt-get install -y python" + machine.vm.provision "ansible" do |ansible| + ansible.playbook = "tests/vagrant.yml" + end + end + end diff --git a/defaults/main.yml b/defaults/main.yml index 3d42aff..c612b29 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,4 +1,4 @@ --- -docker_rc: no -docker_clusterstore: no consul_ip: 127.0.0.1 +docker_clusterstore: no +dockerpy: no diff --git a/files/docker-testing.repo b/files/docker-testing.repo deleted file mode 100644 index f9bd388..0000000 --- a/files/docker-testing.repo +++ /dev/null @@ -1,6 +0,0 @@ -[docker-testing-repo] -name=Docker testing Repository -baseurl=https://yum.dockerproject.org/repo/testing/centos/7 -enabled=1 -gpgcheck=1 -gpgkey=https://yum.dockerproject.org/gpg diff --git a/files/docker.apt.repo b/files/docker.apt.repo new file mode 100644 index 0000000..37bccd1 --- /dev/null +++ b/files/docker.apt.repo @@ -0,0 +1 @@ +deb https://apt.dockerproject.org/repo debian-jessie main diff --git a/files/docker.service b/files/docker.service index e806792..0f938ef 100644 --- a/files/docker.service +++ b/files/docker.service @@ -1,15 +1,14 @@ [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com -After=network.target docker.socket -Requires=docker.socket +After=network.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker -ExecStart=/usr/bin/docker daemon -H fd:// +ExecStart=/usr/bin/docker daemon -H unix:///var/run/docker.sock ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 diff --git a/files/docker.repo b/files/docker.yum.repo similarity index 100% rename from files/docker.repo rename to files/docker.yum.repo diff --git a/meta/main.yml b/meta/main.yml index 23f7c66..b8d1ecc 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -8,6 +8,9 @@ galaxy_info: - name: EL versions: - 7 + - name: Debian + versions: + - jessie galaxy_tags: - docker - swarm diff --git a/tasks/main.yml b/tasks/main.yml index a00824c..2fcf104 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,25 +1,12 @@ --- -- name: ensure repo is present - copy: - src: docker.repo - dest: /etc/yum.repos.d/docker.repo - when: not docker_rc - -- name: ensure testing repo is present - copy: - src: docker-testing.repo - dest: /etc/yum.repos.d/docker-testing.repo - when: docker_rc - -- name: ensure docker is installed - yum: - name: docker-engine - state: present +- include: "os/{{ ansible_os_family }}.yml" - name: ensure config folder is present - file: - path: /etc/docker - state: directory + file: path=/etc/docker state=directory + +- name: ensure docker-py module is installed + pip: name=docker-py version=1.9.0 + when: dockerpy - name: ensure daemon config file is present template: @@ -39,17 +26,7 @@ - meta: flush_handlers - name: ensure starts on system boot - service: - name: docker - enabled: yes + service: name=docker enabled=yes -# I don't want vagrant -# - name: ensure vagrant user can run docker commands -# user: -# name: vagrant -# groups: docker -# append: yes -- name: ensure that docker group is available - group: - name: docker - state: present +- name: ensure vagrant user can run docker commands + user: name=vagrant groups=docker append=yes diff --git a/tasks/os/Debian.yml b/tasks/os/Debian.yml new file mode 100644 index 0000000..dc108d1 --- /dev/null +++ b/tasks/os/Debian.yml @@ -0,0 +1,19 @@ +--- +- name: ensure docker dependencies are installed + apt: name={{ item }} state=present + with_items: + - apt-transport-https + - ca-certificates + +- name: ensure Docker GPG key is present + apt_key: id=58118E89F3A912897C070ADBF76221572C52609D keyserver=hkp://p80.pool.sks-keyservers.net:80 + +- name: ensure repo is present + copy: src=files/docker.apt.repo dest=/etc/apt/sources.list.d/docker.list + register: repofile + +- name: ensure apt cache is updated + apt: update_cache=yes + +- name: ensure docker is installed + apt: name=docker-engine state=present diff --git a/tasks/os/RedHat.yml b/tasks/os/RedHat.yml new file mode 100644 index 0000000..5e49333 --- /dev/null +++ b/tasks/os/RedHat.yml @@ -0,0 +1,6 @@ +--- +- name: ensure repo is present + copy: src=files/docker.yum.repo dest=/etc/yum.repos.d/docker.repo + +- name: ensure docker is installed + yum: name=docker-engine state=present