This playbook installs Frappe Bench natively on the host system along with all required dependencies.
- name: Configure Frappe Bench host
hosts: bench
become: true
vars:
bench_user: frappe
bench_group: frappe
bench_root: /home/frappe/frappe-bench
frappe_branch: version-15
python_version: "3.10"
tasks:
- name: Create Frappe user and group
ansible.builtin.user:
name: "{{ bench_user }}"
group: "{{ bench_group }}"
shell: /bin/bash
create_home: true
system: false
- name: Install system dependencies
ansible.builtin.package:
name:
- git
- build-essential
- python{{ python_version }}
- python{{ python_version }}-dev
- python{{ python_version }}-venv
- python3-pip
- nodejs
- npm
- redis-server
- mariadb-server
- libmysqlclient-dev
- libffi-dev
- libssl-dev
state: present
- name: Install yarn globally
community.general.npm:
name: yarn
global: true
state: present
- name: Install frappe-bench CLI
ansible.builtin.pip:
name: frappe-bench
executable: pip3
state: present
- name: Initialize Frappe Bench directory
ansible.builtin.command: >
bench init {{ bench_root }} --frappe-branch {{ frappe_branch }}
become: true
become_user: "{{ bench_user }}"
args:
creates: "{{ bench_root }}"
- name: Configure MariaDB for Frappe
ansible.builtin.template:
dest: /etc/mysql/mariadb.conf.d/frappe.cnf
mode: "0644"
content: |
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
- name: Restart MariaDB service
ansible.builtin.service:
name: mariadb
state: restarted
- name: Start Redis service
ansible.builtin.service:
name: redis-server
state: started
enabled: true
- name: Verify Bench installation
ansible.builtin.command: bench --version
become: true
become_user: "{{ bench_user }}"
register: bench_version
changed_when: false
- name: Show Bench version
ansible.builtin.debug:
var: bench_version.stdout_lines
community.general collection for npm module support.bench new-site and app installation tasks for full provisioning.