Giter VIP home page Giter VIP logo

salt-bootstrap's Introduction

Bootstrapping Salt

|build|

Before `Salt`_ can be used for provisioning on the desired machine, the binaries need to be installed. Since `Salt`_ supports many different distributions and versions of operating systems, the `Salt`_ installation process is handled by this shell script bootstrap-salt.sh. This script runs through a series of checks to determine operating system type and version to then install the `Salt`_ binaries using the appropriate methods. For Windows, use the bootstrap-salt.ps1 script.

NOTE

This README file is not the absolute truth as to what the bootstrap script is capable of. For that, please read the generated help by passing -h to the script or even better, `read the source`_.

Also, to secure your Salt installation, check out these instructions for `hardening salt`_.

Older versions of Salt prior to 3006 are no longer supported by this bootstrap script as they have reached their End-Of-Life. Only onedir-based architecture versions of Salt are supported by this bootstrap script.

In every two-step installation example, you would be well-served to verify against the SHA256 sum of the downloaded bootstrap-salt.sh file.

The SHA256 sum of the bootstrap-salt.sh file, per release, is:

  • 2024.07.23: 7212b6b497b5c3d2bf15bfe5301625ec7bc1bf3e2949cd47d8e2073614935bf8
  • 2024.07.18: 92a74e7ff8a9032a7713c2b3955991d66aaca08a4eb9494ce3dd66b5044f6bc3
  • 2024.07.16: 4f76d1549c71d696a605f97645d8633b6269c4d9ae54b1fbdfedca1dcf893e7a
  • 2024.07.12: 526f4a5383db308081a120e26988679238ca6add4bf7a82120cbe71d57ab826e
  • 2024.04.03: 450ba5cde4af8d6cb5c56c66791f87b918bcda70ccdfb10abf3cc294143c8073
  • 2024.01.04: cebcbc67895e238d1cf0024922a7fe5c772b9aaba346490c8fa6193bb0d993d4
  • 2023.11.16: 3757ed82161113fed4c711fd7332e922265eeeb54e6e4f657a08ea82d57cc3a2
  • 2023.11.07: 91f8a3bfb8b14476f7793c7f20cec7bfc638c10c073786f9a8904a858a929784
  • 2023.08.03: 963e559bdb85adecfbbec2c3b81190392bc59b24992e4491e919cd748eeafcb8
  • 2023.07.25: eaaaadaed40fe2e791d59a9e48f24449428a35ca61782d9139f1272c05524323
  • 2023.06.28: f45f5da8abee27ef385131f5cfa9382d3a15863d0a05688a0404d2f057b27776
  • 2023.04.26: 516fa9cc2e258cb8484ff360b9674b46918f657985c21ca9301e42a3dd263d60
  • 2023.04.21: e364428aa7a25f8e2c5e18e36e222351724c6cf35a1d57158f3357cde1e0a0f0
  • 2023.04.06: 994bf7e8bd92fe6d70d291c7562aff299f5651046b4e76dfa506cee0d9bb0843

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.

There are also .sha256 files for verifying against in the repo for the stable branch. You can also get the correct sha256 sum for the stable release from https://bootstrap.saltproject.io/sha256 and https://winbootstrap.saltproject.io/sha256

The Salt Bootstrap project is open and encouraging to code contributions. Please review the `Contributing Guidelines`_ for information on filing issues, fixing bugs, and submitting features.

The `Contributing Guidelines`_ also contain information about the Bootstrap release cadence and process.

To view the latest options and descriptions for salt-bootstrap, use -h and the terminal:

./salt-bootstrap.sh -h

Usage :  bootstrap-salt.sh [options] <install-type> [install-type-args]

Installation types:
  - stable              Install latest stable release. This is the default
                        install type
  - stable [branch]     Install latest version on a branch. Only supported
                        for packages available at repo.saltproject.io
  - stable [version]    Install a specific version. Only supported for
                        packages available at repo.saltproject.io
                        To pin a 3xxx minor version, specify it as 3xxx.0
  - testing             RHEL-family specific: configure EPEL testing repo
  - git                 Install from the head of the master branch
  - git [ref]           Install from any git ref (such as a branch, tag, or
                        commit)

Examples:
  - bootstrap-salt.sh
  - bootstrap-salt.sh stable
  - bootstrap-salt.sh stable 3006.7
  - bootstrap-salt.sh stable v3006.8
  - bootstrap-salt.sh testing
  - bootstrap-salt.sh git
  - bootstrap-salt.sh git 3007.1
  - bootstrap-salt.sh git v3007.1
  - bootstrap-salt.sh git 06f249901a2e2f1ed310d58ea3921a129f214358

