From a6fb44ac600501ea7e5eb37d8d4b7346155e4374 Mon Sep 17 00:00:00 2001 From: ravindk89 Date: Mon, 10 Jan 2022 20:27:10 -0500 Subject: [PATCH] Updating makefile to pull latest MinIO version and DEB/RPM URLS --- Makefile | 25 +++ source/conf.py | 5 + source/default-conf.py | 145 ++++++++++++++++++ source/includes/common-installation.rst | 31 +++- source/index.rst | 4 +- .../installation/deploy-minio-distributed.rst | 19 ++- 6 files changed, 210 insertions(+), 19 deletions(-) create mode 100644 source/default-conf.py diff --git a/Makefile b/Makefile index c9360f60..6fc3467d 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ SPHINXBUILD ?= sphinx-build SOURCEDIR = source BUILDDIR = build GITDIR = $(shell git rev-parse --abbrev-ref HEAD) +DEB = $(curl https://min.io/assets/downloads-minio.json | jq '.Linux."MinIO Server".amd64.DEB.download') # Put it first so that "make" without argument is like "make help". help: @@ -25,6 +26,30 @@ clean: @echo "Cleaning $(BUILDDIR)/$(GITDIR)" @rm -rf $(BUILDDIR)/$(GITDIR) +sync-minio-version: + @echo "Retrieving current MinIO version" + $(shell wget -O /tmp/downloads-minio.json https://min.io/assets/downloads-minio.json) + $(eval DEB = $(shell cat /tmp/downloads-minio.json | jq '.Linux."MinIO Server".amd64.DEB.download')) + $(eval RPM = $(shell cat /tmp/downloads-minio.json | jq '.Linux."MinIO Server".amd64.RPM.download')) + $(eval MINIO = $(shell curl --retry 10 -Ls -o /dev/null -w "%{url_effective}" https://github.com/minio/minio/releases/latest | sed "s/https:\/\/github.com\/minio\/minio\/releases\/tag\///")) + + @echo "Replacing Variables" + + @cp source/default-conf.py source/conf.py + + @sed -i "s|MINIOLATEST|${MINIO}|g" source/conf.py + @sed -i "s|DEBURL|${DEB}|g" source/conf.py + @sed -i "s|RPMURL|${RPM}|g" source/conf.py + +stage: + @make clean && make html + python -m http.server --directory $(BUILDDIR)/$(GITDIR)/html + +publish: + @make sync-minio-version + @make clean + make html + # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile diff --git a/source/conf.py b/source/conf.py index fd4e9063..32baafb9 100644 --- a/source/conf.py +++ b/source/conf.py @@ -137,4 +137,9 @@ rst_prolog = """ .. |podman| replace:: `Podman `__ .. |kes-stable| replace:: 0.16.1 +.. |minio-tag| replace:: `RELEASE.2022-01-08T03-11-54Z `__ +.. |minio-latest| replace:: RELEASE.2022-01-08T03-11-54Z +.. |minio-rpm| replace:: https://dl.min.io/server/minio/release/linux-amd64/minio-20220108031154.0.0.x86_64.rpm +.. |minio-deb| replace:: https://dl.min.io/server/minio/release/linux-amd64/minio_20220108031154.0.0_amd64.deb + """ \ No newline at end of file diff --git a/source/default-conf.py b/source/default-conf.py new file mode 100644 index 00000000..becced8c --- /dev/null +++ b/source/default-conf.py @@ -0,0 +1,145 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys + +# The current working dir seems to be /source, so we have to pop up a level +sys.path.append(os.path.abspath('../sphinxext')) + + +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'MinIO Baremetal Documentation' +copyright = '2020-Present, MinIO, Inc. ' +author = 'Ravind Kumar' + +# The full version, including alpha/beta/rc tags +release = '0.1' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.extlinks', + 'minio', + 'sphinx_copybutton', + 'sphinx_markdown_tables', + 'sphinx-prompt', + 'sphinx_substitution_extensions', + 'sphinx_togglebutton', + 'sphinxcontrib.images', + 'myst_parser', + 'sphinx_design', +] + +# -- External Links + +# Add roots for short external link references in the documentation. +# Helpful for sites we tend to make lots of references to. + +extlinks = { + 'kube-docs' : ('https://kubernetes.io/docs/%s', ''), + 'minio-git' : ('https://github.com/minio/%s',''), + 'github' : ('https://github.com/%s',''), + 'kube-api' : ('https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/%s',''), + 'aws-docs' : ('https://docs.aws.amazon.com/%s',''), + 's3-docs' : ('https://docs.aws.amazon.com/AmazonS3/latest/userguide/%s',''), + 's3-api' : ('https://docs.aws.amazon.com/AmazonS3/latest/API/%s',''), + 'iam-docs' : ('https://docs.aws.amazon.com/IAM/latest/UserGuide/%s',''), + 'minio-release' : ('https://github.com/minio/minio/releases/tag/%s',''), + 'mc-release' : ('https://github.com/minio/mc/releases/tag/%s',''), + 'legacy' : ('https://docs.min.io/docs/%s',''), + 'docs-k8s' : ('https://docs.min.io/minio/k8s/%s',''), + 'prometheus-docs' : ('https://prometheus.io/docs/%s',''), + 'podman-docs' : ('https://docs.podman.io/en/latest/%s',''), + 'podman-git' : ('https://github.com/containers/podman/%s','') + +} + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['includes/*.rst', 'includes/imports/*', '*-template.rst'] + +# Copy-Button Customization + +copybutton_selector = "div.copyable pre" + +# sphinxcontrib-images customization + +images_config = { + 'override_image_directive' : True +} + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +html_favicon = '_static/favicon.png' + +html_sidebars = { + '**' : [ + 'searchbox.html', + 'navigation.html' + ] +} + +html_theme_options = { + 'fixed_sidebar' : 'true', + 'show_relbars': 'false' +} + +html_short_title = "MinIO Object Storage for Baremetal Infrastructure" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +html_css_files = ['css/main.min.css', 'custom.css'] + +html_js_files = ['js/main.js'] + +html_extra_path = [ 'extra'] + +html_permalinks_icon = "" + +html_title = 'MinIO Baremetal Documentation' + +# -- Options for Sphinx Tabs ------------------------------------------------- + +sphinx_tabs_disable_css_loading = True + +rst_prolog = """ + +.. |podman| replace:: `Podman `__ +.. |kes-stable| replace:: 0.16.1 + +.. |minio-tag| replace:: `MINIOLATEST `__ +.. |minio-latest| replace:: MINIOLATEST +.. |minio-rpm| replace:: RPMURL +.. |minio-deb| replace:: DEBURL + +""" \ No newline at end of file diff --git a/source/includes/common-installation.rst b/source/includes/common-installation.rst index d2ccab00..798e37f2 100644 --- a/source/includes/common-installation.rst +++ b/source/includes/common-installation.rst @@ -16,8 +16,9 @@ recommends using RPM or DEB installation routes. .. code-block:: shell :class: copyable + :substitutions: - wget https://dl.min.io/server/minio/release/linux-amd64/minio.rpm + wget |minio-rpm| -O minio.deb sudo dnf install minio.rpm .. tab-item:: DEB (Debian/Ubuntu) @@ -28,8 +29,9 @@ recommends using RPM or DEB installation routes. .. code-block:: shell :class: copyable + :substitutions: - wget https://dl.min.io/server/minio/release/linux-amd64/minio.deb + wget |minio-deb| -O minio.deb sudo dpkg -i minio.deb .. tab-item:: Binary @@ -53,13 +55,26 @@ MinIO enables :ref:`Transport Layer Security (TLS) ` 1.2+ automatically upon detecting a valid x.509 certificate (``.crt``) and private key (``.key``) in the MinIO ``${HOME}/.minio/certs`` directory. -If *any* MinIO server or client uses certificates signed by an unknown -Certificate Authority (self-signed or internal CA), you *must* place the CA -certs in the ``${HOME}/.minio/certs/CAs`` on all MinIO hosts in the deployment. -MinIO rejects invalid certificates (untrusted, expired, or malformed). +For ``systemd``-managed deployments, use the ``$HOME`` directory for the +user which runs the MinIO server process. The provided ``minio.service`` +file runs the process as ``minio-user``. The previous step includes instructions +for creating this user with a home directory ``/home/minio-user``. -You can override the certificate directory using the -:mc-cmd-option:`minio server certs-dir` commandline argument. +- Place TLS certificates into ``/home/minio-user/.minio/certs``. + +- If *any* MinIO server or client uses certificates signed by an unknown + Certificate Authority (self-signed or internal CA), you *must* place the CA + certs in the ``/home/minio-user/.minio/certs/CAs`` on all MinIO hosts in the + deployment. MinIO rejects invalid certificates (untrusted, expired, or + malformed). + +If the ``minio.service`` file specifies a different user account, use the +``$HOME`` directory for that account. Alternatively, specify a custom +certificate directory using the :mc-cmd-option:`minio server certs-dir` +commandline argument. Modify the ``MINIO_OPTS`` variable in +``/etc/defaults/minio`` to set this option. The ``systemd`` user which runs the +MinIO server process *must* have read and listing permissions for the specified +directory. For more specific guidance on configuring MinIO for TLS, including multi-domain support via Server Name Indication (SNI), see :ref:`minio-tls`. You can diff --git a/source/index.rst b/source/index.rst index 3a625f3d..be6431ff 100644 --- a/source/index.rst +++ b/source/index.rst @@ -8,7 +8,9 @@ Welcome to the MinIO Documentation! MinIO is a high performance object storage solution with native support for Kubernetes deployments. MinIO provides an Amazon Web Services S3-compatible API and supports all core S3 features. MinIO is released under `GNU Affero General Public License v3.0 -`__. +`__. + +This documentation targets the latest stable version of MinIO, |minio-tag|. You can get started exploring MinIO features using our ``play`` server at https://play.min.io. ``play`` is a *public* MinIO cluster running the latest diff --git a/source/installation/deploy-minio-distributed.rst b/source/installation/deploy-minio-distributed.rst index 219ab79d..42e6bac9 100644 --- a/source/installation/deploy-minio-distributed.rst +++ b/source/installation/deploy-minio-distributed.rst @@ -222,22 +222,14 @@ procedure. :start-after: start-install-minio-binary-desc :end-before: end-install-minio-binary-desc -2) Add TLS/SSL Certificates -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. include:: /includes/common-installation.rst - :start-after: start-install-minio-tls-desc - :end-before: end-install-minio-tls-desc - - -3) Create the ``systemd`` Service File +2) Create the ``systemd`` Service File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. include:: /includes/common-installation.rst :start-after: start-install-minio-systemd-desc :end-before: end-install-minio-systemd-desc -4) Create the Service Environment File +3) Create the Service Environment File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create an environment file at ``/etc/default/minio``. The MinIO @@ -313,6 +305,13 @@ You may specify other :ref:`environment variables by your deployment. All MinIO nodes in the deployment should include the same environment variables with the same values for each variable. +4) Add TLS/SSL Certificates +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: /includes/common-installation.rst + :start-after: start-install-minio-tls-desc + :end-before: end-install-minio-tls-desc + 5) Run the MinIO Server Process ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~