mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-16 17:20:33 +00:00
116 lines
4.1 KiB
YAML
116 lines
4.1 KiB
YAML
---
|
|
- name: Prepare for RustFS installation
|
|
hosts: rustfs
|
|
become: yes
|
|
vars:
|
|
ansible_python_interpreter: /usr/bin/python3
|
|
install_script_url: "https://rustfs.com/install_rustfs.sh"
|
|
docker_compose: "/opt/rustfs/docker-compose"
|
|
remote_user: root
|
|
|
|
tasks:
|
|
- name: Install docker
|
|
tags: docker_install
|
|
shell: |
|
|
apt-get remove -y docker docker.io containerd runc || true
|
|
apt-get update -y
|
|
apt-get install -y ca-certificates curl gnupg lsb-release
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
|
|
chmod a+r /etc/apt/keyrings/docker.gpg
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
|
|
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
apt-get update -y
|
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
become: yes
|
|
register: docker_installation_result
|
|
changed_when: false
|
|
when: ansible_facts['distribution'] == "Ubuntu"
|
|
|
|
- name: Installation check
|
|
debug:
|
|
var: docker_installation_result.stdout
|
|
when: ansible_facts['distribution'] == "Ubuntu"
|
|
|
|
- name: Create docker compose dir
|
|
file:
|
|
path: "{{ docker_compose }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Prepare docker compose file
|
|
copy:
|
|
content: |
|
|
services:
|
|
rustfs:
|
|
image: rustfs/rustfs:latest
|
|
container_name: rustfs
|
|
hostname: rustfs
|
|
network_mode: host
|
|
environment:
|
|
# Use service names and correct disk indexing (1..4 to match mounted paths)
|
|
- RUSTFS_VOLUMES=http://rustfs-node{1...4}:9000/data/rustfs{1...4}
|
|
- RUSTFS_ADDRESS=0.0.0.0:9000
|
|
- RUSTFS_CONSOLE_ENABLE=true
|
|
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
|
|
- RUSTFS_EXTERNAL_ADDRESS=0.0.0.0:9000 # Same as internal since no port mapping
|
|
- RUSTFS_ACCESS_KEY=rustfsadmin
|
|
- RUSTFS_SECRET_KEY=rustfsadmin
|
|
- RUSTFS_CMD=rustfs
|
|
command: ["sh", "-c", "sleep 3 && rustfs"]
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"curl -f http://127.0.0.1:9000/health && curl -f http://127.0.0.1:9001/health || exit 1"
|
|
]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
ports:
|
|
- "9000:9000" # API endpoint
|
|
- "9001:9001" # Console
|
|
volumes:
|
|
- rustfs-data1:/data/rustfs1
|
|
- rustfs-data2:/data/rustfs2
|
|
- rustfs-data3:/data/rustfs3
|
|
- rustfs-data4:/data/rustfs4
|
|
extra_hosts:
|
|
- "rustfs-node1:172.20.92.202"
|
|
- "rustfs-node2:172.20.92.201"
|
|
- "rustfs-node3:172.20.92.200"
|
|
- "rustfs-node4:172.20.92.199"
|
|
|
|
volumes:
|
|
rustfs-data1:
|
|
rustfs-data2:
|
|
rustfs-data3:
|
|
rustfs-data4:
|
|
|
|
dest: "{{ docker_compose }}/docker-compose.yml"
|
|
mode: '0644'
|
|
|
|
- name: Install rustfs using docker compose
|
|
tags: rustfs_install
|
|
command: docker compose -f "{{ docker_compose}}/docker-compose.yml" up -d
|
|
args:
|
|
chdir: "{{ docker_compose }}"
|
|
|
|
- name: Get docker compose output
|
|
command: docker compose ps
|
|
args:
|
|
chdir: "{{ docker_compose }}"
|
|
register: docker_compose_output
|
|
|
|
- name: Check the docker compose installation output
|
|
debug:
|
|
msg: "{{ docker_compose_output.stdout }}"
|
|
|
|
- name: Uninstall rustfs using docker compose
|
|
tags: rustfs_uninstall
|
|
command: docker compose -f "{{ docker_compose}}/docker-compose.yml" down
|
|
args:
|
|
chdir: "{{ docker_compose }}"
|