ca0d4ab3590b151877c4818a0c926dcbdf32517d
[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: Launch ZooKeeper
47       become: yes
48       docker_container: name=zk1 image=jplock/zookeeper
49
50     - name: Get contents of /solr path in ZooKeeper
51       become: yes
52       command: docker exec -t zk1 bin/zkCli.sh get /solr
53       register: zk1_solr
54
55     - name: Create /solr path in ZooKeeper
56       become: yes
57       command: docker exec -t zk1 bin/zkCli.sh create /solr []
58       when: zk1_solr.stdout.find('Node does not exist') != -1
59
60 # Separate paths for setting up Solr nodes
61
62 - hosts: dev
63   roles:
64     - dev
65
66 - hosts: prod
67   roles:
68     - prod
69
70 # Back to everyone
71
72 - hosts: all
73   tasks:
74     - name: Launch Solr1
75       become: yes
76       docker_container:
77         name: solr1
78         image: lui-solr
79         tty: yes
80         published_ports: 8983:8983
81         links: zk1:ZK1
82         command: bash -c '/opt/solr/bin/solr start -f -z $ZK1_PORT_2181_TCP_ADDR:$ZK1_PORT_2181_TCP_PORT/solr'
83
84     - name: Launch Solr2
85       become: yes
86       docker_container:
87         name: solr2
88         image: lui-solr
89         tty: yes
90         published_ports: 8984:8983
91         links: zk1:ZK1
92         command: bash -c '/opt/solr/bin/solr start -f -z $ZK1_PORT_2181_TCP_ADDR:$ZK1_PORT_2181_TCP_PORT/solr'
93
94     ### HERE I AM ###
95     # wait for ZooKeeper to see all the solr nodes before proceeding
96     # look at Ansible until module
97
98     - name: Check lui collection
99       become: yes
100       command: docker exec -t zk1 bin/zkCli.sh ls /solr/collections
101       register: lui_collection
102
103     - name: Create lui collection
104       become: yes
105       command: docker exec -t solr1 bin/solr create -c lui -d /opt/solr/lui-solr -shards 2
106       when: (lui_collection.stdout_lines|last).find('lui') == -1
107