This playbook deploys CloudSlang in a Docker container using Ansible. Provides isolated Java runtime for flow orchestration.
---
- name: Deploy CloudSlang in Docker
hosts: cloudslang_docker
become: true
vars:
cloudslang_workspace: /opt/cloudslang
cloudslang_version: "2.0.5"
tasks:
- name: Ensure Docker is installed
package:
name: docker.io
state: present
- name: Enable and start Docker service
systemd:
name: docker
state: started
enabled: true
- name: Create CloudSlang workspace directory
file:
path: "{{ cloudslang_workspace }}"
state: directory
mode: '0755'
- name: Create Docker Compose file for CloudSlang
copy:
dest: "{{ cloudslang_workspace }}/docker-compose.yml"
content: |
version: '3.8'
services:
cloudslang:
image: eclipse-temurin:17-jre
container_name: cloudslang-cli
working_dir: /cloudslang
volumes:
- ./flows:/cloudslang/flows
- ./content:/cloudslang/content
entrypoint: ["bash", "-c", "echo 'CloudSlang CLI container ready'"]
networks:
- cloudslang-network
restart: unless-stopped
networks:
cloudslang-network:
driver: bridge
mode: '0644'
- name: Create flows and content directories
file:
path: "{{ cloudslang_workspace }}/{{ item }}"
state: directory
mode: '0755'
loop:
- flows
- content
- name: Deploy CloudSlang container
community.docker.docker_compose_v2:
project_src: "{{ cloudslang_workspace }}"
state: present
- name: Verify CloudSlang container is running
command: docker ps --filter name=cloudslang-cli --format "{{.Status}}"
register: container_status
changed_when: false
- name: Display CloudSlang container status
debug:
msg: "CloudSlang container status: {{ container_status.stdout }}"
ansible-playbook -i inventory.ini cloudslang-docker.yml