From 26f9869ab7a549eb9c7d509d49af4003cfef549a Mon Sep 17 00:00:00 2001 From: test2 Date: Mon, 11 May 2020 18:30:28 +0300 Subject: [PATCH] minio config --- DockerSwarm/swarm-volumes-minio-howto.adoc | 167 +++++++++++++++++++ DockerSwarm/swarm-volumes-storage-howto.adoc | 16 ++ 2 files changed, 183 insertions(+) create mode 100644 DockerSwarm/swarm-volumes-minio-howto.adoc diff --git a/DockerSwarm/swarm-volumes-minio-howto.adoc b/DockerSwarm/swarm-volumes-minio-howto.adoc new file mode 100644 index 0000000..18bf1d8 --- /dev/null +++ b/DockerSwarm/swarm-volumes-minio-howto.adoc @@ -0,0 +1,167 @@ += Swarm Minio HowTo! +Apostolos rootApostolos@swarmlab.io +:description: IoT Εισαγωγή στο Cloud +:keywords: Cloud, swarm +:data-uri: +:toc: right +:toc-title: Πίνακας περιεχομένων +:toclevels: 4 +:source-highlighter: coderay +:icons: font +:sectnums: + +include::header.adoc[] + + +{empty} + + +== configure Minio + +=== Connect to Server + +.create policy +[source,yaml] +---- +mc config host add --insecure [SESSION] https://ip:9443 key secret --api s3v4 +e.g. +mc config host add --insecure mysession https://83.212.119.119:9443 mykey mysecret --api s3v4 +---- + +=== Create policy + +.create Default policy file: test.json +[source,yaml] +---- +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "AWS": [ + "" + ] + }, + "Action": [ + "s3:GetBucketLocation", // <1> + "s3:HeadBucket", // <1> + "s3:ListBucket", // <1> + "s3:ListBucketMultipartUploads" // <1> + ], + "Resource": [ + "arn:aws:s3:::test" // <2> + ] + }, + { + "Effect": "Allow", + "Principal": { + "AWS": "*" + }, + "Action": [ + "s3:DeleteObject", // <3> + "s3:GetObject", // <3> + "s3:ListMultipartUploadParts", // <3> + "s3:PutObject" // <3> + ], + "Resource": [ + "arn:aws:s3:::test/*" // <4> + ] + } + ] +} +---- +<1> Bucket properties https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html[more info^] +<2> Bucket source +<3> Object properties https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-objects[more info^] +<3> Object source + + +=== Apply policy + +.create policy +[source,yaml] +---- +#!/bin/bash + +mc mb --insecure mymsession/test // <1> + +mc admin policy add --insecure mymisession test ./test.json // <2> + +mc admin user add --insecure mymsession usertest bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd // <3> + +mc admin policy set --insecure mymsession test user=usertest // <4> +---- +<1> create bucket +<2> Apply policy +<3> create user +<4> Apply policy User2bucket + + +=== Sync local2Server + +.sync local2server +[source,yaml] +---- +export MINIO_MIRROR_PARAMETERS="--delete" +export MINIO_SERVER_URL="ip:9443" // <1> +export MINIO_PROT=https +export MINIO_SERVER_DOCUMENTROOT="/home/user/syncdir" // <2> +export MINIO_WEB_BUCKET=test1 +export MINIO_WEB_PASS="bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd" +export AWS_CONFIG_FILE="$HOME/.aws/config" +export AWS_ACCESS_KEY_ID=$MINIO_WEB_BUCKET +export AWS_SECRET_ACCESS_KEY=$MINIO_WEB_PASS + +aws --endpoint-url $MINIO_PROT://$MINIO_SERVER_URL s3 sync MINIO_SERVER_DOCUMENTROOT s3://$MINIO_WEB_BUCKET $MINIO_MIRROR_PARAMETERS +---- +<1> Minio Server ip +<2> Directory sync + + + +=== Sync Server2Local + +.sync server2local +[source,yaml] +---- +export MINIO_MIRROR_PARAMETERS="--delete" +export MINIO_SERVER_URL="ip:9443" // <1> +export MINIO_PROT=https +export MINIO_SERVER_DOCUMENTROOT="/var/www/html" // <2> +export MINIO_WEB_BUCKET=test +export MINIO_WEB_PASS="bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd" +export AWS_CONFIG_FILE="$HOME/.aws/config" +export AWS_ACCESS_KEY_ID=$MINIO_WEB_BUCKET +export AWS_SECRET_ACCESS_KEY=$MINIO_WEB_PASS + +aws --endpoint-url $MINIO_PROT://$MINIO_SERVER_URL s3 sync s3://$MINIO_WEB_BUCKET $MINIO_SERVER_DOCUMENTROOT $MINIO_MIRROR_PARAMETERS +---- +<1> Minio Server ip +<2> Directory sync + + +=== Docker-compose env + +.sync docker-compose env +[source,yaml] +---- + environment: //<1> + - MINIO_MIRROR_PARAMETERS= --delete + - MINIO_SERVER_URL=ip:9443 + - MINIO_PROT=https + - MINIO_SERVER_DOCUMENTROOT=/var/www/html + - MINIO_WEB_BUCKET=test + - MINIO_WEB_PASS=bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd + - AWS_CONFIG_FILE=/home/user/.aws/config +---- +<1> add env to docker-comose + + +=== Automating sync with cron + +.crond file +[source,yaml] +---- +*/15 * * * * root /PATH/local2server >> /var/log/usercron.log 2>&1 / <1> +---- +<1> Every 15 minutes diff --git a/DockerSwarm/swarm-volumes-storage-howto.adoc b/DockerSwarm/swarm-volumes-storage-howto.adoc index fa2304b..2eba098 100644 --- a/DockerSwarm/swarm-volumes-storage-howto.adoc +++ b/DockerSwarm/swarm-volumes-storage-howto.adoc @@ -372,7 +372,23 @@ sudo ./aws/install The AWS Command Line Interface (AWS CLI) is an open source tool that enables you to interact with AWS services using commands in your command-line shell +.create file /home/user/.aws/credentials +[source,sh] +---- +[default] +aws_secret_access_key = key // <1> +aws_access_key_id = secret // <1> +---- +<1> http://docs.swarmlab.io/lab/DockerSwarm/lab/DockerSwarm/swarm-volumes-minio-howto.adoc.html#_apply_policy[see^] +.create file /home/user/.aws/config +[source,sh] +---- +[default] +s3 = + signature_version = s3v4 +region = us-east-1 +---- === Install mc client MinIO Client (mc) provides a modern alternative to UNIX commands like ls, cat, cp, mirror, diff, find etc. It supports filesystems and Amazon S3 compatible cloud storage service (AWS Signature v2 and v4).