mirror of
https://github.com/saltstack/salt-bootstrap.git
synced 2025-04-16 01:30:21 +00:00
Merge develop into stable for v2023.11.07 release
This commit is contained in:
commit
561a376d67
8 changed files with 497 additions and 155 deletions
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -486,7 +486,7 @@ jobs:
|
|||
distro-slug: photon-3
|
||||
display-name: Photon OS 3
|
||||
timeout: 20
|
||||
instances: '["stable-3006", "onedir-3006", "stable-3006-1", "git-master", "latest", "default"]'
|
||||
instances: '["stable-3006", "onedir-3006", "stable-3006-1", "latest", "default"]'
|
||||
|
||||
|
||||
photon-4:
|
||||
|
|
8
.github/workflows/templates/generate.py
vendored
8
.github/workflows/templates/generate.py
vendored
|
@ -276,7 +276,13 @@ BLACKLIST_GIT_3006 = [
|
|||
"ubuntu-2204",
|
||||
]
|
||||
|
||||
BLACKLIST_GIT_MASTER = ["amazon-2", "debian-10", "freebsd-131", "freebsd-123"]
|
||||
BLACKLIST_GIT_MASTER = [
|
||||
"amazon-2",
|
||||
"debian-10",
|
||||
"freebsd-131",
|
||||
"freebsd-123",
|
||||
"photon-3",
|
||||
]
|
||||
|
||||
SALT_VERSIONS = [
|
||||
"3003",
|
||||
|
|
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -1,3 +1,19 @@
|
|||
# v2023.11.07
|
||||
|
||||
## What's Changed
|
||||
|
||||
- cleanup old information in the README.rst file by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1955
|
||||
- Moving quick start scripts to bootstrap repo. by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1960
|
||||
- Suppress progress bar by @twangboy in https://github.com/saltstack/salt-bootstrap/pull/1964
|
||||
- Fix global variable by @twangboy in https://github.com/saltstack/salt-bootstrap/pull/1965
|
||||
- Debian 12 arm64 by @joelpmichael in https://github.com/saltstack/salt-bootstrap/pull/1962
|
||||
- Mirror Linux output, display root_dir by @twangboy in https://github.com/saltstack/salt-bootstrap/pull/1967
|
||||
- Add asterisks to the output by @twangboy in https://github.com/saltstack/salt-bootstrap/pull/1968
|
||||
- Fixes to salt-quick-start.sh by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1973
|
||||
- Update requirements by @twangboy in https://github.com/saltstack/salt-bootstrap/pull/1974
|
||||
|
||||
**Full Changelog**: https://github.com/saltstack/salt-bootstrap/compare/v2023.08.03...v2023.11.07
|
||||
|
||||
# v2023.08.03
|
||||
|
||||
## What's Changed
|
||||
|
|
145
README.rst
145
README.rst
|
@ -32,40 +32,12 @@ sum** of the downloaded ``bootstrap-salt.sh`` file.
|
|||
|
||||
The SHA256 sum of the ``bootstrap-salt.sh`` file, per release, is:
|
||||
|
||||
- 2023.08.03: ``963e559bdb85adecfbbec2c3b81190392bc59b24992e4491e919cd748eeafcb8``
|
||||
- 2023.07.25: ``eaaaadaed40fe2e791d59a9e48f24449428a35ca61782d9139f1272c05524323``
|
||||
- 2023.06.28: ``f45f5da8abee27ef385131f5cfa9382d3a15863d0a05688a0404d2f057b27776``
|
||||
- 2023.04.26: ``516fa9cc2e258cb8484ff360b9674b46918f657985c21ca9301e42a3dd263d60``
|
||||
- 2023.04.21: ``e364428aa7a25f8e2c5e18e36e222351724c6cf35a1d57158f3357cde1e0a0f0``
|
||||
- 2023.04.06: ``994bf7e8bd92fe6d70d291c7562aff299f5651046b4e76dfa506cee0d9bb0843``
|
||||
- 2022.10.04: ``d0686c2daeed18bb726e58eef75a69afe9ee56a1a23b2c32cd4e87d6005638e2``
|
||||
- 2022.08.13: ``af922699c1a2bb3b89b6dac04397389999df1b3416b8d0b5c93766412f14c95c``
|
||||
- 2022.08.12: ``b46f018bbf02f45c6096ab96e9261a9adb3a78ff65092c3976f32ffde909afcb``
|
||||
- 2022.05.19: ``e92e1df6930285cf23eda188bee3cfa3dd6c577b4fb7aa91b29213ad820199b1``
|
||||
- 2022.03.15: ``8f65952c3435f441e7f793941d5162d3ec2033a9ef82722ff1da67a2ef860a2f``
|
||||
- 2021.09.17: ``090d652cd6290debce0e3a4eded65086a4272e69446e711eb26f87160593b6a2``
|
||||
- 2021.09.14: ``30fdcba972f449630b4f13492cb5525e69e08fa2cdb66a6dc78f1536ad279e52``
|
||||
- 2021.08.19: ``ee40a9d8d057cce88a288fc1cb94b1d31408a61d262db6f77b34ad63d66f0806``
|
||||
- 2021.06.23: ``35b397dd0a50f832af453c17f138fd29e3692e492d7f463c404a57e1fac10665``
|
||||
- 2021.03.02: ``91baa0073308f1be20c7be65238ef67e5733c75285314b302a5b2456e73a0758``
|
||||
- 2020.10.20: ``b47bfc8d63cccf22eb4cd94491d30cc1d571e184be25a5be7f775e7f2daaf6e2``
|
||||
- 2020.10.19: ``f6c3e2c52f98d115809044b09062219369957caf30228b594033f0543e202c52``
|
||||
- 2020.06.23: ``1d07db867c195c864d0ae70664524f2099cc9a46872953293c67c3f239d4f4f5``
|
||||
- 2020.05.28: ``6b3ea15c78f01060ab12fc01c0bb18480eaf36858c7ba188b200c0fb11aac173``
|
||||
- 2020.02.24: ``efc46700aca78b8e51d7af9b06293f52ad495f3a8179c6bfb21a8c97ee41f1b7``
|
||||
- 2020.02.04: ``ce877651b4938e3480f76b1629f582437f6ca8b73d7199fdb9e905e86fe85b34``
|
||||
- 2020.01.29: ``e9afdfa877998c1c7f0e141a6728b33d0d24348e197aab2b9bde4fe6bc6db1b2``
|
||||
- 2020.01.21: ``53299aa0dfbf7ab381f3856bb7babfc04a1d6525be11db0b9466277b1e4d0c1a``
|
||||
- 2019.11.04: ``905924fccd4ebf168d19ba598bf10af53efe02302b792aeb15433e73fd3ad1d2``
|
||||
- 2019.10.03: ``34f196f06d586ce9e1b9907660ea6e67caf57abcecfea66e0343697e3fd0d17d``
|
||||
- 2019.05.20: ``46fb5e4b7815efafd69fd703f033fe86e7b584b6770f7e0b936995bcae1cedd8``
|
||||
- 2019.02.27: ``23728e4b5e54f564062070e3be53c5602b55c24c9a76671968abbf3d609258cb``
|
||||
- 2019.01.08: ``ab7f29b75711da4bb79aff98d46654f910d569ebe3e908753a3c5119017bb163``
|
||||
- 2018.08.15: ``6d414a39439a7335af1b78203f9d37e11c972b3c49c519742c6405e2944c6c4b``
|
||||
- 2018.08.13: ``98284bdc2b5ebaeb619b22090374e42a68e8fdefe6bff1e73bd1760db4407ed0``
|
||||
- 2018.04.25: ``e2e3397d6642ba6462174b4723f1b30d04229b75efc099a553e15ea727877dfb``
|
||||
- 2017.12.13: ``c127b3aa4a8422f6b81f5b4a40d31d13cec97bf3a39bca9c11a28f24910a6895``
|
||||
- 2017.08.17: ``909b4d35696b9867b34b22ef4b60edbc5a0e9f8d1ed8d05f922acb79a02e46e3``
|
||||
- 2017.05.24: ``8c42c2e5ad3d4384ddc557da5c214ba3e40c056ca1b758d14a392c1364650e89``
|
||||
|
||||
If you're looking for a *one-liner* to install Salt, please scroll to the bottom and use the
|
||||
instructions for `Installing via an Insecure One-Liner`_.
|
||||
|
@ -206,6 +178,8 @@ To view the latest options and descriptions for ``salt-bootstrap``, use ``-h`` a
|
|||
sh bootstrap.sh -P -y -x python2.7 git v2017.7.2
|
||||
The above will install python27 and install the git version of salt using the
|
||||
python2.7 executable. This only works for git and pip installations.
|
||||
-Q Quickstart, install the Salt master and the Salt minion.
|
||||
And automatically accept the minion key.
|
||||
|
||||
The Salt Bootstrap script has a wide variety of options that can be passed as
|
||||
well as several ways of obtaining the bootstrap script itself. Note that the use of ``sudo``
|
||||
|
@ -215,25 +189,25 @@ is not needed when running these commands as the ``root`` user.
|
|||
|
||||
The examples below show how to bootstrap Salt directly from GitHub or another Git repository.
|
||||
Run the script without any parameters to get latest stable Salt packages for your system from
|
||||
`SaltStack's corporate repository`_. See first example in the `Install using wget`_ section.
|
||||
the `Salt Project's repository`_. See first example in the `Install using wget`_ section.
|
||||
|
||||
|
||||
Install using curl
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you want to install a package of a specific release version, from the SaltStack repo:
|
||||
If you want to install a package of a specific release version, from the Salt Project repo:
|
||||
|
||||
.. code:: console
|
||||
|
||||
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
||||
sudo sh bootstrap-salt.sh -P stable 3004.1
|
||||
sudo sh bootstrap-salt.sh -P stable 3006.1
|
||||
|
||||
If you want to install a specific release version, based on the Git tags:
|
||||
|
||||
.. code:: console
|
||||
|
||||
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
||||
sudo sh bootstrap-salt.sh git v3004.1
|
||||
sudo sh bootstrap-salt.sh git v3006.1
|
||||
|
||||
Using ``curl`` to install latest development version from GitHub:
|
||||
|
||||
|
@ -256,7 +230,7 @@ If all you want is to install a ``salt-master`` using latest Git:
|
|||
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
||||
sudo sh bootstrap-salt.sh -M -N git master
|
||||
|
||||
If your host has Internet access only via HTTP proxy, from the SaltStack repo:
|
||||
If your host has Internet access only via HTTP proxy, from the Salt Project repo:
|
||||
|
||||
.. code:: console
|
||||
|
||||
|
@ -290,12 +264,12 @@ Installing a specific version from git using ``wget``:
|
|||
wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
|
||||
sudo sh bootstrap-salt.sh git v3004.1
|
||||
|
||||
Installing a specific version package from the SaltStack repo using ``wget``:
|
||||
Installing a specific version package from the Salt Project repo using ``wget``:
|
||||
|
||||
.. code:: console
|
||||
|
||||
wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
|
||||
sudo sh bootstrap-salt.sh -P stable 3004.1
|
||||
sudo sh bootstrap-salt.sh -P stable 3006.1
|
||||
|
||||
**NOTE**
|
||||
|
||||
|
@ -311,7 +285,7 @@ If you already have Python installed, ``python 2.7``, then it's as easy as:
|
|||
.. code:: console
|
||||
|
||||
python -m urllib "https://bootstrap.saltproject.io" > bootstrap-salt.sh
|
||||
sudo sh bootstrap-salt.sh -P stable 3004.1
|
||||
sudo sh bootstrap-salt.sh -P stable 3006.1
|
||||
|
||||
With python version 2, the following in-line code should always work:
|
||||
|
||||
|
@ -325,7 +299,7 @@ With python version 3:
|
|||
.. code:: console
|
||||
|
||||
python3 -c 'import urllib.request; print(urllib.request.urlopen("https://bootstrap.saltproject.io").read().decode("ascii"))' > bootstrap-salt.sh
|
||||
sudo sh bootstrap-salt.sh git v3004.1
|
||||
sudo sh bootstrap-salt.sh git v3006.1
|
||||
|
||||
Install using fetch
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -382,11 +356,11 @@ Using ``wget`` to install your distribution's stable packages:
|
|||
|
||||
wget -O - https://bootstrap.saltproject.io | sudo sh
|
||||
|
||||
Installing a target version package of Salt from the SaltStack repo:
|
||||
Installing a target version package of Salt from the Salt Project repo:
|
||||
|
||||
.. code:: console
|
||||
|
||||
curl -L https://bootstrap.saltproject.io | sudo sh -s -- stable 3004.1
|
||||
curl -L https://bootstrap.saltproject.io | sudo sh -s -- stable 3006.1
|
||||
|
||||
Installing the latest master branch of Salt from git:
|
||||
|
||||
|
@ -430,10 +404,10 @@ listed below should reflect this document but may become out of date. If an oper
|
|||
listed below, but is not listed on the official supported operating systems document, the level of
|
||||
support is "best-effort".
|
||||
|
||||
Since Salt is written in Python, the packages available from `SaltStack's corporate repository`_
|
||||
are CPU architecture independent and could be installed on any hardware supported by Linux kernel.
|
||||
However, SaltStack does package Salt's binary dependencies only for ``x86_64`` (``amd64``) and
|
||||
``AArch32`` (``armhf``). The latter is available only for Debian/Raspbian 8 platforms.
|
||||
Since Salt is written in Python, the packages available from the `Salt Project's repository`_ are
|
||||
CPU architecture independent and could be installed on any hardware supported by Linux kernel.
|
||||
However, the Salt Project does package Salt's binary dependencies only for ``x86_64`` (``amd64``)
|
||||
and ``AArch64`` (``arm64``).
|
||||
|
||||
It is recommended to use ``git`` bootstrap mode as described above to install Salt on other
|
||||
architectures, such as ``x86`` (``i386``), ``AArch64`` (``arm64``) or ``ARM EABI`` (``armel``).
|
||||
|
@ -467,12 +441,12 @@ Red Hat family
|
|||
|
||||
- Amazon Linux 2012.3 and later
|
||||
- Amazon Linux 2
|
||||
- CentOS 6/7/8
|
||||
- CentOS 7/8/9
|
||||
- Cloud Linux 6/7
|
||||
- Fedora 30/31 (install latest stable from standard repositories)
|
||||
- Oracle Linux 6/7
|
||||
- Red Hat Enterprise Linux 6/7/8
|
||||
- Scientific Linux 6/7
|
||||
- Fedora 36/37/38 (install latest stable from standard repositories)
|
||||
- Oracle Linux 7/8
|
||||
- Red Hat Enterprise Linux 7/8/9
|
||||
- Scientific Linux 7/8/9
|
||||
|
||||
|
||||
SUSE family
|
||||
|
@ -489,7 +463,7 @@ in combination with the ``git`` installation method.
|
|||
|
||||
.. code:: console
|
||||
|
||||
sh bootstrap-salt.sh -x python2 git v2018.3.2
|
||||
sh bootstrap-salt.sh -x python3 git v3006.1
|
||||
|
||||
|
||||
Ubuntu and derivatives
|
||||
|
@ -502,12 +476,12 @@ Ubuntu Best Effort Support: Non-LTS Releases
|
|||
********************************************
|
||||
|
||||
This script provides best-effort support for current, non-LTS Ubuntu releases. If package
|
||||
repositories are not provided on `SaltStack's Ubuntu repository`_ for the non-LTS release, the
|
||||
bootstrap script will attempt to install the packages for the most closely related LTS Ubuntu
|
||||
repositories are not provided on the `Salt Project's Ubuntu repository`_ for the non-LTS release,
|
||||
the bootstrap script will attempt to install the packages for the most closely related LTS Ubuntu
|
||||
release instead.
|
||||
|
||||
For example, when installing Salt on Ubuntu 21.10, the bootstrap script will setup the repository
|
||||
for Ubuntu 20.04 from `SaltStack's Ubuntu repository`_ and install the 20.04 packages.
|
||||
for Ubuntu 20.04 from the `Salt Project's Ubuntu repository`_ and install the 20.04 packages.
|
||||
|
||||
Non-LTS Ubuntu releases are not supported once the release reaches End-of-Life as defined by
|
||||
`Ubuntu's release schedule`_.
|
||||
|
@ -564,42 +538,6 @@ please run the following commands and report their output when creating an issue
|
|||
For information on how to add support for a currently unsupported distribution, please refer to the
|
||||
`Contributing Guidelines`_.
|
||||
|
||||
Python 3 Support
|
||||
----------------
|
||||
|
||||
Some distributions support installing Salt to use Python 3 instead of Python 2. The availability of
|
||||
this offering, while limited, is as follows:
|
||||
|
||||
- CentOS 7
|
||||
- Debian 10
|
||||
- Debian 11
|
||||
- Fedora (only git installations)
|
||||
- Ubuntu 18.04
|
||||
- Ubuntu 20.04
|
||||
|
||||
On Fedora, PIP installation must be allowed (-P) due to incompatibility with the shipped Tornado
|
||||
library.
|
||||
|
||||
Installing the Python 3 packages for Salt is done via the ``-x`` option:
|
||||
|
||||
.. code:: console
|
||||
|
||||
sh bootstrap-salt.sh -x python3
|
||||
|
||||
See the ``-x`` option for more information.
|
||||
|
||||
The earliest release of Salt that supports Python3 is `2018.3.4`.
|
||||
|
||||
Tornado 5/6 Workaround
|
||||
----------------------
|
||||
Salt does not support tornado>=5.0 currently. This support will be included in an upcoming release.
|
||||
In order to work around this requirement on OSs that no longer have the tornado 4 package
|
||||
available in their repositories we are pip installing tornado<5.0 in the bootstrap script. This
|
||||
requires the user to pass -P to the bootstrap script if installing via git to ensure tornado is pip
|
||||
installed. If a user does not pass this argument they will be warned that it is required for the
|
||||
tornado 5 workaround. So far the OSs that are using this workaround are Debian 10, Centos 8 and
|
||||
Fedora 31.
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
|
@ -649,33 +587,4 @@ The ``Dockerfile`` here inherits the Ubuntu 14.04 public image with Upstart conf
|
|||
system. Use it as an example or starting point of how to make your own Docker images with suitable
|
||||
Salt components, custom configurations, and even `pre-accepted Minion keys`_ already installed.
|
||||
|
||||
Updating Drone Pipelines
|
||||
========================
|
||||
|
||||
You should install and configure the drone-cli as shown here: https://docs.drone.io/cli/install/
|
||||
|
||||
Make edits to .drone.jsonnet and then save them into the .drone.yml by doing the following:
|
||||
|
||||
.. code:: console
|
||||
|
||||
drone jsonnet --format --stream
|
||||
drone sign saltstack/salt-bootstrap --save
|
||||
|
||||
.. _Contributing Guidelines: https://github.com/saltstack/salt-bootstrap/blob/develop/CONTRIBUTING.md
|
||||
.. _Docker: https://www.docker.com/
|
||||
.. _`pre-accepted Minion keys`: https://docs.saltproject.io/en/latest/topics/tutorials/preseed_key.html
|
||||
.. _`read the source`: https://github.com/saltstack/salt-bootstrap/blob/develop/bootstrap-salt.sh
|
||||
.. _`Salt`: https://saltproject.io/
|
||||
.. _`Salt's Supported Operating Systems`: http://get.saltstack.com/rs/304-PHQ-615/images/SaltStack-Supported-Operating-Systems.pdf
|
||||
.. _`SaltStack's corporate repository`: https://repo.saltproject.io/
|
||||
.. _`SaltStack's Debian repository`: http://repo.saltproject.io/#debian
|
||||
.. _`SaltStack's Ubuntu repository`: http://repo.saltproject.io/#ubuntu
|
||||
.. _`Ubuntu's release schedule`: https://wiki.ubuntu.com/Releases
|
||||
.. _Vagrant: http://www.vagrantup.com
|
||||
.. _hardening salt: https://docs.saltproject.io/en/latest/topics/hardening.html
|
||||
|
||||
.. |build| image:: https://github.com/saltstack/salt-bootstrap/workflows/Testing/badge.svg?branch=develop
|
||||
:target: https://github.com/saltstack/salt-bootstrap/actions?query=branch%3Adevelop
|
||||
:alt: Build Status
|
||||
|
||||
.. vim: fenc=utf-8 spell spl=en cc=100 tw=99 fo=want sts=2 sw=2 et
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#======================================================================================================================
|
||||
set -o nounset # Treat unset variables as an error
|
||||
|
||||
__ScriptVersion="2023.08.03"
|
||||
__ScriptVersion="2023.11.07"
|
||||
__ScriptName="bootstrap-salt.sh"
|
||||
|
||||
__ScriptFullName="$0"
|
||||
|
@ -1523,7 +1523,7 @@ __check_dpkg_architecture() {
|
|||
else
|
||||
# Saltstack official repository has arm64 metadata beginning with Debian 11,
|
||||
# use amd64 repositories on arm64 for anything older, since all pkgs are arch-independent
|
||||
if [ "$DISTRO_NAME_L" = "debian" ] || [ "$DISTRO_MAJOR_VERSION" -lt 11 ]; then
|
||||
if [ "$DISTRO_NAME_L" = "debian" ] && [ "$DISTRO_MAJOR_VERSION" -lt 11 ]; then
|
||||
__REPO_ARCH="amd64"
|
||||
else
|
||||
__REPO_ARCH="arm64"
|
||||
|
@ -1709,6 +1709,14 @@ __debian_codename_translation() {
|
|||
"11")
|
||||
DISTRO_CODENAME="bullseye"
|
||||
;;
|
||||
"12")
|
||||
DISTRO_CODENAME="bookworm"
|
||||
# FIXME - TEMPORARY
|
||||
# use bullseye packages until bookworm packages are available
|
||||
DISTRO_CODENAME="bullseye"
|
||||
DISTRO_MAJOR_VERSION=11
|
||||
rv=11
|
||||
;;
|
||||
*)
|
||||
DISTRO_CODENAME="stretch"
|
||||
;;
|
||||
|
@ -2196,7 +2204,7 @@ __dnf_install_noinput() {
|
|||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: __tdnf_install_noinput
|
||||
# DESCRIPTION: (DRY) dnf install with noinput options
|
||||
# DESCRIPTION: (DRY) tdnf install with noinput options
|
||||
#----------------------------------------------------------------------------------------------------------------------
|
||||
__tdnf_install_noinput() {
|
||||
|
||||
|
@ -7033,15 +7041,17 @@ install_photon_git_deps() {
|
|||
"${__python}" -m pip install "${dep}" || return 1
|
||||
done
|
||||
else
|
||||
__PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc"
|
||||
__PACKAGES="python${PY_PKG_VER}-devel python${PY_PKG_VER}-pip python${PY_PKG_VER}-setuptools gcc glibc-devel linux-devel.x86_64"
|
||||
# shellcheck disable=SC2086
|
||||
__tdnf_install_noinput ${__PACKAGES} || return 1
|
||||
fi
|
||||
|
||||
# Need newer version of setuptools on Photon
|
||||
_setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}"
|
||||
echodebug "Running '${_PY_EXE} -m pip --upgrade install ${_setuptools_dep}'"
|
||||
${_PY_EXE} -m pip install --upgrade "${_setuptools_dep}"
|
||||
if [ "${DISTRO_MAJOR_VERSION}" -gt 3 ]; then
|
||||
# Need newer version of setuptools on Photon
|
||||
_setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}"
|
||||
echodebug "Running '${_PY_EXE} -m pip --upgrade install ${_setuptools_dep}'"
|
||||
${_PY_EXE} -m pip install --upgrade "${_setuptools_dep}"
|
||||
fi
|
||||
|
||||
# Let's trigger config_salt()
|
||||
if [ "$_TEMP_CONFIG_DIR" = "null" ]; then
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
#
|
||||
# This file is autogenerated by pip-compile with Python 3.9
|
||||
# This file is autogenerated by pip-compile with Python 3.10
|
||||
# by the following command:
|
||||
#
|
||||
# pip-compile requirements/release.in
|
||||
# pip-compile '.\requirements\release.in'
|
||||
#
|
||||
attrs==22.2.0
|
||||
attrs==23.1.0
|
||||
# via python-tools-scripts
|
||||
boto3==1.26.110
|
||||
# via -r requirements/release.in
|
||||
botocore==1.29.110
|
||||
boto3==1.28.79
|
||||
# via -r .\requirements\release.in
|
||||
botocore==1.31.79
|
||||
# via
|
||||
# boto3
|
||||
# s3transfer
|
||||
certifi==2023.07.22
|
||||
certifi==2023.7.22
|
||||
# via requests
|
||||
cfgv==3.3.1
|
||||
cfgv==3.4.0
|
||||
# via pre-commit
|
||||
charset-normalizer==3.1.0
|
||||
charset-normalizer==3.3.2
|
||||
# via requests
|
||||
distlib==0.3.6
|
||||
distlib==0.3.7
|
||||
# via virtualenv
|
||||
filelock==3.11.0
|
||||
filelock==3.13.1
|
||||
# via virtualenv
|
||||
identify==2.5.22
|
||||
identify==2.5.31
|
||||
# via pre-commit
|
||||
idna==3.4
|
||||
# via requests
|
||||
|
@ -30,39 +30,39 @@ jmespath==1.0.1
|
|||
# via
|
||||
# boto3
|
||||
# botocore
|
||||
markdown-it-py==2.2.0
|
||||
markdown-it-py==3.0.0
|
||||
# via rich
|
||||
mdurl==0.1.2
|
||||
# via markdown-it-py
|
||||
nodeenv==1.7.0
|
||||
nodeenv==1.8.0
|
||||
# via pre-commit
|
||||
platformdirs==3.2.0
|
||||
platformdirs==3.11.0
|
||||
# via virtualenv
|
||||
pre-commit==3.2.2
|
||||
# via -r requirements/release.in
|
||||
pygments==2.15.0
|
||||
pre-commit==3.5.0
|
||||
# via -r .\requirements\release.in
|
||||
pygments==2.16.1
|
||||
# via rich
|
||||
python-dateutil==2.8.2
|
||||
# via botocore
|
||||
python-tools-scripts==0.12.0
|
||||
# via -r requirements/release.in
|
||||
pyyaml==6.0
|
||||
python-tools-scripts==0.18.1
|
||||
# via -r .\requirements\release.in
|
||||
pyyaml==6.0.1
|
||||
# via pre-commit
|
||||
requests==2.28.2
|
||||
requests==2.31.0
|
||||
# via python-tools-scripts
|
||||
rich==13.3.3
|
||||
rich==13.6.0
|
||||
# via python-tools-scripts
|
||||
s3transfer==0.6.0
|
||||
s3transfer==0.7.0
|
||||
# via boto3
|
||||
six==1.16.0
|
||||
# via python-dateutil
|
||||
typing-extensions==4.5.0
|
||||
typing-extensions==4.8.0
|
||||
# via python-tools-scripts
|
||||
urllib3==1.26.15
|
||||
urllib3==2.0.7
|
||||
# via
|
||||
# botocore
|
||||
# requests
|
||||
virtualenv==20.21.0
|
||||
virtualenv==20.24.6
|
||||
# via pre-commit
|
||||
|
||||
# The following packages are considered to be unsafe in a requirements file:
|
||||
|
|
162
salt-quick-start.ps1
Normal file
162
salt-quick-start.ps1
Normal file
|
@ -0,0 +1,162 @@
|
|||
function Convert-PSObjectToHashtable {
|
||||
param (
|
||||
[Parameter(ValueFromPipeline)]
|
||||
$InputObject
|
||||
)
|
||||
if ($null -eq $InputObject) { return $null }
|
||||
|
||||
$is_enum = $InputObject -is [System.Collections.IEnumerable]
|
||||
$not_string = $InputObject -isnot [string]
|
||||
if ($is_enum -and $not_string) {
|
||||
$collection = @(
|
||||
foreach ($object in $InputObject) {
|
||||
Convert-PSObjectToHashtable $object
|
||||
}
|
||||
)
|
||||
|
||||
Write-Host -NoEnumerate $collection
|
||||
} elseif ($InputObject -is [PSObject]) {
|
||||
$hash = @{}
|
||||
|
||||
foreach ($property in $InputObject.PSObject.Properties) {
|
||||
$hash[$property.Name] = Convert-PSObjectToHashtable $property.Value
|
||||
}
|
||||
|
||||
$hash
|
||||
} else {
|
||||
$InputObject
|
||||
}
|
||||
}
|
||||
|
||||
function Expand-ZipFile {
|
||||
# Extract a zip file
|
||||
#
|
||||
# Used by:
|
||||
# - Install-SaltMinion
|
||||
#
|
||||
# Args:
|
||||
# ZipFile (string): The file to extract
|
||||
# Destination (string): The location to extract to
|
||||
#
|
||||
# Error:
|
||||
# Sets the failed status and exits with a scriptFailed exit code
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string] $ZipFile,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string] $Destination
|
||||
)
|
||||
|
||||
if (!(Test-Path -Path $Destination)) {
|
||||
Write-Debug "Creating missing directory: $Destination"
|
||||
New-Item -ItemType directory -Path $Destination
|
||||
}
|
||||
Write-Debug "Unzipping '$ZipFile' to '$Destination'"
|
||||
if ($PSVersionTable.PSVersion.Major -ge 5) {
|
||||
# PowerShell 5 introduced Expand-Archive
|
||||
Write-Debug "Using Expand-Archive to unzip"
|
||||
try{
|
||||
Expand-Archive -Path $ZipFile -DestinationPath $Destination -Force
|
||||
} catch {
|
||||
Write-Debug "Failed to unzip $ZipFile : $_"
|
||||
exit 1
|
||||
}
|
||||
} else {
|
||||
# This method will work with older versions of powershell, but it is
|
||||
# slow
|
||||
Write-Debug "Using Shell.Application to unzip"
|
||||
$objShell = New-Object -Com Shell.Application
|
||||
$objZip = $objShell.NameSpace($ZipFile)
|
||||
try{
|
||||
foreach ($item in $objZip.Items()) {
|
||||
$objShell.Namespace($Destination).CopyHere($item, 0x14)
|
||||
}
|
||||
} catch {
|
||||
Write-Debug "Failed to unzip $ZipFile : $_"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
Write-Debug "Finished unzipping '$ZipFile' to '$Destination'"
|
||||
}
|
||||
|
||||
|
||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls12'
|
||||
|
||||
$global:ProgressPreference = 'SilentlyContinue'
|
||||
|
||||
$RepoUrl = "https://repo.saltproject.io/salt/py3/onedir"
|
||||
|
||||
if ([IntPtr]::Size -eq 4) {
|
||||
$arch = "x86"
|
||||
} else {
|
||||
$arch = "amd64"
|
||||
}
|
||||
$enc = [System.Text.Encoding]::UTF8
|
||||
try {
|
||||
$response = Invoke-WebRequest -Uri "$RepoUrl/repo.json" -UseBasicParsing
|
||||
if ($response.Content.GetType().Name -eq "Byte[]") {
|
||||
$psobj = $enc.GetString($response.Content) | ConvertFrom-Json
|
||||
|
||||
} else {
|
||||
$psobj = $response.Content | ConvertFrom-Json
|
||||
}
|
||||
$hash = Convert-PSObjectToHashtable $psobj
|
||||
} catch {
|
||||
Write-Host "repo.json not found at: $RepoUrl"
|
||||
$hash = @{}
|
||||
}
|
||||
$searchVersion = "latest"
|
||||
if ( $hash.Contains($searchVersion)) {
|
||||
foreach ($item in $hash.($searchVersion).Keys) {
|
||||
if ( $item.EndsWith(".zip") ) {
|
||||
if ( $item.Contains($arch) ) {
|
||||
$saltFileName = $hash.($searchVersion).($item).name
|
||||
$saltVersion = $hash.($searchVersion).($item).version
|
||||
$saltSha512 = $hash.($searchVersion).($item).SHA512
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( $saltFileName -and $saltVersion -and $saltSha512 ) {
|
||||
if ( $RepoUrl.Contains("minor") ) {
|
||||
$saltFileUrl = @($RepoUrl, $saltVersion, $saltFileName) -join "/"
|
||||
} else {
|
||||
$saltFileUrl = @($RepoUrl, "minor", $saltVersion, $saltFileName) -join "/"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "* INFO: Downloading Salt"
|
||||
Invoke-WebRequest -Uri $saltFileUrl -OutFile .\salt.zip
|
||||
|
||||
Write-Host "* INFO: Extracting Salt"
|
||||
Expand-ZipFile -ZipFile .\salt.zip -Destination .
|
||||
|
||||
$PATH = $(Get-Location).Path
|
||||
|
||||
$saltfile_contents = @"
|
||||
salt-call:
|
||||
local: True
|
||||
config_dir: $PATH\salt\conf
|
||||
log_file: $PATH\salt\var\log\salt\minion
|
||||
cachedir: $PATH\salt\var\cache\salt
|
||||
file_root: $PATH\salt\srv\salt
|
||||
"@
|
||||
|
||||
Set-Content -Path .\salt\Saltfile -Value $saltfile_contents
|
||||
|
||||
New-Item -Path "$PATH\salt\var\log\salt" -Type Directory -Force | Out-Null
|
||||
New-Item -Path "$PATH\salt\conf" -Type Directory -Force | Out-Null
|
||||
New-Item -Path "$PATH\salt\var\cache\salt" -Type Directory -Force | Out-Null
|
||||
New-Item -Path "$PATH\salt\srv\salt" -Type Directory -Force | Out-Null
|
||||
|
||||
Write-Host "* INFO: Adding Salt to current path"
|
||||
Write-Host "* INFO: $PATH\salt"
|
||||
$env:Path = "$PATH\salt;$env:PATH"
|
||||
|
||||
Write-Host "* INFO: Setting the SALT_SALTFILE environment variable"
|
||||
Write-Host "* INFO: $PATH\salt\Saltfile"
|
||||
$env:SALT_SALTFILE="$PATH\salt\Saltfile"
|
||||
|
||||
Write-Host "* INFO: Create Salt states in $PATH\salt\srv\salt"
|
239
salt-quick-start.sh
Executable file
239
salt-quick-start.sh
Executable file
|
@ -0,0 +1,239 @@
|
|||
#!/bin/sh
|
||||
|
||||
__ScriptName="salt-quick-start.sh"
|
||||
SALT_REPO_URL="https://repo.saltproject.io/salt/py3/onedir"
|
||||
_COLORS=${QS_COLORS:-$(tput colors 2>/dev/null || echo 0)}
|
||||
|
||||
_LOCAL=0
|
||||
_FULL=0
|
||||
_STOP=0
|
||||
|
||||
PWD="$(pwd)"
|
||||
_PATH=${PWD}/salt
|
||||
|
||||
|
||||
__usage() {
|
||||
cat << EOT
|
||||
|
||||
Usage : ${__ScriptName} [options]
|
||||
|
||||
Options:
|
||||
-h Show usage.
|
||||
-f Full setup with a Salt minion and Salt master running.
|
||||
-l Local setup, no Salt minion or Salt master running.
|
||||
-s Attempt to stop a running Salt minion and Salt master.
|
||||
|
||||
EOT
|
||||
} # ---------- end of function __usage ----------
|
||||
|
||||
|
||||
echoinfo() {
|
||||
printf "${GC} * INFO${EC}: %s\\n" "$@";
|
||||
}
|
||||
|
||||
echoerror() {
|
||||
printf "${RC} * ERROR${EC}: %s\\n" "$@" 1>&2;
|
||||
}
|
||||
|
||||
__detect_color_support() {
|
||||
# shellcheck disable=SC2181
|
||||
if [ $? -eq 0 ] && [ "$_COLORS" -gt 2 ]; then
|
||||
RC='\033[1;31m'
|
||||
GC='\033[1;32m'
|
||||
BC='\033[1;34m'
|
||||
YC='\033[1;33m'
|
||||
EC='\033[0m'
|
||||
else
|
||||
RC=""
|
||||
GC=""
|
||||
BC=""
|
||||
YC=""
|
||||
EC=""
|
||||
fi
|
||||
}
|
||||
|
||||
__detect_color_support
|
||||
|
||||
while getopts ':fhls' opt
|
||||
do
|
||||
case "${opt}" in
|
||||
|
||||
h ) __usage; exit 0 ;;
|
||||
l ) _LOCAL=1 ;;
|
||||
f ) _FULL=1 ;;
|
||||
s ) _STOP=1 ;;
|
||||
|
||||
esac # --- end of case ---
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if [[ "${_STOP}" == "1" ]]; then
|
||||
if [[ -f "${_PATH}/var/run/salt-minion.pid" ]]; then
|
||||
echoinfo "Stopping the salt-minion"
|
||||
kill $(cat "${_PATH}/var/run/salt-minion.pid")
|
||||
else
|
||||
echoerror "${_PATH}/var/run/salt-minion.pid not found"
|
||||
fi
|
||||
if [[ -f "${_PATH}/var/run/salt-master.pid" ]]; then
|
||||
echoinfo "Stopping the salt-master"
|
||||
kill $(cat "${_PATH}/var/run/salt-master.pid")
|
||||
else
|
||||
echoerror "${_PATH}/var/run/salt-master.pid not found"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "$_LOCAL" == "1" && "$_FULL" == "1" ]]; then
|
||||
echo "Only specify either local or full"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
__parse_repo_json_jq() {
|
||||
_JSON_FILE="${SALT_REPO_URL}/repo.json"
|
||||
_JSON_VERSION=$(curl -s ${_JSON_FILE} | jq -sr ".[].latest[] | select(.os == \"$1\") | select(.arch == \"$2\").version")
|
||||
}
|
||||
|
||||
__fetch_url() {
|
||||
# shellcheck disable=SC2086
|
||||
curl $_CURL_ARGS -L -s -f -o "$1" "$2" >/dev/null 2>&1 ||
|
||||
wget $_WGET_ARGS -q -O "$1" "$2" >/dev/null 2>&1 ||
|
||||
fetch $_FETCH_ARGS -q -o "$1" "$2" >/dev/null 2>&1 || # FreeBSD
|
||||
fetch -q -o "$1" "$2" >/dev/null 2>&1 || # Pre FreeBSD 10
|
||||
ftp -o "$1" "$2" >/dev/null 2>&1 || # OpenBSD
|
||||
(echoerror "$2 failed to download to $1"; exit 1)
|
||||
}
|
||||
|
||||
__gather_os_info() {
|
||||
OS_NAME=$(uname -s 2>/dev/null)
|
||||
OS_NAME_L=$( echo "$OS_NAME" | tr '[:upper:]' '[:lower:]' )
|
||||
OS_VERSION=$(uname -r)
|
||||
# shellcheck disable=SC2034
|
||||
OS_VERSION_L=$( echo "$OS_VERSION" | tr '[:upper:]' '[:lower:]' )
|
||||
}
|
||||
|
||||
__gather_hardware_info() {
|
||||
if [ -f /proc/cpuinfo ]; then
|
||||
CPU_VENDOR_ID=$(awk '/vendor_id|Processor/ {sub(/-.*$/,"",$3); print $3; exit}' /proc/cpuinfo )
|
||||
elif [ -f /usr/bin/kstat ]; then
|
||||
# SmartOS.
|
||||
# Solaris!?
|
||||
# This has only been tested for a GenuineIntel CPU
|
||||
CPU_VENDOR_ID=$(/usr/bin/kstat -p cpu_info:0:cpu_info0:vendor_id | awk '{print $2}')
|
||||
else
|
||||
CPU_VENDOR_ID=$( sysctl -n hw.model )
|
||||
fi
|
||||
# shellcheck disable=SC2034
|
||||
CPU_VENDOR_ID_L=$( echo "$CPU_VENDOR_ID" | tr '[:upper:]' '[:lower:]' )
|
||||
CPU_ARCH=$(uname -m 2>/dev/null || uname -p 2>/dev/null || echo "unknown")
|
||||
CPU_ARCH_L=$( echo "$CPU_ARCH" | tr '[:upper:]' '[:lower:]' )
|
||||
}
|
||||
|
||||
__gather_hardware_info
|
||||
__gather_os_info
|
||||
|
||||
_DARWIN_ARM=0
|
||||
if [[ "${OS_NAME_L}" == "darwin" ]]; then
|
||||
OS_NAME="macos"
|
||||
# Use x86_64 packages until we are able build arm packages
|
||||
if [[ "${CPU_ARCH_L}" == "arm64" ]]; then
|
||||
CPU_ARCH_L="x86_64"
|
||||
_DARWIN_ARM=1
|
||||
fi
|
||||
else
|
||||
OS_NAME="${OS_NAME_L}"
|
||||
fi
|
||||
|
||||
__parse_repo_json_jq ${OS_NAME} ${CPU_ARCH_L}
|
||||
|
||||
FILE="salt-${_JSON_VERSION}-onedir-${OS_NAME_L}-${CPU_ARCH_L}.tar.xz"
|
||||
URL="${SALT_REPO_URL}/latest/${FILE}"
|
||||
|
||||
if [[ ! -f ${FILE} ]]; then
|
||||
echoinfo "Downloading Salt"
|
||||
__fetch_url "${FILE}" "${URL}"
|
||||
fi
|
||||
|
||||
if [[ ! -d "salt" ]]; then
|
||||
echoinfo "Extracting Salt"
|
||||
tar xf ${FILE}
|
||||
|
||||
# very very hacky, remove ASAP
|
||||
if [[ "${_DARWIN_ARM}" == "1" ]]; then
|
||||
mkdir -p ${_PATH}/opt/openssl/lib
|
||||
ln -s ${_PATH}/lib/libcrypto.dylib ${_PATH}/opt/openssl/lib/libcrypto.dylib
|
||||
fi
|
||||
else
|
||||
echoinfo "A salt directory already exists here, not extracting."
|
||||
fi
|
||||
|
||||
mkdir -p ${_PATH}/etc/salt
|
||||
mkdir -p ${_PATH}/srv/salt
|
||||
|
||||
cat <<EOT >${_PATH}/etc/salt/master
|
||||
root_dir: ${_PATH}
|
||||
file_root: ${_PATH}/srv/salt
|
||||
EOT
|
||||
|
||||
cat <<EOT >${_PATH}/etc/salt/minion
|
||||
root_dir: ${_PATH}
|
||||
master: 127.0.0.1
|
||||
id: minion
|
||||
EOT
|
||||
|
||||
cat <<EOT >${_PATH}/Saltfile
|
||||
salt-call:
|
||||
local: True
|
||||
config_dir: ${_PATH}/etc/salt
|
||||
log_file: ${_PATH}/var/log/salt/minion
|
||||
cachedir: ${_PATH}/var/cache/salt
|
||||
file_root: ${_PATH}/srv/salt
|
||||
|
||||
salt-master:
|
||||
config_dir: ${_PATH}/etc/salt
|
||||
file_root: ${_PATH}/srv/salt
|
||||
|
||||
salt-minion:
|
||||
config_dir: ${_PATH}/etc/salt
|
||||
file_root: ${_PATH}/srv/salt
|
||||
|
||||
salt-key:
|
||||
config_dir: ${_PATH}/etc/salt
|
||||
|
||||
salt:
|
||||
config_dir: ${_PATH}/etc/salt
|
||||
EOT
|
||||
|
||||
PATH_MSG="export PATH=${_PATH}"
|
||||
PATH_MSG+=':$PATH'
|
||||
|
||||
echoinfo "Get started with Salt by running the following commands"
|
||||
echoinfo "Add Salt to current path"
|
||||
echoinfo " ${PATH_MSG}"
|
||||
echoinfo "Use the provided Saltfile"
|
||||
echoinfo " export SALT_SALTFILE=${_PATH}/Saltfile"
|
||||
# very very hacky, remove ASAP
|
||||
if [[ "${_DARWIN_ARM}" == "1" ]]; then
|
||||
echoinfo "Setup HOMEBREW"
|
||||
echoinfo " export HOMEBREW_PREFIX=${_PATH}"
|
||||
fi
|
||||
|
||||
echoinfo "Create Salt states in ${_PATH}/srv/salt"
|
||||
|
||||
if [[ "${_FULL}" == "1" ]]; then
|
||||
|
||||
export PATH="${_PATH}:$PATH"
|
||||
export SALT_SALTFILE="${_PATH}/Saltfile"
|
||||
# very very hacky, remove ASAP
|
||||
if [[ "${_DARWIN_ARM}" == "1" ]]; then
|
||||
export HOMEBREW_PREFIX=${_PATH}
|
||||
fi
|
||||
echoinfo "Starting salt-master"
|
||||
salt-master -d -c ${_PATH}/etc/salt
|
||||
sleep 5
|
||||
echoinfo "Starting salt-minion"
|
||||
salt-minion -d -c ${_PATH}/etc/salt
|
||||
|
||||
echoinfo "Run salt-key -L to see pending minion keys"
|
||||
echoinfo "Run salt-key -a minion to accept the pending minion key"
|
||||
|
||||
fi
|
Loading…
Add table
Reference in a new issue