From 60f5f7f8fb79e73a9eb59ebbde57fa7cbf0f31e2 Mon Sep 17 00:00:00 2001 From: webbuilder_pel7ppc64lebuilder0 Date: Wed, 13 May 2020 15:54:20 +0200 Subject: [PATCH] minio package creation Signed-off-by: webbuilder_pel7ppc64lebuilder0 --- SOURCES/minio-gateway.config | 18 +++++ SOURCES/minio-gateway.service | 16 ++++ SOURCES/minio-server.config | 148 ++++++++++++++++++++++++++++++++++ SOURCES/minio-server.service | 17 ++++ SPECS/minio.spec | 133 ++++++++++++++++++++++++++++++ 5 files changed, 332 insertions(+) create mode 100644 SOURCES/minio-gateway.config create mode 100644 SOURCES/minio-gateway.service create mode 100644 SOURCES/minio-server.config create mode 100644 SOURCES/minio-server.service create mode 100644 SPECS/minio.spec diff --git a/SOURCES/minio-gateway.config b/SOURCES/minio-gateway.config new file mode 100644 index 0000000..b4e6518 --- /dev/null +++ b/SOURCES/minio-gateway.config @@ -0,0 +1,18 @@ +### Minio Gateway Config file + +### MAIN +#GATEWAY_TYPE +#GATEWAY_URI + +### MINIO +#MINIO_ACCESS_KEY= +#MINIO_SECRET_KEY= + +### AWS +#AWS_ACCESS_KEY_ID= + +### AZURE +#MINIO_AZURE_CHUNK_SIZE_MB=0.25 + +### GCS +#GOOGLE_APPLICATION_CREDENTIALS= diff --git a/SOURCES/minio-gateway.service b/SOURCES/minio-gateway.service new file mode 100644 index 0000000..aa6adaf --- /dev/null +++ b/SOURCES/minio-gateway.service @@ -0,0 +1,16 @@ +[Unit] +Description=Minio Gateway +After=syslog.target +After=network-online.target + +[Service] +Type=simple +User=minio +Group=minio +WorkingDirectory=/var/lib/minio/ +EnvironmentFile=/etc/minio/gateway +ExecStart=/usr/bin/minio gateway $GATEWAY_TYPE $GATEWAY_URI +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/minio-server.config b/SOURCES/minio-server.config new file mode 100644 index 0000000..d5ddafd --- /dev/null +++ b/SOURCES/minio-server.config @@ -0,0 +1,148 @@ +### Minio Config File + +### MAIN +#SERVER_VOLUMES="" +#SERVER_ADDRESS="--address" +#SERVER_CERTS_DIR="--certs-dir /etc/minio/certs/" + +### MINIO +#MINIO_ACCESS_KEY=minio_access +#MINIO_SECRET_KEY=minio_secret +#MINIO_REGION_NAME="europe-belgium" +#MINIO_REGION_COMMENT="Belgium a country in Europe" +#MINIO_STORAGE_CLASS_STANDARD="EC:4" +#MINIO_STORAGE_CLASS_RRS="EC:2" +#MINIO_STORAGE_CLASS_COMMENT="" +#MINIO_CACHE_DRIVES="/var/lib/minio/cache0,/var/lib/minio/cache1," +#MINIO_CACHE_EXPIRY="90" +#MINIO_CACHE_QUOTA="90" +#MINIO_CACHE_EXCLUDE="bucket/*.tmp,*.exe" +#MINIO_CACHE_AFTER="1" +#MINIO_CACHE_COMMENT="" +#MINIO_DISK_USAGE_CRAWL_DELAY=30 +#MINIO_BROWSER=off +#MINIO_DOMAIN=mydomain.com +#MINIO_API_REQUESTS_MAX="" +#MINIO_API_REQUESTS_DEADLINE="" + + +### ETCD +#MINIO_ETCD_ENDPOINTS="" +#MINIO_ETCD_PATH_PREFIX="" +#MINIO_ETCD_COREDNS_PATH="" +#MINIO_ETCD_CLIENT_CERT="" +#MINIO_ETCD_CLIENT_CERT_KEY="" +#MINIO_ETCD_COMMENT="" + +### AMQP +#MINIO_NOTIFY_AMQP_ENABLE +#MINIO_NOTIFY_AMQP_URL +#MINIO_NOTIFY_AMQP_EXCHANGE +#MINIO_NOTIFY_AMQP_EXCHANGE_TYPE +#MINIO_NOTIFY_AMQP_ROUTING_KEY +#MINIO_NOTIFY_AMQP_MANDATORY +#MINIO_NOTIFY_AMQP_DURABLE +#MINIO_NOTIFY_AMQP_NO_WAIT +#MINIO_NOTIFY_AMQP_INTERNAL +#MINIO_NOTIFY_AMQP_AUTO_DELETED +#MINIO_NOTIFY_AMQP_DELIVERY_MODE +#MINIO_NOTIFY_AMQP_QUEUE_DIR +#MINIO_NOTIFY_AMQP_QUEUE_LIMIT +#MINIO_NOTIFY_AMQP_COMMENT + +### MQTT +#MINIO_NOTIFY_MQTT_ENABLE +#MINIO_NOTIFY_MQTT_BROKER +#MINIO_NOTIFY_MQTT_TOPIC +#MINIO_NOTIFY_MQTT_USERNAME +#MINIO_NOTIFY_MQTT_PASSWORD +#MINIO_NOTIFY_MQTT_QOS +#MINIO_NOTIFY_MQTT_KEEP_ALIVE_INTERVAL +#MINIO_NOTIFY_MQTT_RECONNECT_INTERVAL +#MINIO_NOTIFY_MQTT_QUEUE_DIR +#MINIO_NOTIFY_MQTT_QUEUE_LIMIT +#MINIO_NOTIFY_MQTT_COMMENT + +### ELASTICSEARCH +#MINIO_NOTIFY_ELASTICSEARCH_ENABLE +#MINIO_NOTIFY_ELASTICSEARCH_URL +#MINIO_NOTIFY_ELASTICSEARCH_INDEX +##MINIO_NOTIFY_ELASTICSEARCH_FORMAT +#MINIO_NOTIFY_ELASTICSEARCH_QUEUE_DIR +#MINIO_NOTIFY_ELASTICSEARCH_QUEUE_LIMIT +#MINIO_NOTIFY_ELASTICSEARCH_COMMENT + +### REDIS +#MINIO_NOTIFY_REDIS_ENABLE +#MINIO_NOTIFY_REDIS_KEY +#MINIO_NOTIFY_REDIS_FORMAT +#MINIO_NOTIFY_REDIS_PASSWORD +#MINIO_NOTIFY_REDIS_QUEUE_DIR +#MINIO_NOTIFY_REDIS_QUEUE_LIMIT +#MINIO_NOTIFY_REDIS_COMMENT + +### NATS +#MINIO_NOTIFY_NATS_ENABLE +#MINIO_NOTIFY_NATS_ADDRESS +#MINIO_NOTIFY_NATS_SUBJECT +#MINIO_NOTIFY_NATS_USERNAME +#MINIO_NOTIFY_NATS_PASSWORD +#MINIO_NOTIFY_NATS_TOKEN +#MINIO_NOTIFY_NATS_TLS +#MINIO_NOTIFY_NATS_TLS_SKIP_VERIFY +#MINIO_NOTIFY_NATS_PING_INTERVAL +#MINIO_NOTIFY_NATS_STREAMING +#MINIO_NOTIFY_NATS_STREAMING_ASYNC +#MINIO_NOTIFY_NATS_STREAMING_MAX_PUB_ACKS_IN_FLIGHT +#MINIO_NOTIFY_NATS_STREAMING_CLUSTER_ID +#MINIO_NOTIFY_NATS_CERT_AUTHORITY +#MINIO_NOTIFY_NATS_CLIENT_CERT +#MINIO_NOTIFY_NATS_CLIENT_KEY +#MINIO_NOTIFY_NATS_QUEUE_DIR +#MINIO_NOTIFY_NATS_QUEUE_LIMIT +#MINIO_NOTIFY_NATS_COMMENT + +### POSTGRESQL +#MINIO_NOTIFY_POSTGRES_ENABLE +#MINIO_NOTIFY_POSTGRES_CONNECTION_STRING +#MINIO_NOTIFY_POSTGRES_TABLE +#MINIO_NOTIFY_POSTGRES_FORMAT +#MINIO_NOTIFY_POSTGRES_QUEUE_DIR +#MINIO_NOTIFY_POSTGRES_QUEUE_LIMIT +#MINIO_NOTIFY_POSTGRES_COMMENT + +### KAFKA +#MINIO_NOTIFY_KAFKA_ENABLE +#MINIO_NOTIFY_KAFKA_BROKERS +#MINIO_NOTIFY_KAFKA_TOPIC +#MINIO_NOTIFY_KAFKA_SASL_USERNAME +#MINIO_NOTIFY_KAFKA_SASL_PASSWORD +#MINIO_NOTIFY_KAFKA_SASL_MECHANISM +#MINIO_NOTIFY_KAFKA_TLS_CLIENT_AUTH +#MINIO_NOTIFY_KAFKA_SASL +#MINIO_NOTIFY_KAFKA_TLS +#MINIO_NOTIFY_KAFKA_TLS_SKIP_VERIFY +#MINIO_NOTIFY_KAFKA_CLIENT_TLS_CERT +#MINIO_NOTIFY_KAFKA_CLIENT_TLS_KEY +#MINIO_NOTIFY_KAFKA_QUEUE_DIR +#MINIO_NOTIFY_KAFKA_QUEUE_LIMIT +#MINIO_NOTIFY_KAFKA_COMMENT +#MINIO_NOTIFY_KAFKA_VERSION + +### WEBHOOK +#MINIO_NOTIFY_WEBHOOK_ENABLE +#MINIO_NOTIFY_WEBHOOK_ENDPOINT +#MINIO_NOTIFY_WEBHOOK_AUTH_TOKEN +#MINIO_NOTIFY_WEBHOOK_QUEUE_DIR +#MINIO_NOTIFY_WEBHOOK_QUEUE_LIMIT +#MINIO_NOTIFY_WEBHOOK_COMMENT + +### NSQ +#MINIO_NOTIFY_NSQ_ENABLE +#MINIO_NOTIFY_NSQ_NSQD_ADDRESS +#MINIO_NOTIFY_NSQ_TOPIC +#MINIO_NOTIFY_NSQ_TLS +#MINIO_NOTIFY_NSQ_TLS_SKIP_VERIFY +#MINIO_NOTIFY_NSQ_QUEUE_DIR +#MINIO_NOTIFY_NSQ_QUEUE_LIMIT +#MINIO_NOTIFY_NSQ_COMMENT diff --git a/SOURCES/minio-server.service b/SOURCES/minio-server.service new file mode 100644 index 0000000..bc26fb5 --- /dev/null +++ b/SOURCES/minio-server.service @@ -0,0 +1,17 @@ +[Unit] +Description=Minio Server +After=syslog.target +After=network-online.target +After=postgresql.service memcached.service redis.service + +[Service] +Type=simple +User=minio +Group=minio +WorkingDirectory=/var/lib/minio/ +EnvironmentFile=/etc/minio/server +ExecStart=/usr/bin/minio server $SERVER_ADDRESS $SERVER_CERTS_DIR $SERVER_VOLUMES +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/SPECS/minio.spec b/SPECS/minio.spec new file mode 100644 index 0000000..3d02f12 --- /dev/null +++ b/SPECS/minio.spec @@ -0,0 +1,133 @@ +%define fullversion 2020-05-08T02-40-49Z +%define realversion %(echo %{fullversion} | sed -e 's/[^0-9]//g' | cut -c -8) + +%global _hardened_build 1 +%define minio_user minio +%define minio_group minio +%define minio_home /var/lib/minio/ + +Name : minio +Version : %{realversion} +Release : 1%{?dist} +Summary : Web Object Cloud Storage Server +Group : System/Web +License : Apache License +URL : https://min.io +#Source0 : https://github.com/minio/minio/archive/RELEASE.2020-05-08T02-40-49Z.tar.gz +Source1 : minio-server.config +Source2 : minio-gateway.config +Source3 : minio-server.service +Source4 : minio-gateway.service +BuildRequires : golang +BuildRequires : git + + +%description +MinIO is an object storage server. +It is compatible with Amazon S3 cloud storage service. +It is best suited for storing unstructured data such as photos, videos, log +files, backups and container / VM images. +Size of an object can range from a few KBs to a maximum of 5TiB. + + +%package server +Summary: Web Object Cloud Storage Server +Requires: minio +%description server +Minio Server Package + + +%package gateway +Summary: Web Object Cloud Storage Server +Requires: minio +%description gateway +Minio Gateway Package + + +%prep +%setup -T -q -c %{name}-%{realversion} +export GOPATH=`pwd` +export GO111MODULE=on +mkdir -p src/github.com/minio/ +cd src/github.com/minio/ +git clone https://github.com/minio/minio + + +%build +export GOPATH=`pwd` +export GO111MODULE=on +export CGO_ENABLED=0 +cd src/github.com/minio/minio +git checkout tags/RELEASE.%{fullversion} +export COMMIT=$(git rev-parse HEAD) +export SHORTCOMMIT=$(git rev-parse --short HEAD) +export BUILDDATE=$(date +%Y%m%d) +sed 's/goGetTag = "DEVELOPMENT.GOGET"/goGetTag = "RELEASE.%{fullversion}"/' -i cmd/build-constants.go +sed 's/Version = goGetTag/Version = "%{fullversion}"/' -i cmd/build-constants.go +sed 's/ReleaseTag = goGetTag/ReleaseTag = "RELEASE.%{fullversion}"/' -i cmd/build-constants.go +sed 's/CommitID = goGetTag/CommitID = "'$COMMIT'"/' -i cmd/build-constants.go +sed 's/ShortCommitID = CommitID\[:12\]/ShortCommitID = "'$SHORTCOMMIT'"/' -i cmd/build-constants.go +go build -v -tags kqueue -trimpath --ldflags " +-X github.com/minio/minio/cmd.ReleaseTag=RELEASE.%{fullversion} +-X github.com/minio/minio/cmd.CommitID=$COMMIT +-X github.com/minio/minio/cmd.ShortCommitID=$SHORTCOMMIT +-X github.com/minio/minio/cmd.Version=%{version} +-extldflags -s -w -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') +-buildid %{version}" -o minio + + +%install +install -p -D -m 0555 src/github.com/minio/minio/minio %{buildroot}%{_bindir}/minio +install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/minio/server +install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/minio/gateway +install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_unitdir}/minio-server.service +install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/minio-gateway.service +install -p -d -m 0700 %{buildroot}%{minio_home} + + +%pre +getent group %{minio_group} > /dev/null || groupadd -r %{minio_group} +getent passwd %{minio_user} > /dev/null || useradd -r -d %{minio_home} -g %{minio_group} -s /bin/bash -c "minio user" %{minio_user} +exit 0 + + +%post server +%systemd_post minio-server.service +%preun server +%systemd_preun minio-server.service +%postun server +%systemd_postun minio-server.service + + +%post gateway +%systemd_post minio-gateway.service +%preun gateway +%systemd_preun minio-gateway.service +%postun gateway +%systemd_postun minio-gateway.service + + +%check +cd src/github.com/minio/minio +./minio --version | tee v +v=$(awk '/version/{print $3}' v) +test "$v" = RELEASE.%{fullversion} + + +%files +%doc +%{_bindir}/minio +%attr(700,%{minio_user},%{minio_group}) %dir %{minio_home} + + +%files server +%config(noreplace) %{_sysconfdir}/%{name}/server +%{_unitdir}/minio-server.service + + +%files gateway +%config(noreplace) %{_sysconfdir}/%{name}/gateway +%{_unitdir}/minio-gateway.service + + +%changelog