--- # deploy a Docker server with Zookeeper, Solr, 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: Build ZooKeeper links for Solr containers set_fact: zk_links: [] zk_solr: [] - set_fact: zk_links: "{{ zk_links + ['zk'+item+':ZK'+item] }}" zk_solr: "{{ zk_solr + ['$ZK'+item+'_PORT_2181_TCP_ADDR:$ZK'+item+'_PORT_2181_TCP_PORT/solr'] }}" with_sequence: start=1 end={{ num_zk_servers }} - name: Launch ZooKeeper containers become: yes docker_container: name: zk{{ item }} image: jplock/zookeeper with_sequence: start=1 end={{ num_zk_servers }} - name: Get contents of /solr path in ZooKeeper become: yes command: docker exec -t zk1 bin/zkCli.sh get /solr register: zk1_solr changed_when: false - name: Create /solr path in ZooKeeper become: yes command: docker exec -t zk1 bin/zkCli.sh create /solr [] when: zk1_solr.stdout.find('Node does not exist') != -1 - name: Build the lui-solr image become: yes docker_image: name=lui-solr path={{ docker_image_path }} - name: Launch Solr containers become: yes docker_container: name: solr{{ item }} image: lui-solr tty: yes published_ports: "{{ 8983+item|int-1 }}:8983" links: "{{ zk_links }}" command: bash -c '/opt/solr/bin/solr start -f -z {{ zk_solr|join(",") }}' with_sequence: start=1 end={{ num_solr_servers }} - name: Wait for ZooKeeper to see Solr become: yes command: docker exec -t zk1 bin/zkCli.sh get /solr/live_nodes register: solr_nodes until: solr_nodes.stdout.find('numChildren = {{ num_solr_servers }}') != -1 retries: 3 delay: 2 changed_when: false - name: Check lui collection become: yes command: docker exec -t zk1 bin/zkCli.sh ls /solr/collections register: lui_collection changed_when: false - name: Create lui collection become: yes command: docker exec -t solr1 bin/solr create -c lui -d /opt/solr/lui-solr -shards 2 -replicationFactor 2 when: (lui_collection.stdout_lines|last).find('lui') == -1