mirror of
https://github.com/pgsty/minio.git
synced 2026-08-09 07:43:29 +03:00
fd2ca1c6d2
README, README_ZH, SECURITY, COMPLIANCE, CONTRIBUTING, NOTICE, code_of_conduct, the vulnerability and PR-etiquette documents, the GitHub issue and pull request templates, and the docs/ tree all present Silo as the product. The Grafana dashboards under docs/metrics/prometheus/grafana/ have their panel titles and descriptions rebranded while every minio_* query, label and expression is left alone, so existing alerts and recording rules keep matching. The distinction the review demanded is applied per hit rather than by search-and-replace: - Product and command text becomes Silo and silo: install and run instructions, systemd examples, compose services, download links, badges. - Protocol and interface text keeps MinIO: MINIO_* variables, minio_* metrics, x-minio-* headers, /minio/* routes, .minio.sys, arn:minio, and API field and error names. - Attribution keeps MinIO and gains the fork's own: the AGPL obligations, original copyright, CREDITS and NOTICE stay, with the modification notice added alongside rather than replacing them. - Historical and third-party references are left as facts, not rewritten for brand tidiness. README and README_ZH each carry an explicit non-affiliation notice, document the side-by-side package migration including the /etc/systemd/system/silo.service.d/10-legacy-user.conf drop-in for keeping a legacy UID/GID, and state that recursive chown is never performed. The trademark attribution uses the policy's approved "based on MinIO technology" wording, not the shortened form the policy rejects. github.com/pgsty/minio links are left in place and labelled transitional. The repository has not been renamed, and rewriting them now would produce documented URLs that 404 until the cutover; they change in the cutover commit together with the goreleaser release target, the OCI source label and the raw-content branch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
91 lines
4.2 KiB
Markdown
91 lines
4.2 KiB
Markdown
## Silo configuration YAML
|
|
|
|
Silo now supports starting the server arguments and configuration via a YAML configuration file. This YAML configuration describes everything that can be configured in a Silo setup, such as '--address', '--console-address' and command line arguments for the Silo server.
|
|
|
|
Historically everything to Silo was provided via command arguments for the hostnames and the drives via an ellipses syntax such as `silo server http://host{1...4}/disk{1...4}` this requirement added an additional burden to have sequential hostnames for us to make sure that we can provide horizontal distribution, however we have come across situations where sometimes this is not feasible and there are no easier alternatives without modifying /etc/hosts on the host system as root user. Many times in airgapped deployments this is not allowed or requires audits and approvals.
|
|
|
|
Silo server configuration file allows users to provide topology that allows for heterogeneous hostnames, allowing Silo to deployed in pre-existing environments without any further OS level configurations.
|
|
|
|
### Usage
|
|
|
|
```
|
|
silo server --config config.yaml
|
|
```
|
|
|
|
Lets you start Silo server with all inputs to start Silo server provided via this configuration file, once the configuration file is provided all other pre-existing values on disk for configuration are overridden by the new values set in this configuration file.
|
|
|
|
Following is an example YAML configuration structure.
|
|
```yaml
|
|
version: v2
|
|
address: ":9000"
|
|
rootUser: "minioadmin"
|
|
rootPassword: "minioadmin"
|
|
console-address: ":9001"
|
|
certs-dir: "/home/user/.silo/certs/"
|
|
pools: # Specify the nodes and drives with pools
|
|
- args:
|
|
- "https://server-example-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server{1...2}-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server3-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server4-pool1:9000/mnt/disk{1...4}/"
|
|
- args:
|
|
- "https://server-example-pool2:9000/mnt/disk{1...4}/"
|
|
- "https://server{1...2}-pool2:9000/mnt/disk{1...4}/"
|
|
- "https://server3-pool2:9000/mnt/disk{1...4}/"
|
|
- "https://server4-pool2:9000/mnt/disk{1...4}/"
|
|
# more args
|
|
|
|
options:
|
|
ftp: # settings for Silo to act as an ftp server
|
|
address: ":8021"
|
|
passive-port-range: "30000-40000"
|
|
sftp: # settings for Silo to act as an sftp server
|
|
address: ":8022"
|
|
ssh-private-key: "/home/user/.ssh/id_rsa"
|
|
```
|
|
|
|
If you are using the config `v1` YAML you should migrate your `pools:` field values to the following format
|
|
|
|
`v1` format
|
|
```yaml
|
|
pools: # Specify the nodes and drives with pools
|
|
-
|
|
- "https://server-example-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server{1...2}-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server3-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server4-pool1:9000/mnt/disk{1...4}/"
|
|
```
|
|
|
|
to `v2` format
|
|
|
|
```yaml
|
|
pools:
|
|
- args:
|
|
- "https://server-example-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server{1...2}-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server3-pool1:9000/mnt/disk{1...4}/"
|
|
- "https://server4-pool1:9000/mnt/disk{1...4}/"
|
|
set-drive-count: 4 # Advanced option, must be used under guidance from Silo team.
|
|
```
|
|
|
|
### Things to know
|
|
|
|
- Fields such as `version` and `pools` are mandatory, however all other fields are optional.
|
|
- Each pool expects a minimum of 2 nodes per pool, and unique non-repeating hosts for each argument.
|
|
- Each pool expects each host in this pool has the same number of drives specified as any other host.
|
|
- Mixing `local-path` and `distributed-path` is not allowed, doing so would cause Silo to refuse starting the server.
|
|
- Ellipses and bracket notation (e.g. `{1...10}`) are allowed.
|
|
|
|
> NOTE: Silo environmental variables still take precedence over the `config.yaml` file, however `config.yaml` is preferred over Silo internal config KV settings via `mc admin config set alias/ <sub-system>`.
|
|
|
|
### TODO
|
|
|
|
In subsequent releases we are planning to extend this to provide things like
|
|
|
|
- Reload() of Silo server arguments without fully restarting the process.
|
|
|
|
- Expanding 1 node at a time by automating the process of creating a new pool
|
|
and decommissioning to provide a functionality that smaller deployments
|
|
care about.
|
|
|
|
- Fully allow bracket notation (e.g. `{a,c,f}`) to have multiple entries on one line. |