Options:
  -h  Display this message
  -v  Display script version
  -n  No colours
  -D  Show debug output
  -c  Temporary configuration directory
  -g  Salt Git repository URL. Default: https://github.com/saltstack/salt.git
  -w  Install packages from downstream package repository rather than
      upstream, saltstack package repository. This is currently only
      implemented for SUSE.
  -k  Temporary directory holding the minion keys which will pre-seed
      the master.
  -s  Sleep time used when waiting for daemons to start, restart and when
      checking for the services running. Default: 3
  -L  Also install salt-cloud and required python-libcloud package
  -M  Also install salt-master
  -S  Also install salt-syndic
  -W  Also install salt-api
  -N  Do not install salt-minion
  -X  Do not start daemons after installation
  -d  Disables checking if Salt services are enabled to start on system boot.
      You can also do this by touching /tmp/disable_salt_checks on the target
      host. Default: ${BS_FALSE}
  -P  Allow pip based installations. On some distributions the required salt
      packages or its dependencies are not available as a package for that
      distribution. Using this flag allows the script to use pip as a last
      resort method. NOTE: This only works for functions which actually
      implement pip based installations.
  -U  If set, fully upgrade the system prior to bootstrapping Salt
  -I  If set, allow insecure connections while downloading any files. For
      example, pass '--no-check-certificate' to 'wget' or '--insecure' to
      'curl'. On Debian and Ubuntu, using this option with -U allows obtaining
      GnuPG archive keys insecurely if distro has changed release signatures.
  -F  Allow copied files to overwrite existing (config, init.d, etc)
  -K  If set, keep the temporary files in the temporary directories specified
      with -c and -k
  -C  Only run the configuration function. Implies -F (forced overwrite).
      To overwrite Master or Syndic configs, -M or -S, respectively, must
      also be specified. Salt installation will be ommitted, but some of the
      dependencies could be installed to write configuration with -j or -J.
  -A  Pass the salt-master DNS name or IP. This will be stored under
      ${BS_SALT_ETC_DIR}/minion.d/99-master-address.conf
  -i  Pass the salt-minion id. This will be stored under
      ${BS_SALT_ETC_DIR}/minion_id
  -p  Extra-package to install while installing Salt dependencies. One package
      per -p flag. You are responsible for providing the proper package name.
  -H  Use the specified HTTP proxy for all download URLs (including https://).
      For example: http://myproxy.example.com:3128
  -b  Assume that dependencies are already installed and software sources are
      set up. If git is selected, git tree is still checked out as dependency
      step.
  -f  Force shallow cloning for git installations.
      This may result in an "n/a" in the version number.
  -l  Disable ssl checks. When passed, switches "https" calls to "http" where
      possible.
  -V  Install Salt into virtualenv
      (only available for Ubuntu based distributions)
  -a  Pip install all Python pkg dependencies for Salt. Requires -V to install
      all pip pkgs into the virtualenv.
      (Only available for Ubuntu based distributions)
  -r  Disable all repository configuration performed by this script. This
      option assumes all necessary repository configuration is already present
      on the system.
  -R  Specify a custom repository URL. Assumes the custom repository URL
      points to a repository that mirrors Salt packages located at
      repo.saltproject.io. The option passed with -R replaces the
      "repo.saltproject.io". If -R is passed, -r is also set. Currently only
      works on CentOS/RHEL and Debian based distributions.
  -J  Replace the Master config file with data passed in as a JSON string. If
      a Master config file is found, a reasonable effort will be made to save
      the file with a ".bak" extension. If used in conjunction with -C or -F,
      no ".bak" file will be created as either of those options will force
      a complete overwrite of the file.
  -j  Replace the Minion config file with data passed in as a JSON string. If
      a Minion config file is found, a reasonable effort will be made to save
      the file with a ".bak" extension. If used in conjunction with -C or -F,
      no ".bak" file will be created as either of those options will force
      a complete overwrite of the file.
  -q  Quiet salt installation from git (setup.py install -q)
  -x  Changes the Python version used to install Salt (default: Python 3)
      Python 2.7 is not longer supported.
  -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 is not needed when running these commands as the root user.

NOTE

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 the Salt Project's repository. See first example in the Install using wget section.

If you want to install a package of a specific release version, from the Salt Project repo:

curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -P stable 3006.1

If you want to install a specific release version, based on the Git tags:

curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh git v3006.1

Using curl to install latest development version from GitHub:

curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh git master

To install a specific branch from a Git fork:

curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -g https://github.com/myuser/salt.git git mybranch

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 Salt Project repo:

PROXY='http://user:[email protected]:3128'
curl -o bootstrap-salt.sh -L -x "$PROXY" https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -P -H "$PROXY" stable

If your host has Internet access only via HTTP proxy, installing via Git:

PROXY='http://user:[email protected]:3128'
curl -o bootstrap-salt.sh -L -x "$PROXY" https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -H "$PROXY" git

Using wget to install your distribution's stable packages:

wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh

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 Salt Project repo using wget:

wget -O bootstrap-salt.sh https://bootstrap.saltproject.io
sudo sh bootstrap-salt.sh -P stable 3006.1

NOTE

On the above examples we added -P which will allow PIP packages to be installed if required. However, the -P flag is not necessary for Git-based bootstraps.

If you already have Python installed, python 3.10, then it's as easy as:

python -m urllib "https://bootstrap.saltproject.io" > bootstrap-salt.sh
sudo sh bootstrap-salt.sh -P stable 3006.1

With python version 3:

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 v3006.1

Note: Python 2.x is no longer supported given it reached it's End-Of-Life Jan. 1st, 2020

The following examples illustrate how to install Salt via a one-liner.

NOTE

Warning! These methods do not involve a verification step and assume that the delivered file is trustworthy.

Any of the examples above which use two lines can be made to run in a single-line configuration with minor modifications.

Installing the latest stable release of Salt (default):

curl -L https://bootstrap.saltproject.io | sudo sh

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 Salt Project repo:

curl -L https://bootstrap.saltproject.io | sudo sh -s -- stable 3006.8

Installing the latest master branch of Salt from git:

curl -L https://bootstrap.saltproject.io | sudo sh -s -- git master

Note: use of git is recommended for development environments, for example: testing new features of Salt which have not yet been released. It is recommended that production environments should use stable.

Using PowerShell to install latest stable version:

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls12'
Invoke-WebRequest -Uri https://winbootstrap.saltproject.io -OutFile "$env:TEMP\bootstrap-salt.ps1"
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
& "$env:TEMP\bootstrap-salt.ps1"

Display information about the install script parameters:

Get-Help $env:TEMP\bootstrap-salt.ps1 -Detailed

Using cygwin to install latest stable version:

curl -o bootstrap-salt.ps1 -L https://winbootstrap.saltproject.io
"/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ./bootstrap-salt.ps1"

The salt-bootstrap script officially supports the distributions outlined in Salt's Supported Operating Systems document, (BSD-based OSs, Solaris and AIX are no longer supported). The operating systems listed below should reflect this document but may become out of date. If an operating system is 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 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) or ARM EABI (armel). You also may need to disable repository configuration and allow pip installations by providing -r and -P options to the bootstrap script, i.e.:

sudo sh bootstrap-salt.sh -r -P git master

NOTE

Bootstrap may fail to install Salt on the cutting-edge version of distributions with frequent release cycles such as: Amazon Linux, Fedora, openSUSE Tumbleweed, or Ubuntu non-LTS. Check the versions from the list below. Also, see the `Unsupported Distro`_ section.

  • Cumulus Linux 2/3
  • Debian GNU/Linux 9/10/11/12
  • Devuan GNU/Linux 1/2/3/4/5
  • Kali Linux 1.0 (based on Debian 7)
  • Linux Mint Debian Edition 1 (based on Debian 8)
  • Raspbian 8 (armhf packages) and 9 (using git installation mode only)
  • Amazon Linux 2012.3 and later
  • Amazon Linux 2
  • Amazon Linux 2023
  • CentOS 7/8/9
  • Cloud Linux 6/7
  • Fedora 38/39/40 (install latest stable from standard repositories)
  • Oracle Linux 7/8/9
  • Red Hat Enterprise Linux 7/8/9
  • Scientific Linux 7/8/9
  • openSUSE Leap 15 (see note below)
  • openSUSE Leap 42.3
  • openSUSE Tumbleweed 2015
  • SUSE Linux Enterprise Server 11 SP4, 12 SP2

NOTE: Leap 15 installs Python 3 Salt packages by default. Salt is packaged by SUSE, and Leap 15 ships with Python 3.

sh bootstrap-salt.sh -x python3 git v3006.1
  • KDE neon (based on Ubuntu 20.04/22.04/24.04)
  • Linux Mint 17/18

This script provides best-effort support for current, non-LTS Ubuntu releases. If package 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 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`_.

  • Alpine Linux 3.5/edge
  • Arch Linux
  • Gentoo

BSD:

  • No longer supported

SunOS:

  • No longer supported

By default the salt-cloud -p provisioning command will use the latest release from this repository to bootstrap new minions. If

  • your needs are not met by that script,
  • you want to lock salt bootstrap to a specific release, or
  • you want to use an unreleased development version of this script

you can add your bootstrap-salt script to your salt cloud configuration and point to it with the script attribute.

Read more: https://docs.saltproject.io/en/latest/topics/cloud/deploy.html

If you are running a Linux distribution that is not supported yet or is not correctly identified, please run the following commands and report their output when creating an issue:

sudo find /etc/ -name \*-release -print -exec cat {} \;
command lsb_release -a

For information on how to add support for a currently unsupported distribution, please refer to the `Contributing Guidelines`_.

There are a couple of ways to test the bootstrap script. Running the script on a fully-fledged VM is one way. Other options include using Vagrant or Docker.

Vagrant_ can be used to easily test changes on a clean machine. The Vagrantfile defaults to an Ubuntu box. First, install Vagrant, then:

vagrant up
vagrant ssh

It is possible to run and use Salt inside a Docker_ container on Linux machines. Let's prepare the Docker image using the provided Dockerfile to install both a Salt Master and a Salt Minion with the bootstrap script:

docker build -t local/salt-bootstrap .

Start your new container with Salt services up and running:

docker run --detach --name salt --hostname salt local/salt-bootstrap

And finally "enter" the running container and make Salt fully operational:

docker exec -i -t salt /bin/bash
salt-key -A -y

Salt is ready and working in the Docker container with the Minion authenticated on the Master.

NOTE

The Dockerfile here inherits the Ubuntu 20.04 public image. 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-bootstrap's People

Contributors

akoumjian avatar cedwards avatar ch3ll avatar dafyddj avatar dlindquist avatar dmurphy18 avatar ek9 avatar eliasp avatar garethgreenaway avatar geoffgarside avatar github-actions[bot] avatar gtmanfred avatar ijansky avatar jeff350 avatar jensrantil avatar jfindlay avatar kaisforza avatar kgbsd avatar krionbsd avatar max298 avatar myii avatar notpeter avatar rca avatar s0undt3ch avatar saltbot-open avatar techhat avatar thatch45 avatar the-loeki avatar twangboy avatar vutny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

salt-bootstrap's Issues

errexit and checking return codes don't work together

The current head of the bootstrap script is using set -e (errexit), which will cause the whole script to stop running if any statement has a non-zero exit code, even if it's part of a pipeline or you intentionally want to check the return code later.

There are several places in the script where $? is checked. None of them will work because the script will exit early. See the set -e section in this article for how to get around that:

http://www.davidpashley.com/articles/writing-robust-shell-scripts.html

Bootstrap broken on FreeBSD 9

Spun up a fresh vps on Rackspace with FreeBSD 9. Ran

fetch -o - http://bootstrap.saltstack.org | sh

The output:

cmyers-test# fetch -o - http://bootstrap.saltstack.org | sh
-                                               0% of   88 kB    0  Bps *  INFO: PIPED THROUGH sh -- Version 1.5.3

 *  INFO: System Information:
 *  INFO:   CPU:          AMD Opteron(tm) Processor 4170 HE
 *  INFO:   CPU Arch:     amd64
 *  INFO:   OS Name:      FreeBSD
 *  INFO:   OS Version:   9.0-RELEASE
 *  INFO:   Distribution: FreeBSD 9.0

 *  INFO: Installing minion
-                                             100% of   88 kB  763 kBps
 *  INFO: Found function install_freebsd_9_stable_deps
 *  INFO: Found function install_freebsd_9_stable
 *  INFO: Found function install_freebsd_9_stable_post
 *  INFO: Found function install_freebsd_restart_daemons
 *  INFO: Found function daemons_running
 *  INFO: Running install_freebsd_9_stable_deps()
PACKAGESITE: parameter not set

salt-cloud configs in /tmp/ not copied over for Ubuntu

I was testing salt-cloud with an older version of salt-bootstrap (sorry, I don't know which one) and was able to successfully spin up an Ubuntu box on the HP cloud service, and have the configs copied over for me. Then, realizing I was running an older version, I updated to the latest git. Now it still installs salt properly, but does not copy over the config files.

Looking at the source, I'm not sure this will currently work for anything but Debian.

Set master address via flag

I'm wondering if it would be worthwhile to be able to specify the address/name of the master when bootstrapping a minion as the daemons are now started as part of the bootstrapping process.

When bootstrapping a master with a minion perhaps the address/name could be defaulted to "localhost".

Thoughts?

Python 2.6+, one line bootstrap didn't work for me.

On Fedora 17, executed this code:

python -m urllib "http://bootstrap.saltstack.org" | sudo sh -s -- git develop

saw no indication that anything was installed.

Went to this page: http://docs.saltstack.org/en/latest/topics/installation/index.html
Executed this code:

wget -O - http://bootstrap.saltstack.org | sudo sh

got the following output:

$ wget -O - http://bootstrap.saltstack.org | sudo sh
--2013-03-04 11:16:23-- http://bootstrap.saltstack.org/
Resolving bootstrap.saltstack.org (bootstrap.saltstack.org)... 74.208.29.198
Connecting to bootstrap.saltstack.org (bootstrap.saltstack.org)|74.208.29.198|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.github.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh [following]
--2013-03-04 11:16:23-- https://raw.github.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh
Resolving raw.github.com (raw.github.com)... 199.27.74.133
Connecting to raw.github.com (raw.github.com)|199.27.74.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 67158 (66K) [text/plain]
Saving to: `STDOUT'

0% [ ] 0 --.-K/s * INFO: PIPED THROUGH sh -- Version 1.5
100%[======================================>] 67,158 405K/s in 0.2s

2013-03-04 11:16:24 (405 KB/s) - written to stdout [67158/67158]


* INFO: System Information:
* INFO: CPU: GenuineIntel
* INFO: CPU Arch: i686
* INFO: OS Name: Linux
* INFO: OS Version: 3.7.3-101.fc17.i686.PAE
* INFO: Distribution: Fedora 17

* INFO: Installing minion
* INFO: Found function install_fedora_deps
* INFO: Found function install_fedora_stable
* INFO: Found function install_fedora_restart_daemons
* INFO: Running install_fedora_deps()
Loaded plugins: langpacks, presto, refresh-packagekit
Package PyYAML-3.10-3.fc17.i686 already installed and latest version
Package libyaml-0.1.4-2.fc17.i686 already installed and latest version
Package m2crypto-0.21.1-8.fc17.i686 already installed and latest version
Package python-crypto-2.6-1.fc17.i686 already installed and latest version
Package python-jinja2-2.6-2.fc17.noarch already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package python-msgpack.i686 0:0.1.13-1.fc17 will be installed
---> Package python-zmq.i686 0:2.2.0.1-1.fc17 will be installed
--> Processing Dependency: libzmq.so.3 for package: python-zmq-2.2.0.1-1.fc17.i686
--> Running transaction check
---> Package zeromq3.i686 0:3.2.2-2.fc17 will be installed
--> Processing Dependency: libpgm-5.1.so.0 for package: zeromq3-3.2.2-2.fc17.i686
--> Running transaction check
---> Package openpgm.i686 0:5.1.118-3.fc17 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
python-msgpack i686 0.1.13-1.fc17 updates 28 k
python-zmq i686 2.2.0.1-1.fc17 updates 404 k
Installing for dependencies:
openpgm i686 5.1.118-3.fc17 updates 167 k
zeromq3 i686 3.2.2-2.fc17 updates 317 k

Transaction Summary
================================================================================
Install 2 Packages (+2 Dependent packages)

Total download size: 915 k
Installed size: 2.6 M
Downloading Packages:
--------------------------------------------------------------------------------
Total 287 kB/s | 915 kB 00:03
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : openpgm-5.1.118-3.fc17.i686 1/4
Installing : python-msgpack-0.1.13-1.fc17.i686 2/4
Installing : zeromq3-3.2.2-2.fc17.i686 3/4
Installing : python-zmq-2.2.0.1-1.fc17.i686 4/4
Verifying : openpgm-5.1.118-3.fc17.i686 1/4
Verifying : python-zmq-2.2.0.1-1.fc17.i686 2/4
Verifying : zeromq3-3.2.2-2.fc17.i686 3/4
Verifying : python-msgpack-0.1.13-1.fc17.i686 4/4

Installed:
python-msgpack.i686 0:0.1.13-1.fc17 python-zmq.i686 0:2.2.0.1-1.fc17

Dependency Installed:
openpgm.i686 0:5.1.118-3.fc17 zeromq3.i686 0:3.2.2-2.fc17

Complete!
* INFO: Running install_fedora_stable()
Loaded plugins: langpacks, presto, refresh-packagekit
Resolving Dependencies
--> Running transaction check
---> Package salt-minion.noarch 0:0.13.1-1.fc17 will be installed
--> Processing Dependency: salt = 0.13.1-1.fc17 for package: salt-minion-0.13.1-1.fc17.noarch
--> Running transaction check
---> Package salt.noarch 0:0.13.1-1.fc17 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
salt-minion noarch 0.13.1-1.fc17 updates 16 k
Installing for dependencies:
salt noarch 0.13.1-1.fc17 updates 1.2 M

Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)

Total download size: 1.2 M
Installed size: 4.3 M
Downloading Packages:
--------------------------------------------------------------------------------
Total 183 kB/s | 1.2 MB 00:06
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : salt-0.13.1-1.fc17.noarch 1/2
Installing : salt-minion-0.13.1-1.fc17.noarch 2/2
Verifying : salt-0.13.1-1.fc17.noarch 1/2
Verifying : salt-minion-0.13.1-1.fc17.noarch 2/2

Installed:
salt-minion.noarch 0:0.13.1-1.fc17

Dependency Installed:
salt.noarch 0:0.13.1-1.fc17

Complete!
* INFO: Running install_fedora_restart_daemons()
* INFO: Salt installed!

bootstrap fails to recognize debian -

Commit edd7430 broke debian 6 detection. Bootstrap script ends with " * ERROR: No dependencies installation function found. Exiting..."

This also happens in all recent commits.

Please consider calling lsb_release on linux instead of grepping various files to determine distro. It works in debian,ubuntu and redhat and maybe others.

DISTRO_NAME=`lsb_release -si`
DISTRO_VERSION=`lsb_release -sr`
DISTRO_MAJOR_VERSION=`lsb_release -sr|cut -d. -f1`
DISTRO_MINOR_VERSION=`lsb_release -sr|cut -d. -f2`

