You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
3.9 KiB
167 lines
3.9 KiB
= 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
|
|
|