mirror of
https://github.com/saltstack/salt-bootstrap.git
synced 2025-04-16 09:40: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
|
distro-slug: photon-3
|
||||||
display-name: Photon OS 3
|
display-name: Photon OS 3
|
||||||
timeout: 20
|
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:
|
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",
|
"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 = [
|
SALT_VERSIONS = [
|
||||||
"3003",
|
"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
|
# v2023.08.03
|
||||||
|
|
||||||
## What's Changed
|
## 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:
|
The SHA256 sum of the ``bootstrap-salt.sh`` file, per release, is:
|
||||||
|
|
||||||
|
- 2023.08.03: ``963e559bdb85adecfbbec2c3b81190392bc59b24992e4491e919cd748eeafcb8``
|
||||||
- 2023.07.25: ``eaaaadaed40fe2e791d59a9e48f24449428a35ca61782d9139f1272c05524323``
|
- 2023.07.25: ``eaaaadaed40fe2e791d59a9e48f24449428a35ca61782d9139f1272c05524323``
|
||||||
- 2023.06.28: ``f45f5da8abee27ef385131f5cfa9382d3a15863d0a05688a0404d2f057b27776``
|
- 2023.06.28: ``f45f5da8abee27ef385131f5cfa9382d3a15863d0a05688a0404d2f057b27776``
|
||||||
- 2023.04.26: ``516fa9cc2e258cb8484ff360b9674b46918f657985c21ca9301e42a3dd263d60``
|
- 2023.04.26: ``516fa9cc2e258cb8484ff360b9674b46918f657985c21ca9301e42a3dd263d60``
|
||||||
- 2023.04.21: ``e364428aa7a25f8e2c5e18e36e222351724c6cf35a1d57158f3357cde1e0a0f0``
|
- 2023.04.21: ``e364428aa7a25f8e2c5e18e36e222351724c6cf35a1d57158f3357cde1e0a0f0``
|
||||||
- 2023.04.06: ``994bf7e8bd92fe6d70d291c7562aff299f5651046b4e76dfa506cee0d9bb0843``
|
- 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
|
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`_.
|
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
|
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
|
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.
|
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
|
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``
|
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.
|
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
|
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
|
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
|
.. code:: console
|
||||||
|
|
||||||
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
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:
|
If you want to install a specific release version, based on the Git tags:
|
||||||
|
|
||||||
.. code:: console
|
.. code:: console
|
||||||
|
|
||||||
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
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:
|
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
|
curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
|
||||||
sudo sh bootstrap-salt.sh -M -N git master
|
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
|
.. code:: console
|
||||||
|
|
||||||
|
@ -290,12 +264,12 @@ Installing a specific version from git using ``wget``:
|
||||||
wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
|
wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
|
||||||
sudo sh bootstrap-salt.sh git v3004.1
|
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
|
.. code:: console
|
||||||
|
|
||||||
wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
|
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**
|
**NOTE**
|
||||||
|
|
||||||
|
@ -311,7 +285,7 @@ If you already have Python installed, ``python 2.7``, then it's as easy as:
|
||||||
.. code:: console
|
.. code:: console
|
||||||
|
|
||||||
python -m urllib "https://bootstrap.saltproject.io" > bootstrap-salt.sh
|
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:
|
With python version 2, the following in-line code should always work:
|
||||||
|
|
||||||
|
@ -325,7 +299,7 @@ With python version 3:
|
||||||
.. code:: console
|
.. code:: console
|
||||||
|
|
||||||
python3 -c 'import urllib.request; print(urllib.request.urlopen("https://bootstrap.saltproject.io").read().decode("ascii"))' > bootstrap-salt.sh
|
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
|
Install using fetch
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -382,11 +356,11 @@ Using ``wget`` to install your distribution's stable packages:
|
||||||
|
|
||||||
wget -O - https://bootstrap.saltproject.io | sudo sh
|
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
|
.. 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:
|
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
|
listed below, but is not listed on the official supported operating systems document, the level of
|
||||||
support is "best-effort".
|
support is "best-effort".
|
||||||
|
|
||||||
Since Salt is written in Python, the packages available from `SaltStack's corporate repository`_
|
Since Salt is written in Python, the packages available from the `Salt Project's repository`_ are
|
||||||
are CPU architecture independent and could be installed on any hardware supported by Linux kernel.
|
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
|
However, the Salt Project does package Salt's binary dependencies only for ``x86_64`` (``amd64``)
|
||||||
``AArch32`` (``armhf``). The latter is available only for Debian/Raspbian 8 platforms.
|
and ``AArch64`` (``arm64``).
|
||||||
|
|
||||||
It is recommended to use ``git`` bootstrap mode as described above to install Salt on other
|
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``).
|
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 2012.3 and later
|
||||||
- Amazon Linux 2
|
- Amazon Linux 2
|
||||||
- CentOS 6/7/8
|
- CentOS 7/8/9
|
||||||
- Cloud Linux 6/7
|
- Cloud Linux 6/7
|
||||||
- Fedora 30/31 (install latest stable from standard repositories)
|
- Fedora 36/37/38 (install latest stable from standard repositories)
|
||||||
- Oracle Linux 6/7
|
- Oracle Linux 7/8
|
||||||
- Red Hat Enterprise Linux 6/7/8
|
- Red Hat Enterprise Linux 7/8/9
|
||||||
- Scientific Linux 6/7
|
- Scientific Linux 7/8/9
|
||||||
|
|
||||||
|
|
||||||
SUSE family
|
SUSE family
|
||||||
|
@ -489,7 +463,7 @@ in combination with the ``git`` installation method.
|
||||||
|
|
||||||
.. code:: console
|
.. code:: console
|
||||||
|
|
||||||
sh bootstrap-salt.sh -x python2 git v2018.3.2
|
sh bootstrap-salt.sh -x python3 git v3006.1
|
||||||
|
|
||||||
|
|
||||||
Ubuntu and derivatives
|
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
|
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
|
repositories are not provided on the `Salt Project's Ubuntu repository`_ for the non-LTS release,
|
||||||
bootstrap script will attempt to install the packages for the most closely related LTS Ubuntu
|
the bootstrap script will attempt to install the packages for the most closely related LTS Ubuntu
|
||||||
release instead.
|
release instead.
|
||||||
|
|
||||||
For example, when installing Salt on Ubuntu 21.10, the bootstrap script will setup the repository
|
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
|
Non-LTS Ubuntu releases are not supported once the release reaches End-of-Life as defined by
|
||||||
`Ubuntu's release schedule`_.
|
`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
|
For information on how to add support for a currently unsupported distribution, please refer to the
|
||||||
`Contributing Guidelines`_.
|
`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
|
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
|
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.
|
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
|
.. 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
|
set -o nounset # Treat unset variables as an error
|
||||||
|
|
||||||
__ScriptVersion="2023.08.03"
|
__ScriptVersion="2023.11.07"
|
||||||
__ScriptName="bootstrap-salt.sh"
|
__ScriptName="bootstrap-salt.sh"
|
||||||
|
|
||||||
__ScriptFullName="$0"
|
__ScriptFullName="$0"
|
||||||
|
@ -1523,7 +1523,7 @@ __check_dpkg_architecture() {
|
||||||
else
|
else
|
||||||
# Saltstack official repository has arm64 metadata beginning with Debian 11,
|
# Saltstack official repository has arm64 metadata beginning with Debian 11,
|
||||||
# use amd64 repositories on arm64 for anything older, since all pkgs are arch-independent
|
# 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"
|
__REPO_ARCH="amd64"
|
||||||
else
|
else
|
||||||
__REPO_ARCH="arm64"
|
__REPO_ARCH="arm64"
|
||||||
|
@ -1709,6 +1709,14 @@ __debian_codename_translation() {
|
||||||
"11")
|
"11")
|
||||||
DISTRO_CODENAME="bullseye"
|
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"
|
DISTRO_CODENAME="stretch"
|
||||||
;;
|
;;
|
||||||
|
@ -2196,7 +2204,7 @@ __dnf_install_noinput() {
|
||||||
|
|
||||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||||
# NAME: __tdnf_install_noinput
|
# NAME: __tdnf_install_noinput
|
||||||
# DESCRIPTION: (DRY) dnf install with noinput options
|
# DESCRIPTION: (DRY) tdnf install with noinput options
|
||||||
#----------------------------------------------------------------------------------------------------------------------
|
#----------------------------------------------------------------------------------------------------------------------
|
||||||
__tdnf_install_noinput() {
|
__tdnf_install_noinput() {
|
||||||
|
|
||||||
|
@ -7033,15 +7041,17 @@ install_photon_git_deps() {
|
||||||
"${__python}" -m pip install "${dep}" || return 1
|
"${__python}" -m pip install "${dep}" || return 1
|
||||||
done
|
done
|
||||||
else
|
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
|
# shellcheck disable=SC2086
|
||||||
__tdnf_install_noinput ${__PACKAGES} || return 1
|
__tdnf_install_noinput ${__PACKAGES} || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Need newer version of setuptools on Photon
|
if [ "${DISTRO_MAJOR_VERSION}" -gt 3 ]; then
|
||||||
_setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}"
|
# Need newer version of setuptools on Photon
|
||||||
echodebug "Running '${_PY_EXE} -m pip --upgrade install ${_setuptools_dep}'"
|
_setuptools_dep="setuptools>=${_MINIMUM_SETUPTOOLS_VERSION}"
|
||||||
${_PY_EXE} -m pip install --upgrade "${_setuptools_dep}"
|
echodebug "Running '${_PY_EXE} -m pip --upgrade install ${_setuptools_dep}'"
|
||||||
|
${_PY_EXE} -m pip install --upgrade "${_setuptools_dep}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Let's trigger config_salt()
|
# Let's trigger config_salt()
|
||||||
if [ "$_TEMP_CONFIG_DIR" = "null" ]; then
|
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:
|
# 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
|
# via python-tools-scripts
|
||||||
boto3==1.26.110
|
boto3==1.28.79
|
||||||
# via -r requirements/release.in
|
# via -r .\requirements\release.in
|
||||||
botocore==1.29.110
|
botocore==1.31.79
|
||||||
# via
|
# via
|
||||||
# boto3
|
# boto3
|
||||||
# s3transfer
|
# s3transfer
|
||||||
certifi==2023.07.22
|
certifi==2023.7.22
|
||||||
# via requests
|
# via requests
|
||||||
cfgv==3.3.1
|
cfgv==3.4.0
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
charset-normalizer==3.1.0
|
charset-normalizer==3.3.2
|
||||||
# via requests
|
# via requests
|
||||||
distlib==0.3.6
|
distlib==0.3.7
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.11.0
|
filelock==3.13.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
identify==2.5.22
|
identify==2.5.31
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
idna==3.4
|
idna==3.4
|
||||||
# via requests
|
# via requests
|
||||||
|
@ -30,39 +30,39 @@ jmespath==1.0.1
|
||||||
# via
|
# via
|
||||||
# boto3
|
# boto3
|
||||||
# botocore
|
# botocore
|
||||||
markdown-it-py==2.2.0
|
markdown-it-py==3.0.0
|
||||||
# via rich
|
# via rich
|
||||||
mdurl==0.1.2
|
mdurl==0.1.2
|
||||||
# via markdown-it-py
|
# via markdown-it-py
|
||||||
nodeenv==1.7.0
|
nodeenv==1.8.0
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
platformdirs==3.2.0
|
platformdirs==3.11.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pre-commit==3.2.2
|
pre-commit==3.5.0
|
||||||
# via -r requirements/release.in
|
# via -r .\requirements\release.in
|
||||||
pygments==2.15.0
|
pygments==2.16.1
|
||||||
# via rich
|
# via rich
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
# via botocore
|
# via botocore
|
||||||
python-tools-scripts==0.12.0
|
python-tools-scripts==0.18.1
|
||||||
# via -r requirements/release.in
|
# via -r .\requirements\release.in
|
||||||
pyyaml==6.0
|
pyyaml==6.0.1
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
requests==2.28.2
|
requests==2.31.0
|
||||||
# via python-tools-scripts
|
# via python-tools-scripts
|
||||||
rich==13.3.3
|
rich==13.6.0
|
||||||
# via python-tools-scripts
|
# via python-tools-scripts
|
||||||
s3transfer==0.6.0
|
s3transfer==0.7.0
|
||||||
# via boto3
|
# via boto3
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via python-dateutil
|
# via python-dateutil
|
||||||
typing-extensions==4.5.0
|
typing-extensions==4.8.0
|
||||||
# via python-tools-scripts
|
# via python-tools-scripts
|
||||||
urllib3==1.26.15
|
urllib3==2.0.7
|
||||||
# via
|
# via
|
||||||
# botocore
|
# botocore
|
||||||
# requests
|
# requests
|
||||||
virtualenv==20.21.0
|
virtualenv==20.24.6
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# 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