I could provide a patch if needed.

madduck repo seems abandoned

madduck repo, used for debian, is still on 12.1.
Do we have any repo alternatives? Should I report this somewhere else?

One liners do not work

On a brand new fresh 12.04 instance I tried the 2 curl and 2 wget one liners and each of them do not work:

# wget -O - http://bootstrap.saltstack.org | sudo sh
--2013-02-07 16:59:49--  http://bootstrap.saltstack.org/
Resolving bootstrap.saltstack.org (bootstrap.saltstack.org)... 74.208.29.198
Connecting to bootstrap.saltstack.org (bootstrap.saltstack.org)|74.208.29.198|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.github.com/saltstack/salt-bootstrap/develop/bootstrap-salt-minion.sh [following]
--2013-02-07 16:59:50--  https://raw.github.com/saltstack/salt-bootstrap/develop/bootstrap-salt-minion.sh
Resolving raw.github.com (raw.github.com)... 199.27.73.130
Connecting to raw.github.com (raw.github.com)|199.27.73.130|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17 [text/plain]
Saving to: `STDOUT'

100%[================================================================================================================================================>] 17          --.-K/s   in 0s      

2013-02-07 16:59:50 (679 KB/s) - written to stdout [17/17]

sh: 1: bootstrap-salt.sh: not found
# curl -L http://bootstrap.saltstack.org | sudo sh -s -- git develop
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   264  100   264    0     0   3015      0 --:--:-- --:--:-- --:--:-- 10153
100    17  100    17    0     0     65      0 --:--:-- --:--:-- --:--:--  4250
sh: 1: bootstrap-salt.sh: not found
# curl --insecure -L http://bootstrap.saltstack.org | sudo sh -s -- git develop
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   264  100   264    0     0   3639      0 --:--:-- --:--:-- --:--:-- 10560
100    17  100    17    0     0    125      0 --:--:-- --:--:-- --:--:--   125
sh: 1: bootstrap-salt.sh: not found
# wget --no-check-certificate -O - http://bootstrap.saltstack.org | sudo sh
--2013-02-07 17:01:14--  http://bootstrap.saltstack.org/
Resolving bootstrap.saltstack.org (bootstrap.saltstack.org)... 74.208.29.198
Connecting to bootstrap.saltstack.org (bootstrap.saltstack.org)|74.208.29.198|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.github.com/saltstack/salt-bootstrap/develop/bootstrap-salt-minion.sh [following]
--2013-02-07 17:01:14--  https://raw.github.com/saltstack/salt-bootstrap/develop/bootstrap-salt-minion.sh
Resolving raw.github.com (raw.github.com)... 199.27.74.130
Connecting to raw.github.com (raw.github.com)|199.27.74.130|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17 [text/plain]
Saving to: `STDOUT'

100%[================================================================================================================================================>] 17          --.-K/s   in 0s      

2013-02-07 17:01:15 (701 KB/s) - written to stdout [17/17]

sh: 1: bootstrap-salt.sh: not found

bootstrap-salt.sh fails to start salt-minion daemon on CentOS 6

As stated in the subject, bootstrap-salt.sh fails to start salt-minion daemon on CentOS 6.

I've tested this by using python-bootstrap and bootstrap-salt.

Below you can see the output of spinning up an instance.

[$] <> sudo salt-cloud -p cloudteam_aws_micro tatetest3
[INFO    ] Loaded configuration file: /etc/salt/cloud
[INFO    ] salt-cloud starting
[INFO    ] Creating Cloud VM tatetest3 in us-east-1
[INFO    ] Created node tatetest3
[WARNING ] Salt node waiting_for_ip 1
[WARNING ] Salt node waiting_for_ip 2
[WARNING ] Salt node waiting_for_ip 3
[WARNING ] Salt node waiting_for_ip 4
[WARNING ] Salt node waiting_for_ip 5
[WARNING ] Salt node waiting_for_ip 6
[WARNING ] Salt node waiting_for_ip 7
[WARNING ] Salt node waiting_for_ip 8
[WARNING ] Salt node waiting_for_ip 9
[WARNING ] Salt node waiting_for_ip 10
[WARNING ] Salt node waiting_for_ip 11
[WARNING ] Salt node waiting_for_ip 12
[WARNING ] Salt node waiting_for_ip 13
[WARNING ] Salt node waiting_for_ip 14
[WARNING ] Salt node waiting_for_ip 15
[WARNING ] Salt node waiting_for_ip 16
[WARNING ] Salt node waiting_for_ip 17
[WARNING ] Salt node waiting_for_ip 18
[WARNING ] Salt node waiting_for_ip 19
[WARNING ] Salt node waiting_for_ip 20
[WARNING ] Salt node waiting_for_ip 21
[WARNING ] Salt node waiting_for_ip 22
[WARNING ] Salt node waiting_for_ip 23
[INFO    ] Salt node data. Public_ip: 75.101.252.103
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
Tue Feb 26 18:08:55 UTC 2013
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
Tue Feb 26 18:08:55 UTC 2013
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
tmpNlRmP3                                                                                                                                                                                                   100% 1850     1.8KB/s   00:00    
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
Connection to 75.101.252.103 closed.
tmpzx3igq                                                                                                                                                                                                   100%  796     0.8KB/s   00:00    
tmpNQf9E8                                                                                                                                                                                                   100%   82     0.1KB/s   00:00    
tmpetmoaL                                                                                                                                                                                                   100%   57KB  56.8KB/s   00:00    
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
Connection to 75.101.252.103 closed.
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
 *  INFO: /bin/sh /tmp/deploy.sh -- Version 1.4

 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   2.6.32-279.22.1.el6.x86_64
 *  INFO:   Distribution: CentOS 6.3

 *  INFO: Installing minion
 *  INFO: Found function install_centos_stable_deps
 *  INFO: Found function config_salt
 *  INFO: Found function install_centos_stable
 *  INFO: Found function install_centos_stable_post
 *  INFO: Found function install_centos_start_daemons
 *  INFO: Running install_centos_stable_deps()
Retrieving http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
Preparing...                ##################################################
epel-release                ##################################################
Loaded plugins: fastestmirror, presto
Determining fastest mirrors
 * base: mirror.liberty.edu
 * epel: mirror.symnds.com
 * extras: mirror.symnds.com
 * updates: mirror.ash.fastserv.com
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package libproxy.x86_64 0:0.3.0-3.el6_3 will be updated
---> Package libproxy.x86_64 0:0.3.0-4.el6_3 will be an update
---> Package libproxy-bin.x86_64 0:0.3.0-3.el6_3 will be updated
---> Package libproxy-bin.x86_64 0:0.3.0-4.el6_3 will be an update
---> Package libproxy-python.x86_64 0:0.3.0-3.el6_3 will be updated
---> Package libproxy-python.x86_64 0:0.3.0-4.el6_3 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch          Version              Repository      Size
================================================================================
Updating:
 libproxy               x86_64        0.3.0-4.el6_3        updates         39 k
 libproxy-bin           x86_64        0.3.0-4.el6_3        updates        8.2 k
 libproxy-python        x86_64        0.3.0-4.el6_3        updates        8.4 k

Transaction Summary
================================================================================
Upgrade       3 Package(s)

Total download size: 55 k
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Download delta size: 15 k
Presto reduced the update size by 68% (from 47 k to 15 k).
Package(s) data still to download: 8.2 k
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : libproxy-python-0.3.0-4.el6_3.x86_64                         1/6 
  Updating   : libproxy-0.3.0-4.el6_3.x86_64                                2/6 
  Updating   : libproxy-bin-0.3.0-4.el6_3.x86_64                            3/6 
  Cleanup    : libproxy-python-0.3.0-3.el6_3.x86_64                         4/6 
  Cleanup    : libproxy-0.3.0-3.el6_3.x86_64                                5/6 
  Cleanup    : libproxy-bin-0.3.0-3.el6_3.x86_64                            6/6 
  Verifying  : libproxy-bin-0.3.0-4.el6_3.x86_64                            1/6 
  Verifying  : libproxy-python-0.3.0-4.el6_3.x86_64                         2/6 
  Verifying  : libproxy-0.3.0-4.el6_3.x86_64                                3/6 
  Verifying  : libproxy-python-0.3.0-3.el6_3.x86_64                         4/6 
  Verifying  : libproxy-bin-0.3.0-3.el6_3.x86_64                            5/6 
  Verifying  : libproxy-0.3.0-3.el6_3.x86_64                                6/6 

