Update openclaw role for Margaret Docker deployment

- Updated defaults: custom image, container name, config paths
- Updated compose template: proper CMD, HOME env, user mapping
- Updated tasks: image existence check, warning if not found
- Added handlers: restart on compose changes
- Image must be pre-built on Bart (16GB RAM) and transferred
This commit is contained in:
2026-02-02 21:55:08 -06:00
parent 138d16b6e6
commit c276c2a090
4 changed files with 65 additions and 28 deletions
+9 -4
View File
@@ -1,5 +1,10 @@
---
openclaw_compose_dir: "{{ docker_compose_base }}/automation"
openclaw_data_dir: /data/openclaw
openclaw_image: "ghcr.io/openclaw/openclaw:latest"
openclaw_host: "openclaw.{{ domain }}"
openclaw_compose_dir: "{{ docker_compose_base }}/margaret"
openclaw_config_dir: /home/glyptic/.openclaw
openclaw_image: margaret-openclaw:latest
openclaw_container_name: margaret
openclaw_gateway_port: 18790
openclaw_matrix_user: margaret
openclaw_anthropic_api_key: "{{ vault_anthropic_api_key }}"
openclaw_user_uid: "1000"
openclaw_user_gid: "1000"
+6
View File
@@ -0,0 +1,6 @@
---
- name: Restart Margaret
community.docker.docker_compose_v2:
project_src: "{{ openclaw_compose_dir }}"
state: restarted
tags: [openclaw, margaret]
+35 -12
View File
@@ -1,28 +1,51 @@
---
- name: Create OpenClaw directories
- name: Create OpenClaw compose directory
ansible.builtin.file:
path: "{{ item }}"
path: "{{ openclaw_compose_dir }}"
state: directory
owner: glyptic
group: docker
mode: "0755"
loop:
- "{{ openclaw_data_dir }}"
tags: [openclaw, automation]
tags: [openclaw, margaret]
- name: Deploy OpenClaw compose file
- name: Ensure OpenClaw config directory exists
ansible.builtin.file:
path: "{{ openclaw_config_dir }}"
state: directory
owner: "{{ openclaw_user_uid }}"
group: "{{ openclaw_user_gid }}"
mode: "0755"
tags: [openclaw, margaret]
- name: Deploy OpenClaw (Margaret) compose file
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ openclaw_compose_dir }}/docker-compose.openclaw.yml"
dest: "{{ openclaw_compose_dir }}/docker-compose.yml"
owner: glyptic
group: docker
mode: "0644"
tags: [openclaw, automation]
notify: Restart Margaret
tags: [openclaw, margaret]
- name: Start OpenClaw
- name: Check if Margaret image exists
community.docker.docker_image_info:
name: "{{ openclaw_image }}"
register: margaret_image
tags: [openclaw, margaret]
- name: Warn if Margaret image not found
ansible.builtin.debug:
msg: >
Margaret image '{{ openclaw_image }}' not found locally.
Build on Bart (192.168.86.181) and transfer:
docker save {{ openclaw_image }} | gzip > /tmp/margaret.tar.gz
# Transfer via relay and load on Peggy
when: margaret_image.images | length == 0
tags: [openclaw, margaret]
- name: Start Margaret container
community.docker.docker_compose_v2:
project_src: "{{ openclaw_compose_dir }}"
files:
- docker-compose.openclaw.yml
state: present
tags: [openclaw, automation]
when: margaret_image.images | length > 0
tags: [openclaw, margaret]
+15 -12
View File
@@ -1,21 +1,24 @@
services:
openclaw:
{{ openclaw_container_name }}:
image: {{ openclaw_image }}
container_name: openclaw
container_name: {{ openclaw_container_name }}
restart: unless-stopped
environment:
TZ: {{ timezone }}
command:
- node
- /usr/local/lib/node_modules/openclaw/dist/index.js
- gateway
- --allow-unconfigured
volumes:
- {{ openclaw_data_dir }}:/data
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: "true"
traefik.http.routers.openclaw.rule: "Host(`{{ openclaw_host }}`)"
traefik.http.routers.openclaw.entrypoints: websecure
traefik.http.routers.openclaw.tls.certresolver: letsencrypt
traefik.http.services.openclaw.loadbalancer.server.port: "3000"
- {{ openclaw_config_dir }}:/home/glyptic/.openclaw
networks:
- {{ docker_network_name }}
labels:
traefik.enable: "false"
environment:
NODE_ENV: production
HOME: /home/glyptic
ANTHROPIC_API_KEY: {{ openclaw_anthropic_api_key }}
user: "{{ openclaw_user_uid }}:{{ openclaw_user_gid }}"
networks:
{{ docker_network_name }}: