/
/
/
1---
2# Runner Services - Tandoor Recipe Management
3
4- name: Create Tandoor configuration directories
5 file:
6 path: "{{ item }}"
7 state: directory
8 owner: "{{ runner_user }}"
9 group: "users"
10 mode: '2775' # setgid bit for inheritance, group writable (umask 002)
11 loop:
12 - "{{ tandoor_config_dir }}"
13 - "{{ tandoor_data_dir }}"
14 - "{{ tandoor_media_dir }}"
15 - "{{ tandoor_static_dir }}"
16 - "{{ tandoor_data_dir }}/backup"
17
18- name: Generate Tandoor environment file
19 template:
20 src: tandoor.env.j2
21 dest: "{{ tandoor_config_dir }}/tandoor.env"
22 owner: "{{ runner_user }}"
23 group: "{{ runner_group }}"
24 mode: '0664'
25 notify: restart tandoor
26
27- name: Create Tandoor Docker Compose file
28 template:
29 src: tandoor-compose.yml.j2
30 dest: "{{ tandoor_config_dir }}/docker-compose.yml"
31 owner: "{{ runner_user }}"
32 group: "{{ runner_group }}"
33 mode: '0664'
34 notify: restart tandoor
35
36
37- name: Check if Tandoor is already running
38 community.docker.docker_compose_v2:
39 project_src: "{{ tandoor_config_dir }}"
40 state: present
41 restarted: false
42 register: tandoor_running
43 changed_when: false
44 failed_when: false
45
46- name: Start Tandoor service
47 community.docker.docker_compose_v2:
48 project_src: "{{ tandoor_config_dir }}"
49 state: present
50 register: tandoor_start_result
51
52- name: Wait for Tandoor to be healthy
53 uri:
54 url: "http://localhost:{{ tandoor_port }}/accounts/login/"
55 method: GET
56 status_code: 200
57 register: tandoor_health
58 until: tandoor_health.status == 200
59 retries: 30
60 delay: 10
61 when: tandoor_start_result is changed
62
63
64
65- name: Check if initial setup is needed
66 uri:
67 url: "http://localhost:{{ tandoor_port }}/setup/"
68 method: GET
69 status_code: [200, 302, 404]
70 register: tandoor_setup_check
71 failed_when: false
72
73- name: Display Tandoor deployment summary
74 debug:
75 msg: |
76 Tandoor Recipe Management Deployment:
77 - Status: {{ 'Started' if tandoor_start_result is changed else 'Already running' }}
78 - Web UI: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
79 - Admin Interface: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}/admin/
80 - API: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}/api/
81 - Configuration: {{ tandoor_config_dir }}
82 - Database: PostgreSQL ({{ tandoor_data_dir }}/db)
83 - Media Storage: {{ tandoor_media_dir }}
84 - Static Files: {{ tandoor_static_dir }}
85 - Database Engine: {{ tandoor_db_engine }}
86
87 Features:
88 - Recipe management and organization
89 - Meal planning and shopping lists
90 - Recipe sharing and import/export
91 - Nutrition tracking
92 - Shopping list generation
93 - Recipe scaling and conversions
94
95 Management Commands:
96 - tandoor-logs.sh - View service logs
97 - tandoor-restart.sh - Restart service
98 - tandoor-status.sh - Check service status
99 - tandoor-backup.sh - Backup database
100 - tandoor-manage.sh - Django management commands
101
102 Initial Setup:
103 1. Visit http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
104 2. Create your first user account
105 3. Configure recipe sources and preferences
106 4. Import your existing recipes
107
108 API Access:
109 - REST API available at /api/
110 - Recipe import/export endpoints
111 - Shopping list integration
112 - Third-party app integration ready
113