Updated:
  libproxy.x86_64 0:0.3.0-4.el6_3          libproxy-bin.x86_64 0:0.3.0-4.el6_3  
  libproxy-python.x86_64 0:0.3.0-4.el6_3  

Complete!
 *  INFO: Running config_salt()
 *  INFO: Running install_centos_stable()
Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
 * base: mirror.liberty.edu
 * epel: mirror.symnds.com
 * epel-testing: mirror.symnds.com
 * extras: mirror.symnds.com
 * updates: mirror.ash.fastserv.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package salt-minion.noarch 0:0.13.1-1.el6 will be installed
--> Processing Dependency: salt = 0.13.1-1.el6 for package: salt-minion-0.13.1-1.el6.noarch
--> Running transaction check
---> Package salt.noarch 0:0.13.1-1.el6 will be installed
--> Processing Dependency: python-zmq for package: salt-0.13.1-1.el6.noarch
--> Processing Dependency: python-msgpack for package: salt-0.13.1-1.el6.noarch
--> Processing Dependency: python-jinja2 for package: salt-0.13.1-1.el6.noarch
--> Processing Dependency: python-crypto for package: salt-0.13.1-1.el6.noarch
--> Processing Dependency: m2crypto for package: salt-0.13.1-1.el6.noarch
--> Processing Dependency: PyYAML for package: salt-0.13.1-1.el6.noarch
--> Running transaction check
---> Package PyYAML.x86_64 0:3.10-3.el6 will be installed
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-3.el6.x86_64
---> Package m2crypto.x86_64 0:0.20.2-9.el6 will be installed
---> Package python-crypto.x86_64 0:2.0.1-22.el6 will be installed
---> Package python-jinja2.x86_64 0:2.2.1-1.el6 will be installed
--> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.2.1-1.el6.x86_64
---> Package python-msgpack.x86_64 0:0.1.9-2.el6 will be installed
---> Package python-zmq.x86_64 0:2.2.0.1-1.el6 will be installed
--> Processing Dependency: libzmq.so.3()(64bit) for package: python-zmq-2.2.0.1-1.el6.x86_64
--> Running transaction check
---> Package libyaml.x86_64 0:0.1.3-1.el6 will be installed
---> Package python-babel.noarch 0:0.9.4-5.1.el6 will be installed
---> Package zeromq3.x86_64 0:3.2.2-2.el6 will be installed
--> Processing Dependency: libpgm-5.1.so.0()(64bit) for package: zeromq3-3.2.2-2.el6.x86_64
--> Running transaction check
---> Package openpgm.x86_64 0:5.1.118-3.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch         Version             Repository          Size
================================================================================
Installing:
 salt-minion          noarch       0.13.1-1.el6        epel-testing        17 k
Installing for dependencies:
 PyYAML               x86_64       3.10-3.el6          epel               157 k
 libyaml              x86_64       0.1.3-1.el6         epel                52 k
 m2crypto             x86_64       0.20.2-9.el6        base               471 k
 openpgm              x86_64       5.1.118-3.el6       epel               165 k
 python-babel         noarch       0.9.4-5.1.el6       base               1.4 M
 python-crypto        x86_64       2.0.1-22.el6        base               159 k
 python-jinja2        x86_64       2.2.1-1.el6         base               465 k
 python-msgpack       x86_64       0.1.9-2.el6         epel                28 k
 python-zmq           x86_64       2.2.0.1-1.el6       epel               424 k
 salt                 noarch       0.13.1-1.el6        epel-testing       1.3 M
 zeromq3              x86_64       3.2.2-2.el6         epel               326 k

Transaction Summary
================================================================================
Install      12 Package(s)

Total download size: 4.9 M
Installed size: 18 M
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 4.9 M
--------------------------------------------------------------------------------
Total                                           1.9 MB/s | 4.9 MB     00:02     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libyaml-0.1.3-1.el6.x86_64                                  1/12 
  Installing : PyYAML-3.10-3.el6.x86_64                                    2/12 
  Installing : python-crypto-2.0.1-22.el6.x86_64                           3/12 
  Installing : m2crypto-0.20.2-9.el6.x86_64                                4/12 
  Installing : python-msgpack-0.1.9-2.el6.x86_64                           5/12 
  Installing : python-babel-0.9.4-5.1.el6.noarch                           6/12 
  Installing : python-jinja2-2.2.1-1.el6.x86_64                            7/12 
  Installing : openpgm-5.1.118-3.el6.x86_64                                8/12 
  Installing : zeromq3-3.2.2-2.el6.x86_64                                  9/12 
  Installing : python-zmq-2.2.0.1-1.el6.x86_64                            10/12 
  Installing : salt-0.13.1-1.el6.noarch                                   11/12 
  Installing : salt-minion-0.13.1-1.el6.noarch                            12/12 
warning: /etc/salt/minion created as /etc/salt/minion.rpmnew
  Verifying  : openpgm-5.1.118-3.el6.x86_64                                1/12 
  Verifying  : python-babel-0.9.4-5.1.el6.noarch                           2/12 
  Verifying  : python-msgpack-0.1.9-2.el6.x86_64                           3/12 
  Verifying  : python-jinja2-2.2.1-1.el6.x86_64                            4/12 
  Verifying  : m2crypto-0.20.2-9.el6.x86_64                                5/12 
  Verifying  : zeromq3-3.2.2-2.el6.x86_64                                  6/12 
  Verifying  : python-zmq-2.2.0.1-1.el6.x86_64                             7/12 
  Verifying  : PyYAML-3.10-3.el6.x86_64                                    8/12 
  Verifying  : salt-minion-0.13.1-1.el6.noarch                             9/12 
  Verifying  : python-crypto-2.0.1-22.el6.x86_64                          10/12 
  Verifying  : libyaml-0.1.3-1.el6.x86_64                                 11/12 
  Verifying  : salt-0.13.1-1.el6.noarch                                   12/12 

Installed:
  salt-minion.noarch 0:0.13.1-1.el6                                             

Dependency Installed:
  PyYAML.x86_64 0:3.10-3.el6             libyaml.x86_64 0:0.1.3-1.el6          
  m2crypto.x86_64 0:0.20.2-9.el6         openpgm.x86_64 0:5.1.118-3.el6        
  python-babel.noarch 0:0.9.4-5.1.el6    python-crypto.x86_64 0:2.0.1-22.el6   
  python-jinja2.x86_64 0:2.2.1-1.el6     python-msgpack.x86_64 0:0.1.9-2.el6   
  python-zmq.x86_64 0:2.2.0.1-1.el6      salt.noarch 0:0.13.1-1.el6            
  zeromq3.x86_64 0:3.2.2-2.el6          

Complete!
 *  INFO: Running install_centos_stable_post()
 *  INFO: Running install_centos_start_daemons()
 *  INFO: Salt installed!
