This guide deploys GoCD server and agent containers through Ansible-managed Docker Compose.
/opt/gocd compose workspace- name: Deploy GoCD
hosts: gocd
become: true
vars:
gocd_root: /opt/gocd
tasks:
- name: Install Docker on Debian family
ansible.builtin.apt:
update_cache: true
name:
- docker.io
- docker-compose-plugin
state: present
when: ansible_os_family == "Debian"
- name: Install Docker on RHEL family
ansible.builtin.dnf:
name:
- docker
- docker-compose-plugin
state: present
when: ansible_os_family == "RedHat"
- name: Enable Docker service
ansible.builtin.systemd:
name: docker
enabled: true
state: started
- name: Create GoCD root directory
ansible.builtin.file:
path: "{{ gocd_root }}"
state: directory
mode: "0755"
- name: Write Docker Compose file
ansible.builtin.copy:
dest: "{{ gocd_root }}/docker-compose.yml"
mode: "0644"
content: |
services:
server:
image: gocd/gocd-server:latest
restart: unless-stopped
ports:
- "8153:8153"
- "8154:8154"
agent:
image: gocd/gocd-agent:latest
restart: unless-stopped
environment:
GO_SERVER_URL: https://server:8154/go
depends_on:
- server
- name: Start GoCD stack
ansible.builtin.command: docker compose up -d
args:
chdir: "{{ gocd_root }}"
ansible-playbook -i inventory.ini gocd-docker-install.yml