Skip to content

Commit c6e5bb5

Browse files
authored
feat: Add seaweedfs role (#15)
1 parent dd6053d commit c6e5bb5

File tree

9 files changed

+195
-0
lines changed

9 files changed

+195
-0
lines changed

roles/seaweedfs/README.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# seaweedfs
2+
3+
Ansible role to install and configure [SeaweedFS](https://github.com/seaweedfs/seaweedfs).
4+
5+
## Requirements
6+
7+
None.
8+
9+
## Dependencies
10+
11+
None.
12+
13+
## Role Variables
14+
15+
Refer to [defaults/main.yml](defaults/main.yml) for a list of variables along with documentation.
16+
17+
## Example Playbook
18+
19+
```yaml
20+
- hosts: all
21+
roles:
22+
- role: hostinger.common.seaweedfs
23+
```
24+
25+
## License
26+
27+
See [LICENSE](../../LICENSE)

roles/seaweedfs/defaults/main.yml

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
seaweedfs_version: 3.67
3+
seaweedfs_url: https://github.com/seaweedfs/seaweedfs/releases/download/{{ seaweedfs_version }}/{{ seaweedfs_os }}_{{ seaweedfs_arch }}.tar.gz
4+
seaweedfs_arch: amd64
5+
seaweedfs_os: linux
6+
seaweedfs_install_dir: /opt/seaweedfs/{{ seaweedfs_version }}
7+
seaweedfs_owner: root
8+
seaweedfs_group: root
9+
seaweedfs_config_dir: /etc/seaweedfs
10+
seaweedfs_service_state: started
11+
seaweedfs_command: server
12+
seaweedfs_args:
13+
- -ip=127.0.0.1
14+
- -volume.max=0
15+
- -volume.fileSizeLimitMB=2048
16+
seaweedfs_s3_config: {}
17+
# identities:
18+
# - name: default
19+
# credentials:
20+
# - accessKey: "example"
21+
# secretKey: "example"
22+
# actions:
23+
# - Admin
24+
# - Read
25+
# - List
26+
# - Tagging
27+
# - Write

roles/seaweedfs/handlers/main.yml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
- name: Reload systemd
3+
ansible.builtin.systemd:
4+
daemon_reload: true
5+
6+
- name: Restart seaweedfs
7+
ansible.builtin.systemd:
8+
name: seaweedfs
9+
state: restarted

roles/seaweedfs/meta/main.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
galaxy_info:
3+
role_name: seaweedfs
4+
author: hostinger
5+
description: Ansible role to install and configure SeaweedFS
6+
license: license (MIT)
7+
min_ansible_version: "2.10"
8+
platforms:
9+
- name: Fedora
10+
versions:
11+
- all
12+
- name: Debian
13+
versions:
14+
- all
15+
- name: Ubuntu
16+
versions:
17+
- all
18+
galaxy_tags:
19+
- seaweedfs
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
- name: Converge
3+
hosts:
4+
- all
5+
6+
roles:
7+
- seaweedfs
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
dependency:
3+
name: galaxy
4+
driver:
5+
name: docker
6+
platforms:
7+
- name: default
8+
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
9+
volumes:
10+
- /sys/fs/cgroup:/sys/fs/cgroup:rw
11+
command: ${MOLECULE_DOCKER_COMMAND:-""}
12+
cgroupns_mode: host
13+
pre_build_image: true
14+
privileged: true
15+
platform: amd64
16+
provisioner:
17+
name: ansible
18+
playbooks:
19+
converge: ${MOLECULE_PLAYBOOK:-converge.yml}

roles/seaweedfs/tasks/main.yml

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
- name: Fail when unsupported architecture
3+
ansible.builtin.fail:
4+
msg: "Unsupported architecture"
5+
when:
6+
- seaweedfs_arch not in ['amd64', 'arm64']
7+
8+
- name: Create directories
9+
ansible.builtin.file:
10+
path: "{{ item }}"
11+
state: directory
12+
owner: "{{ seaweedfs_owner }}"
13+
group: "{{ seaweedfs_group }}"
14+
mode: 0755
15+
with_items:
16+
- "{{ seaweedfs_install_dir }}"
17+
- "{{ seaweedfs_config_dir }}"
18+
19+
- name: Download tarball
20+
ansible.builtin.get_url:
21+
url: "{{ seaweedfs_url }}"
22+
dest: "{{ seaweedfs_install_dir }}/seaweedfs.tar.gz"
23+
mode: 0644
24+
owner: "{{ seaweedfs_owner }}"
25+
group: "{{ seaweedfs_group }}"
26+
timeout: 30
27+
28+
- name: Unarchive tarball
29+
ansible.builtin.unarchive:
30+
src: "{{ seaweedfs_install_dir }}/seaweedfs.tar.gz"
31+
dest: "{{ seaweedfs_install_dir }}"
32+
mode: 0755
33+
creates: "{{ seaweedfs_install_dir }}/weed"
34+
owner: "{{ seaweedfs_owner }}"
35+
group: "{{ seaweedfs_group }}"
36+
remote_src: true
37+
38+
- name: Create symlink to binaries
39+
ansible.builtin.file:
40+
src: "{{ seaweedfs_install_dir }}/{{ item }}"
41+
dest: /usr/bin/{{ item }}
42+
state: link
43+
force: true
44+
owner: "{{ seaweedfs_owner }}"
45+
group: "{{ seaweedfs_group }}"
46+
mode: 0755
47+
with_items:
48+
- weed
49+
50+
- name: Template service file
51+
ansible.builtin.template:
52+
src: seaweedfs.service.j2
53+
dest: /etc/systemd/system/seaweedfs.service
54+
mode: 0644
55+
owner: root
56+
group: root
57+
notify:
58+
- Restart seaweedfs
59+
60+
- name: Template S3 config file
61+
ansible.builtin.template:
62+
src: s3.conf.j2
63+
dest: "{{ seaweedfs_config_dir }}/s3.conf"
64+
mode: 0644
65+
owner: "{{ seaweedfs_owner }}"
66+
group: "{{ seaweedfs_group }}"
67+
notify:
68+
- Restart seaweedfs
69+
70+
- name: Enable and start service
71+
ansible.builtin.service:
72+
name: seaweedfs
73+
enabled: true
74+
state: "{{ seaweedfs_service_state }}"

roles/seaweedfs/templates/s3.conf.j2

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{ seaweedfs_s3_config | default({}) | to_nice_json }}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[Unit]
2+
Description=SeaweedFS
3+
Documentation=https://github.com/seaweedfs/seaweedfs
4+
After=network.target
5+
6+
[Service]
7+
User={{ seaweedfs_owner }}
8+
ExecStart=/usr/bin/weed {{ seaweedfs_command }} {% for arg in seaweedfs_args %}{{ arg }} {% endfor +%}
9+
Restart=on-failure
10+
11+
[Install]
12+
WantedBy=multi-user.target

0 commit comments

Comments
 (0)