Starting salt-minion daemon: Connection to 75.101.252.103 closed.
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
Connection to 75.101.252.103 closed.
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
rm: cannot remove `/tmp/minion.pub': No such file or directory
Connection to 75.101.252.103 closed.
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
rm: cannot remove `/tmp/minion.pem': No such file or directory
Connection to 75.101.252.103 closed.
Warning: Permanently added '75.101.252.103' (RSA) to the list of known hosts.
rm: cannot remove `/tmp/minion': No such file or directory
Connection to 75.101.252.103 closed.
[INFO    ] Salt installed on tatetest3
[INFO    ] Created Cloud VM tatetest3 with the following values:
[INFO    ]   private_ips: ['10.117.85.157']
[INFO    ]   extra: {'status': 'running', 'productcode': [], 'groups': [None, None], 'tags': {'Name': 'tatetest3'}, 'instanceId': 'i-8c28bcff', 'dns_name': 'ec2-75-101-252-103.compute-1.amazonaws.com', 'launchdatetime': '2013-02-26T18:07:59.000Z', 'imageId': 'ami-ae78e9c7', 'kernelid': 'aki-88aa75e1', 'keyname': 'coreservice', 'availability': 'us-east-1a', 'clienttoken': '', 'launchindex': '0', 'ramdiskid': None, 'private_dns': 'ip-10-117-85-157.ec2.internal', 'instancetype': 't1.micro'}
[INFO    ]   image: None
[INFO    ]   _uuid: None
[INFO    ]   driver: <libcloud.compute.drivers.ec2.EC2NodeDriver object at 0x2dfa310>
[INFO    ]   state: 0
[INFO    ]   public_ips: ['75.101.252.103']
[INFO    ]   size: None
[INFO    ]   id: i-8c28bcff
[INFO    ]   name: tatetest3

ERROR: The master failed to decrypt the random minion token

There seems to be an issue with salt's bootstrapping process on Amazon Linux 64bit (tested with Amazon Linux AMI release 2012.09; Linux 3.2.30-49.59.amzn1.x86_64) with Script version 1.4.

I'm bootstrapping various salt master & minions automatically with AWS CloudFormation & salt-bootstrap. I noticed that the bootstrapping fails since the script version was upgraded from 1.3 to 1.4. I verified this by starting up two new and identical AWS deployments; only difference being the salt-bootstrap script version I've been using.

salt-bootstrap v1.3: master and minions come up cleanly and work fine

salt-bootstrap v1.4: only the master comes up fine; all minions terminate with an error:

Running 'salt-minion -l debug' shows the following output:

[INFO ] Loaded configuration file: /etc/salt/minion
[WARNING ] Setting up the Salt Minion "ip-10-1-67-200"
[DEBUG ] loading grain in ['/var/cache/salt/minion/extmods/grains', '/usr/lib/python2.6/site-packages/salt/grains']
[DEBUG ] Skipping /var/cache/salt/minion/extmods/grains, it is not a directory
[DEBUG ] Attempting to authenticate with the Salt Master at 10.1.33.141
[DEBUG ] Loaded minion key: /etc/salt/pki/minion/minion.pem
[DEBUG ] Decrypting the current master AES key
[DEBUG ] Loaded minion key: /etc/salt/pki/minion/minion.pem
[ERROR ] The master failed to decrypt the random minion token
[CRITICAL] The Salt Master server's public key did not authenticate!
The master may need to be updated if it is a version of Salt lower than 0.12.1, or
If you are confident that you are connecting to a valid Salt Master, then remove the master public key and restart the Salt Minion.
The master public key can be found at:
/etc/salt/pki/minion/minion_master.pub

Running 'salt-master --version' shows: salt-master 0.12.1
Running 'salt-minion --version' shows: salt-minion 0.12.1

Cheers,

  Markus

Long options are broken

$ ./bootstrap-salt-minion.sh --help

  Option does not exist : -


  Usage :  bootstrap-salt-minion.sh [options] <install-type> <install-type-args>

  Installation types:
    - stable (default)
    - daily  (ubuntu specific)
    - git

  Examples:
    $ bootstrap-salt-minion.sh
    $ bootstrap-salt-minion.sh stable
    $ bootstrap-salt-minion.sh daily
    $ bootstrap-salt-minion.sh git
    $ bootstrap-salt-minion.sh git develop
    $ bootstrap-salt-minion.sh git 8c3fadf15ec183e5ce8c63739850d543617e4357

  Options:
  -h|help       Display this message
  -v|version    Display script version
  -c|config-dir Temporary minion configuration directory
  -M|master     Also install salt-master
  -S|syndic     Also install salt-syndic
  -N|no-minion  Do not install salt-minion

Debian packages broken

The Debian Squeeze packages as installed by bootstrap are currently version 0.10.5, and suffer from the bug which has since been fixed by saltstack/salt#2745. As a result, using the pkg module and pkg state is currently impossible without patching Salt after installation, which is obviously not desirable.

Could the package maintainer (@madduck?) either apply this patch to the 0.10.5 package in their repo, or upgrade the package to the latest release?

salt-bootstrap broken against SLES 11

At one point this was working, as I have a submitted copy that installs just fine. However, I can no longer install salt using the bootstrap script.

This is the output of the script:

*  INFO: /bin/sh /apps/bootstrap-salt.sh -- Version 1.5.2
 *  WARN: Running the unstable version of bootstrap-salt.sh

 *  INFO: System Information:
 *  INFO:   CPU:          AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
AuthenticAMD
:
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   2.6.32.59-0.7-default
 *  INFO:   Distribution: SUSE LINUX 11

 *  INFO: Installing minion
DISTRONAME: SUSE LINUX

 *  INFO: Found function daemons_running
 * ERROR: No dependencies installation function found. Exiting...

This is on both SLES 11 SP 1 and SLES 11 SP 2.

This appears to be a regression from the previous versions.

Please add Trisquel distro support

I am migrating to Trisquel 6.0, which is a free-as-in-freedom derivative of Ubuntu 12.04 LTS.

Here is the /etc/lsb-release file:

DISTRIB_ID=Trisquel
DISTRIB_RELEASE=6.0
DISTRIB_CODENAME=toutatis
DISTRIB_DESCRIPTION="Trisquel 6.0"

I was told today in Trisquel IRC that Ubuntu PPA's are usable with Trisquel. I was able to run a 's/ubuntu/trisquel/g' on the bootstrap script, which worked, but seemed scary, because it altered the hyperlinks, causing 404's. It looks like the apt-get installs dropped back to trisquel repos that are the hard-coded in the OS.

Let me know if I might provide any helpful information.

Thanks,
Joshua

Bootstrap git

Would it be possible to have salt-bootstrap install git so it can clone and install a specific branch or commit hash?

Or is this functionality already included?

sudo ./salt-bootstrap.sh git <sha> fails

Originally posted by @pitrou on saltstack/salt#3261

Apparently sudo ./salt-bootstrap.sh git develop is not enough to get an up-to-date version, so I tried to do sudo ./salt-bootstrap.sh git 80990fa8bead30b56d26ba16739b4aca865db2b9 and I got the following error:

  • Running install_debian_git()
    fatal: reference is not a tree: 80990fa8bead30b56d26ba16739b4aca865db2b9

Should I try something else?

salt-bootstrap broken against Amazon Linux

Hi,

It seems that salt-bootstrap is broken on Amazon Linux since late last week (I tested on the newly release Amazon Linux AMI image as well as the previous one):

> sudo sh ./bootstrap-salt.sh -M -S -N

 *  INFO: sh ./bootstrap-salt.sh -- Version 1.5.2
 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   3.4.37-40.44.amzn1.x86_64
 *  INFO:   Distribution: Amazon Linux AMI 2013.03
...
Setting up Install Process
Package PyYAML-3.10-3.6.amzn1.x86_64 already installed and latest version
Package m2crypto-0.20.2-9.10.amzn1.x86_64 already installed and latest version
No package python-msgpack available.
No package python-zmq available.
...
Error: Package: salt-0.14.0-1.el6.noarch (epel-testing)
           Requires: python-zmq
Error: Package: salt-0.14.0-1.el6.noarch (epel-testing)
           Requires: python-msgpack
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
 * ERROR: Failed to run install_amazon_linux_ami_stable()!!!

Salt 0.13.1 can still be installed via 'sudo yum --enablerepo=epel install salt-minion'.

Would be great to have an option to specify which salt version to install (via the bootstrap script) ...

Cheers,

  Markus

Salt services not enabled?

It does not appear that the salt services are being enabled to start at boot on non-debian based systems, anyone mind if I throw this in?

Specify version of salt to install

Since the docs say that the master needs to be upgraded before the minions, it seems that always installing the latest stable minion isn't always what is needed. Would it be possible to specify a specific salt-minion version to install?

Flag for aptitude full-upgrade?

Some discussion at work raised the idea of running a full package upgrade on a newly minted server. (Amazon's AMIs are inevitably a little out of date at creation).

What do you think to adding a flag to the bootstrap script to do this?

This may well be classed as out of the scope of salt-bootstrap, but I thought I'd ask the question..

Git port 9418 blocked

At the company I work for outgoing 9418 is blocked. I am probably not the only person that has this problem.

Maybe by default in "_git_clone_and _checkout()" git clone should use https:// instead of git:// or have the script fall back to https if git can't connect.

libzmq3 packages for debian 6

Debian 6 (and 7) comes with libzmq1, not libzmq3. This version doesn't support keepalive and is thus pretty worthless (we loose half our minions in a day). Ubuntu doesn't have this problem since it comes with libzmq3.

I have created 2 debian 6 packages:
libzmq3_3.2.2_amd64.deb
python-zmq_2.2.0.1_amd64.deb

After installing those, I run the bootstrap and the minion is successfully installed using libzmq3.
Who should I send those (or a howto for making them) ?

running bootstrap may break apt sources on Debian 6.0

install_debian_6_0_deps() {
    echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> \
        /etc/apt/sources.list.d/backports.list

The above adds multiple times the same source if it already exists or if running the bootstrap more than once. This has the side-effect of breaking apt-get update on some debian 6 systems. I haven't found out how. Removing the duplication fixes the problem.

No dependencies installation function found in bootstrap-salt-minion.sh

This issue is being migrated from saltstack/salt-cloud#248, originally reported by @mafrosis

Warning: Permanently added '10.143.6.178' (ECDSA) to the list of known hosts.
 * INFO: /tmp/deploy.sh -- Version 1.2
 * System Information:
     CPU:          GenuineIntel
     CPU Arch:     x86_64
     OS Name:      Linux
     OS Version:   3.2.0-32-virtual
     Distribution: Ubuntu 12.04
/tmp/deploy.sh: line 382: type: install_ubuntu_1204_stable_deps: not found
 * INFO: install_ubuntu_1204_stable_deps not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_1204_deps: not found
 * INFO: install_ubuntu_1204_deps not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_stable_deps: not found
 * INFO: install_ubuntu_stable_deps not found....
 * INFO: install_ubuntu_deps not found....
/tmp/deploy.sh: line 382: type: config_ubuntu_1204_stable_minion: not found
 * INFO: config_ubuntu_1204_stable_minion not found....
/tmp/deploy.sh: line 382: type: config_ubuntu_1204_minon: not found
 * INFO: config_ubuntu_1204_minon not found....
/tmp/deploy.sh: line 382: type: config_ubuntu_stable_minion: not found
 * INFO: config_ubuntu_stable_minion not found....
/tmp/deploy.sh: line 382: type: config_ubuntu_minion: not found
 * INFO: config_ubuntu_minion not found....
 * INFO: config_minion not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_1204_stable: not found
 * INFO: install_ubuntu_1204_stable not found....
 * INFO: install_ubuntu_stable not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_1204_stable_post: not found
 * INFO: install_ubuntu_1204_stable_post not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_1204_post: not found
 * INFO: install_ubuntu_1204_post not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_stable_post: not found
 * INFO: install_ubuntu_stable_post not found....
/tmp/deploy.sh: line 382: type: install_ubuntu_post: not found
 * INFO: install_ubuntu_post not found....
 * ERROR: No dependencies installation function found. Exiting...
 * Removing the logging pipe /tmp/bootstrap-salt-minion.logpipe
Connection to 10.143.6.178 closed.

debian 6 installation fails with "No installation function found" (regression)

Tried with both stable and develop versions.
lsb_release -a reports:
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.7 (squeeze)
Release: 6.0.7
Codename: squeeze

debian:/tmp# ./bootstrap-salt.sh -D
 *  INFO: /bin/sh ./bootstrap-salt.sh -- Version 1.5.3
 *  WARN: Running the unstable version of bootstrap-salt.sh

 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   2.6.32-5-xen-amd64
 *  INFO:   Distribution: Debian 6.0

 *  INFO: Installing minion
 * DEBUG: install_debian_6_stable_deps not found....
 * DEBUG: install_debian_6_0_stable_deps not found....
 *  INFO: Found function install_debian_6_deps
 * DEBUG: install_debian_6_stable not found....
 * DEBUG: install_debian_6_0_stable not found....
 * DEBUG: install_debian_stable not found....
 * DEBUG: install_debian_6_stable_post not found....
 * DEBUG: install_debian_6_0_stable_post not found....
 * DEBUG: install_debian_6_post not found....
 * DEBUG: install_debian_6_0_post not found....
 * DEBUG: install_debian_stable_post not found....
 * DEBUG: install_debian_post not found....
 * DEBUG: install_debian_6_stable_restart_daemons not found....
 * DEBUG: install_debian_6_0_stable_restart_daemons not found....
 * DEBUG: install_debian_6_restart_daemons not found....
 * DEBUG: install_debian_6_0_restart_daemons not found....
 * DEBUG: install_debian_stable_restart_daemons not found....
 *  INFO: Found function install_debian_restart_daemons
 * DEBUG: daemons_running_debian_6_stable not found....
 * DEBUG: daemons_running_debian_6_0_stable not found....
 * DEBUG: daemons_running_debian_6 not found....
 * DEBUG: daemons_running_debian_6_0 not found....
 * DEBUG: daemons_running_debian_stable not found....
 * DEBUG: daemons_running_debian not found....
 *  INFO: Found function daemons_running
 * ERROR: No installation function found. Exiting...
 * DEBUG: Removing the logging pipe /tmp/bootstrap-salt.logpipe
 * DEBUG: Killing logging pipe tee's with pid(s): 8244

Install fails with unmet dependencies on debian.

Trying to run

wget -O - http://bootstrap.saltstack.org | sudo sh 

gives me the following error:

*  INFO: PIPED THROUGH sh -- Version 1.5

 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   2.6.32-5-amd64
 *  INFO:   Distribution: Debian 6.0

 *  INFO: Installing minion
 *  INFO: Found function install_debian_6_0_deps
 *  INFO: Found function install_debian_stable
 *  INFO: Found function install_debian_restart_daemons
 *  INFO: Running install_debian_6_0_deps()
Hit http://debian.lcs.mit.edu squeeze Release.gpg
Ign http://debian.lcs.mit.edu/debian/ squeeze/main Translation-en
Hit http://security.debian.org squeeze/updates Release.gpg
Ign http://debian.lcs.mit.edu/debian/ squeeze/main Translation-en_US
Ign http://security.debian.org/ squeeze/updates/main Translation-en
Ign http://security.debian.org/ squeeze/updates/main Translation-en_US
Hit http://debian.lcs.mit.edu squeeze Release
Hit http://security.debian.org squeeze/updates Release
Hit http://debian.lcs.mit.edu squeeze/main Sources
Hit http://debian.lcs.mit.edu squeeze/main amd64 Packages
Hit http://security.debian.org squeeze/updates/main Sources
Hit http://security.debian.org squeeze/updates/main amd64 Packages
Hit http://archive.cloudera.com squeeze-cdh3 Release.gpg
Ign http://archive.cloudera.com/debian/ squeeze-cdh3/contrib Translation-en
Ign http://archive.cloudera.com/debian/ squeeze-cdh3/contrib Translation-en_US
Hit http://archive.cloudera.com squeeze-cdh3 Release
Hit http://cran.case.edu squeeze-cran/ Release.gpg
Ign http://archive.cloudera.com squeeze-cdh3/contrib Sources
Ign http://archive.cloudera.com squeeze-cdh3/contrib amd64 Packages
Ign http://cran.case.edu/bin/linux/debian/ squeeze-cran/ Translation-en
Ign http://archive.cloudera.com squeeze-cdh3/contrib Sources
Ign http://archive.cloudera.com squeeze-cdh3/contrib amd64 Packages
Hit http://archive.cloudera.com squeeze-cdh3/contrib Sources
Ign http://cran.case.edu/bin/linux/debian/ squeeze-cran/ Translation-en_US
Hit http://archive.cloudera.com squeeze-cdh3/contrib amd64 Packages
Hit http://cran.case.edu squeeze-cran/ Release
Hit http://backports.debian.org squeeze-backports Release.gpg
Ign http://backports.debian.org/debian-backports/ squeeze-backports/contrib Translation-en
Ign http://backports.debian.org/debian-backports/ squeeze-backports/contrib Translation-en_US
Hit http://cran.case.edu squeeze-cran/ Packages
Hit http://debian.madduck.net squeeze-backports Release.gpg
Ign http://debian.madduck.net/repo/ squeeze-backports/main Translation-en
Ign http://debian.madduck.net/repo/ squeeze-backports/main Translation-en_US
Ign http://backports.debian.org/debian-backports/ squeeze-backports/main Translation-en
Ign http://backports.debian.org/debian-backports/ squeeze-backports/main Translation-en_US
Ign http://backports.debian.org/debian-backports/ squeeze-backports/non-free Translation-en
Ign http://backports.debian.org/debian-backports/ squeeze-backports/non-free Translation-en_US
Hit http://backports.debian.org squeeze-backports Release
Hit http://debian.madduck.net squeeze-backports Release
Hit http://backports.debian.org squeeze-backports/main amd64 Packages/DiffIndex
Hit http://backports.debian.org squeeze-backports/contrib amd64 Packages/DiffIndex
Hit http://backports.debian.org squeeze-backports/non-free amd64 Packages/DiffIndex
Ign http://debian.madduck.net squeeze-backports/main Sources
Hit http://backports.debian.org squeeze-backports/main amd64 Packages
Hit http://s3tools.org stable/ Release.gpg
Ign http://s3tools.org/repo/deb-all/ stable/ Translation-en
Ign http://s3tools.org/repo/deb-all/ stable/ Translation-en_US
Ign http://debian.madduck.net squeeze-backports/main amd64 Packages
Hit http://s3tools.org stable/ Release
Ign http://debian.madduck.net squeeze-backports/main Sources
Hit http://s3tools.org stable/ Packages
Ign http://debian.madduck.net squeeze-backports/main amd64 Packages
Ign http://debian.madduck.net squeeze-backports/main amd64 Packages
Hit http://debian.madduck.net squeeze-backports/main Sources
Hit http://debian.madduck.net squeeze-backports/main amd64 Packages
Reading package lists...
 *  INFO: Running install_debian_stable()
Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 salt-minion : Depends: salt-common (= 0.12.1-1~bpo60+1~madduck.2) but it is not going to be installed
E: Broken packages
 * ERROR: Failed to run install_debian_stable()!!!

Fails on RHEL5

RHEL 5 needs python 2.6 installed ad then needs to call python2.6 when running the setup.py, the deps also differ.

I will get this eventually if no one else does

minion.d path is not created in debian squeeze using git 0.11

Hi,

I imagine this is pretty small issue, but I think the path /etc/salt/minion.d must be created by the oneliner, I'm currently using this:

wget -O - http://bootstrap.saltstack.org | sudo sh -s git 0.11

and the path is not created, the rest works perfect.

Bye.

Do not overwrite configs

Sometimes people use bootstrap to upgrade a git install, or need to run boostrap for other reasons on an existing installation.

Currently we attempt to copy over configs regardless of whether or not they exist. I recommend we add some kind of force_config flag that will overwrite existing configs when true. The default behavior should be not overwriting existing files.

Allow No Install

In some rare circumstances, we may not want to install any binaries but simply run the config() option. Option one involves silently accepting not installing anything, or if we are configuring but not installing anything. Option number two would be an additional flag of some kind.

The case in point is that not salty-vagrant uses bootstrap to copy config files over. However, we currently only run bootstrap is salt is not already on the machine. If salt is pre-installed, the configs don't get copied over. Instead of duplicating this functionality, it would be ideal to just run bootstrap anything, but with the options to not install and -c to config.

Installing Salt Master with bootstrap from git develop doesn't install init scripts

Running CentOS 6.3.

Following the documentation, I attempted to install a salt-master from git develop using the following command:

curl -L http://bootstrap.saltstack.org | sudo sh -s -- -M -N git develop

Everything seemed to work fine, except that service salt-master start failed.

salt-master is indeed installed, but there is no salt-master init script in /etc/init.d/

Looking back at the install output I did notice one error:

 *  INFO: Running install_centos_git_post()
error reading information on service salt-master: No such file or directory

I think it's looking at the wrong source location for the init scripts.

Bootstrap fails in Debian Squeeze (stable)

Hi,

I'm using the line:

wget -O - http://bootstrap.saltstack.org | sudo sh

but it fails in debian 6.0 stable with:

Hit http://backports.debian.org squeeze-backports Release
Hit http://backports.debian.org squeeze-backports/main amd64 Packages/DiffIndex
Hit http://backports.debian.org squeeze-backports/main amd64 Packages
Reading package lists...
 * Running install_debian_60_stable()
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package salt-minion
 * Failed to run install_debian_60_stable()!!!
 * Removing the logging pipe /tmp/bootstrap-salt-minion.logpipe

Checking in squeeze-backports there is no salt-minion, but there is one in Debian unstable.

Bye.

start daemons for Ubuntu Lucid

Please add a special case for Ubuntu 10.04. The package system there tries to launch salt before everything is done and it terminates right away on a completely unbootstrapped (Lucid) system. lsb_release can tell you the Ubuntu name, e.g. after install is complete:

if [ `lsb_release -sc` = "Lucid" ]
    start salt-minion

Debian 7 installation error

I can't install on debian 7 box using bootstrap more info here http://pastie.org/7082250

  • DEBUG: Running salt-minion by hand outputs:
  • DEBUG: /var/log/salt/minion does not exist. Can't cat its contents!
  • DEBUG: Removing the logging pipe /tmp/bootstrap-salt.logpipe

FreeBSD seems to be broken on EC2

Trying to spin up a VM on AWS EC2 using salt-cloud, using the following salt-cloud profile:

aws-freebsd:
provider: aws
image: ami-1d4c9874
size: Micro Instance
script: bootstrap-salt-minion
ssh_username: root
sudo: False

In this configuration, the script is uploaded as /tmp/deploy.sh, and executed with:

/tmp/deploy.sh -c /tmp

When it tries to run, I get:

/tmp/deploy.sh: Command not found.

When I edit the script and change the first line to use sh instead of bash, it executes. But then it fails to load all of the packages:

  • System Information:
    CPU: Intel(R) Xeon(R) CPU E5645 @ 2.40GHz
    CPU Arch: amd64
    OS Name: FreeBSD
    OS Version: 9.0-RELEASE
    Distribution: FreeBSD 9.0
  • INFO: Found function install_freebsd_90_stable_deps
  • INFO: Found function install_freebsd_90_stable
  • INFO: config_freebsd_90_stable_minion not found....
  • INFO: config_freebsd_90_minon not found....
  • INFO: config_freebsd_stable_minion not found....
  • INFO: config_freebsd_minion not found....
  • INFO: Found function config_minion
  • INFO: Found function install_freebsd_90_stable_post
  • Running install_freebsd_90_stable_deps()
    pkg.txz 1690 kB 1143 kBps
    Installing pkg-1.0.2...pkg-1.0.2 already installed

Failed to install the following 1 package(s): ./pkg.txz
Conversion has been successfully finished
Your old packages database has been moved to: /var/db/pkg.bak.
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
pkg: Package 'swig' was not found in the repositories

  • Failed to run install_freebsd_90_stable_deps()!!!
  • Removing the logging pipe /tmp/bootstrap-salt-minion.logpipe
  • Killing logging pipe tee's with pid(s): 1092

Start Daemons

I think we should have either an additional flag, or a function to start the installed daemons.

Some distributions start the daemons on their own, for example, Ubuntu. Others do not start their daemons, for example, RHEL/CentOS/Amazon Linux.

I'm in favor for having an optional function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.