discourse/script/local_minio_s3.rb

93 lines
2.8 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
require "minio_runner"
class ExecuteLocalMinioS3
def run
begin
start_minio
save_old_config
change_to_minio_settings
puts "Press any key when done..."
gets
restore_old
rescue SystemExit, Interrupt
restore_old
raise
end
end
def start_minio
MinioRunner.config do |minio_runner_config|
minio_runner_config.minio_domain = ENV["MINIO_RUNNER_MINIO_DOMAIN"] || "minio.local"
minio_runner_config.buckets =
(
if ENV["MINIO_RUNNER_BUCKETS"]
ENV["MINIO_RUNNER_BUCKETS"].split(",")
else
["discoursetest"]
end
)
minio_runner_config.public_buckets =
(
if ENV["MINIO_RUNNER_PUBLIC_BUCKETS"]
ENV["MINIO_RUNNER_PUBLIC_BUCKETS"].split(",")
else
["discoursetest"]
end
)
end
puts "Starting minio..."
MinioRunner.start
end
def save_old_config
puts "Temporarily using minio config for S3. Current settings:"
@current_s3_endpoint = puts_current(:s3_endpoint)
@current_s3_upload_bucket = puts_current(:s3_upload_bucket)
@current_s3_access_key_id = puts_current(:s3_access_key_id)
@current_s3_secret_access_key = puts_current(:s3_secret_access_key)
@current_allowed_internal_hosts = puts_current(:allowed_internal_hosts)
end
def change_to_minio_settings
puts "Changing to minio settings..."
SiteSetting.s3_upload_bucket = "discoursetest"
SiteSetting.s3_access_key_id = MinioRunner.config.minio_root_user
SiteSetting.s3_secret_access_key = MinioRunner.config.minio_root_password
SiteSetting.s3_endpoint = MinioRunner.config.minio_server_url
SiteSetting.allowed_internal_hosts =
MinioRunner.config.minio_urls.map { |url| URI.parse(url).host }.join("|")
puts_current(:s3_endpoint)
puts_current(:s3_upload_bucket)
puts_current(:s3_access_key_id)
puts_current(:s3_secret_access_key)
puts_current(:allowed_internal_hosts)
end
def restore_old
puts "Restoring old S3 settings..."
SiteSetting.s3_upload_bucket = @current_s3_upload_bucket
SiteSetting.s3_access_key_id = @current_s3_access_key_id
SiteSetting.s3_secret_access_key = @current_s3_secret_access_key
SiteSetting.s3_endpoint = @current_s3_endpoint
SiteSetting.allowed_internal_hosts = @current_allowed_internal_hosts
puts_current(:s3_endpoint)
puts_current(:s3_upload_bucket)
puts_current(:s3_access_key_id)
puts_current(:s3_secret_access_key)
puts_current(:allowed_internal_hosts)
puts "Done!"
end
def puts_current(setting)
printf "%-40s %s\n", " > Current #{setting}:", SiteSetting.send(setting)
SiteSetting.send(setting)
end
end
ExecuteLocalMinioS3.new.run