628095ac09718e836d23c719221de8f46dc5ef6c
[lui-solr.git] / docker / docker-deploy.yml
1 ---
2 # deploy a Docker server with 1 Zookeeper, 3 Solr, 1 HAProxy
3 - hosts: all
4
5   tasks:
6     - name: Install prereqs from apt
7       become: yes
8       apt: name={{ item }}
9       with_items:
10         - apt-transport-https
11         - ca-certificates
12         - python-virtualenv
13         - python-pip
14
15     - name: Install prereqs from pip
16       become: yes
17       pip: name={{ item }}
18       with_items:
19         - docker-py
20
21     - name: Install apt key for Docker
22       become: yes
23       apt_key: id=58118E89F3A912897C070ADBF76221572C52609D keyserver=hkp://p80.pool.sks-keyservers.net:80
24
25     - name: Install apt repository for Docker
26       become: yes
27       apt_repository: repo="deb https://apt.dockerproject.org/repo debian-jessie main"
28
29     - name: Create docker group
30       become: yes
31       group: name=docker
32
33     - name: Add users to docker group
34       become: yes
35       user: name={{ item }} groups=docker
36       with_items: "{{ docker_users }}"
37
38     - name: Install Docker Engine
39       become: yes
40       apt: name=docker-engine
41
42     - name: Start up Docker
43       become: yes
44       service: name=docker enabled=yes state=started
45
46     - name: Check for luinet network
47       command: docker network ls -f name=luinet -q
48       register: luinet
49
50     - name: Create luinet network
51       command: docker network create luinet
52       when: luinet.stdout == ""
53
54     - name: Launch ZooKeeper
55       docker_container: name=zk1 image=jplock/zookeeper
56
57     - name: Get networks for ZooKeeper
58       shell: "docker inspect --format={% raw %}'{{json .NetworkSettings.Networks}}'{% endraw %} zk1"
59       register: zk1_networks
60
61     - name: Attach ZooKeeper to luinet network
62       command: docker network connect luinet zk1
63       when: (zk1_networks.stdout|from_json).luinet is not defined
64
65     - name: Detach ZooKeeper from bridge network
66       command: docker network disconnect bridge zk1
67       when: (zk1_networks.stdout|from_json).bridge is defined
68
69 - hosts: dev
70   roles:
71     - dev
72
73 - hosts: prod
74   roles:
75     - prod
76
77 - hosts: all
78
79   tasks:
80     - name: Get networks for Solr
81       shell: "docker inspect --format={% raw %}'{{json .NetworkSettings.Networks}}'{% endraw %} solr1"
82       register: solr1_networks
83
84     - name: Attach Solr to luinet network
85       command: docker network connect luinet solr1
86       when: (solr1_networks.stdout|from_json).luinet is not defined
87
88     - name: Detach Solr from bridge network
89       command: docker network disconnect bridge solr1
90       when: (solr1_networks.stdout|from_json).bridge is defined
91
92     # - name: Create Solr container
93     #   docker_container:
94     #     name: solr1
95     #     tty: yes
96     #     published_ports: 8983:8983
97     #     #volumes: /vagrant/conf/solr/solr-home:/opt/solr/server/solr
98     #     command: bash -c '/opt/solr/bin/solr start -f -z zk1:2181'