Merge develop into stable for v2023.11.07 release

This commit is contained in:
Salt Project Packaging 2023-11-07 18:36:20 +00:00
commit 561a376d67
No known key found for this signature in database
GPG key ID: 64CBBC8173D76B3F
8 changed files with 497 additions and 155 deletions

View file

@ -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:

View file

@ -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",

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
View 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
View 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