--- - name: Create Selenoid directory ansible.builtin.file: path: "{{ selenoid_dir }}" state: directory mode: "0755" - name: Create logs directory ansible.builtin.file: path: "{{ selenoid_dir }}/{{ item }}" state: directory mode: "0777" loop: - logs - name: Render browsers.json ansible.builtin.template: src: browsers.json.j2 dest: "{{ selenoid_dir }}/browsers.json" mode: "0644" - name: Render docker compose for Selenoid ansible.builtin.template: src: docker-compose.selenoid.yml.j2 dest: "{{ selenoid_dir }}/{{ selenoid_compose_file }}" mode: "0644" - name: Ensure default chrome version is in the configured versions list ansible.builtin.assert: that: - (selenoid_chrome_versions | length) >= 2 - (selenoid_firefox_versions | length) >= 2 fail_msg: "Invalid Selenoid config: provide at least 2 chrome and 2 firefox versions" - name: Check shared Docker network for grid stack ansible.builtin.command: cmd: docker network inspect {{ selenoid_container_network }} register: shared_grid_network changed_when: false failed_when: false - name: Create shared Docker network for grid stack ansible.builtin.command: cmd: docker network create {{ selenoid_container_network }} when: shared_grid_network.rc != 0 - name: Stop previous Selenoid stack and remove orphans ansible.builtin.command: cmd: docker compose -f {{ selenoid_compose_file }} down --remove-orphans chdir: "{{ selenoid_dir }}" changed_when: false - name: Pull required Chrome images for Selenoid ansible.builtin.command: cmd: "docker pull selenoid/vnc:chrome_{{ item }}" loop: "{{ selenoid_chrome_versions }}" changed_when: false - name: Pull required Firefox images for Selenoid ansible.builtin.command: cmd: "docker pull selenoid/vnc:firefox_{{ item }}" loop: "{{ selenoid_firefox_versions }}" changed_when: false - name: Start Selenoid stack ansible.builtin.command: cmd: docker compose -f {{ selenoid_compose_file }} up -d chdir: "{{ selenoid_dir }}"