Towards Docker deployment.
[lui-solr.git] / docker / docker-deploy.yml
diff --git a/docker/docker-deploy.yml b/docker/docker-deploy.yml
new file mode 100644 (file)
index 0000000..628095a
--- /dev/null
@@ -0,0 +1,98 @@
+---
+# deploy a Docker server with 1 Zookeeper, 3 Solr, 1 HAProxy
+- hosts: all
+
+  tasks:
+    - name: Install prereqs from apt
+      become: yes
+      apt: name={{ item }}
+      with_items:
+        - apt-transport-https
+        - ca-certificates
+        - python-virtualenv
+        - python-pip
+
+    - name: Install prereqs from pip
+      become: yes
+      pip: name={{ item }}
+      with_items:
+        - docker-py
+
+    - name: Install apt key for Docker
+      become: yes
+      apt_key: id=58118E89F3A912897C070ADBF76221572C52609D keyserver=hkp://p80.pool.sks-keyservers.net:80
+
+    - name: Install apt repository for Docker
+      become: yes
+      apt_repository: repo="deb https://apt.dockerproject.org/repo debian-jessie main"
+
+    - name: Create docker group
+      become: yes
+      group: name=docker
+
+    - name: Add users to docker group
+      become: yes
+      user: name={{ item }} groups=docker
+      with_items: "{{ docker_users }}"
+
+    - name: Install Docker Engine
+      become: yes
+      apt: name=docker-engine
+
+    - name: Start up Docker
+      become: yes
+      service: name=docker enabled=yes state=started
+
+    - name: Check for luinet network
+      command: docker network ls -f name=luinet -q
+      register: luinet
+
+    - name: Create luinet network
+      command: docker network create luinet
+      when: luinet.stdout == ""
+
+    - name: Launch ZooKeeper
+      docker_container: name=zk1 image=jplock/zookeeper
+
+    - name: Get networks for ZooKeeper
+      shell: "docker inspect --format={% raw %}'{{json .NetworkSettings.Networks}}'{% endraw %} zk1"
+      register: zk1_networks
+
+    - name: Attach ZooKeeper to luinet network
+      command: docker network connect luinet zk1
+      when: (zk1_networks.stdout|from_json).luinet is not defined
+
+    - name: Detach ZooKeeper from bridge network
+      command: docker network disconnect bridge zk1
+      when: (zk1_networks.stdout|from_json).bridge is defined
+
+- hosts: dev
+  roles:
+    - dev
+
+- hosts: prod
+  roles:
+    - prod
+
+- hosts: all
+
+  tasks:
+    - name: Get networks for Solr
+      shell: "docker inspect --format={% raw %}'{{json .NetworkSettings.Networks}}'{% endraw %} solr1"
+      register: solr1_networks
+
+    - name: Attach Solr to luinet network
+      command: docker network connect luinet solr1
+      when: (solr1_networks.stdout|from_json).luinet is not defined
+
+    - name: Detach Solr from bridge network
+      command: docker network disconnect bridge solr1
+      when: (solr1_networks.stdout|from_json).bridge is defined
+
+    # - name: Create Solr container
+    #   docker_container:
+    #     name: solr1
+    #     tty: yes
+    #     published_ports: 8983:8983
+    #     #volumes: /vagrant/conf/solr/solr-home:/opt/solr/server/solr
+    #     command: bash -c '/opt/solr/bin/solr start -f -z zk1:2181'