/
/
/
Ansible role that deployes services on my runner machine
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 check_mode: no
52
53- name: Wait for Tandoor to be healthy
54 uri:
55 url: "http://localhost:{{ tandoor_port }}/accounts/login/"
56 method: GET
57 status_code: 200
58 register: tandoor_health
59 until: tandoor_health.status == 200
60 retries: 30
61 delay: 10
62 when: tandoor_start_result is changed
63 check_mode: no
64
65
66
67- name: Check if initial setup is needed
68 uri:
69 url: "http://localhost:{{ tandoor_port }}/setup/"
70 method: GET
71 status_code: [200, 302, 404]
72 register: tandoor_setup_check
73 failed_when: false
74 check_mode: no
75
76- name: Display Tandoor deployment summary
77 debug:
78 msg: |
79 Tandoor Recipe Management Deployment:
80 - Status: {{ 'Started' if tandoor_start_result is changed else 'Already running' }}
81 - Web UI: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
82 - Admin Interface: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}/admin/
83 - API: http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}/api/
84 - Configuration: {{ tandoor_config_dir }}
85 - Database: PostgreSQL ({{ tandoor_data_dir }}/db)
86 - Media Storage: {{ tandoor_media_dir }}
87 - Static Files: {{ tandoor_static_dir }}
88 - Database Engine: {{ tandoor_db_engine }}
89
90 Features:
91 - Recipe management and organization
92 - Meal planning and shopping lists
93 - Recipe sharing and import/export
94 - Nutrition tracking
95 - Shopping list generation
96 - Recipe scaling and conversions
97
98 Management Commands:
99 - tandoor-logs.sh - View service logs
100 - tandoor-restart.sh - Restart service
101 - tandoor-status.sh - Check service status
102 - tandoor-backup.sh - Backup database
103 - tandoor-manage.sh - Django management commands
104
105 Initial Setup:
106 1. Visit http://{{ ansible_default_ipv4.address }}:{{ tandoor_port }}
107 2. Create your first user account
108 3. Configure recipe sources and preferences
109 4. Import your existing recipes
110
111 API Access:
112 - REST API available at /api/
113 - Recipe import/export endpoints
114 - Shopping list integration
115 - Third-party app integration ready
116