diff --git a/.github/workflows/checksums.yml b/.github/workflows/checksums.yml deleted file mode 100644 index 091e3a6..0000000 --- a/.github/workflows/checksums.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Checksums - -on: - push: - branches: - - stable - -jobs: - checksums: - name: Update Scripts Checksums - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - if: github.repository == 'saltstack/salt-bootstrap' - with: - ref: stable - - - name: Get bootstrap-salt.sh sha256sum - if: github.repository == 'saltstack/salt-bootstrap' - run: | - echo "SH=$(sha256sum bootstrap-salt.sh | awk '{ print $1 }')" >> $GITHUB_ENV - echo "PS1=$(sha256sum bootstrap-salt.ps1 | awk '{ print $1 }')" >> $GITHUB_ENV - echo "BS_VERSION=$(sh bootstrap-salt.sh -v | awk '{ print $4 }')" >> $GITHUB_ENV - - - name: Update Checksums - if: github.repository == 'saltstack/salt-bootstrap' - run: | - echo ${{ env.SH }} > bootstrap-salt.sh.sha256 - echo ${{ env.PS1 }} > bootstrap-salt.ps1.sha256 - - - name: Create Pull Request Against Master - uses: peter-evans/create-pull-request@v3 - with: - title: Update sha256 checksums - commit-message: Update sha256 checksums - delete-branch: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a2f2df5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,568 @@ +name: CI +on: + - push + - pull_request + +concurrency: + # If changes are pushed to a PR, stop all running workflows before starting new ones + group: ${{ github.head_ref || (github.repository == 'saltstack/salt-bootstrap' && github.run_id || github.ref_name) }} + cancel-in-progress: true + +jobs: + + collect-changed-files: + name: Collect changed files + runs-on: ubuntu-latest + outputs: + run-tests: ${{ steps.set-output.outputs.run-tests }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Get specific changed files + id: changed-files + uses: tj-actions/changed-files@v25 + with: + separator: "," + files: | + bootstrap-salt.* + Gemfile + kitchen*.yml + tests/** + .github/workflows/** + files_ignore: | + .github/workflows/release.yml + + - name: Set Job Output + id: set-output + run: | + echo "::set-output name=run-tests::${{ steps.changed-files.outputs.any_modified }}" + + generate-actions-workflow: + name: Generate The Actions Workflow + runs-on: ubuntu-latest + needs: collect-changed-files + + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Pre-Commit + run: | + python3 -m pip install -U pip + python3 -m pip install pre-commit + pre-commit install --install-hooks + + - name: Generate Workflow Actions + run: | + pre-commit run -av generate-actions-workflow + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus + + lint: + name: Lint + runs-on: ubuntu-latest + needs: collect-changed-files + container: koalaman/shellcheck-alpine:v0.6.0 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + steps: + - uses: actions/checkout@v3 + - name: ShellCheck + run: | + shellcheck -s sh -f tty bootstrap-salt.sh + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus + + + freebsd-131: + name: FreeBSD 13.1 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-bsd.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: freebsd-131 + display-name: FreeBSD 13.1 + timeout: 20 + runs-on: macos-10.15 + instances: '["git-master", "latest"]' + + + freebsd-123: + name: FreeBSD 12.3 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-bsd.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: freebsd-123 + display-name: FreeBSD 12.3 + timeout: 20 + runs-on: macos-10.15 + instances: '["git-master", "latest"]' + + + openbsd-6: + name: OpenBSD 6 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-bsd.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: openbsd-6 + display-name: OpenBSD 6 + timeout: 20 + runs-on: macos-10.15 + instances: '["latest"]' + + + + macos-1015: + name: macOS 10.15 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-macos.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: macos-1015 + display-name: macOS 10.15 + timeout: 20 + runs-on: macos-10.15 + instances: '["stable-3003", "stable-3004", "latest"]' + + + macos-11: + name: macOS 11 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-macos.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: macos-11 + display-name: macOS 11 + timeout: 20 + runs-on: macos-11 + instances: '["stable-3003", "stable-3004", "latest"]' + + + macos-12: + name: macOS 12 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-macos.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: macos-12 + display-name: macOS 12 + timeout: 20 + runs-on: macos-12 + instances: '["stable-3003", "stable-3004", "latest"]' + + + + windows-2019: + name: Windows 2019 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-windows.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: windows-2019 + display-name: Windows 2019 + timeout: 20 + runs-on: windows-2019 + instances: '["stable-3003", "stable-3004", "latest"]' + + + windows-2022: + name: Windows 2022 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-windows.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: windows-2022 + display-name: Windows 2022 + timeout: 20 + runs-on: windows-2022 + instances: '["stable-3003", "stable-3004", "latest"]' + + + + almalinux-8: + name: AlmaLinux 8 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: almalinux-8 + display-name: AlmaLinux 8 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + amazon-2: + name: Amazon 2 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: amazon-2 + display-name: Amazon 2 + timeout: 20 + instances: '["stable-3003", "stable-3004", "git-master", "latest"]' + + + arch: + name: Arch + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: arch + display-name: Arch + timeout: 20 + instances: '["git-master", "latest"]' + + + centos-7: + name: CentOS 7 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: centos-7 + display-name: CentOS 7 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + centos-stream8: + name: CentOS Stream 8 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: centos-stream8 + display-name: CentOS Stream 8 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + debian-10: + name: Debian 10 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: debian-10 + display-name: Debian 10 + timeout: 20 + instances: '["stable-3003", "stable-3004", "git-master", "latest"]' + + + debian-11: + name: Debian 11 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: debian-11 + display-name: Debian 11 + timeout: 20 + instances: '["stable-3004", "git-master", "latest"]' + + + debian-9: + name: Debian 9 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: debian-9 + display-name: Debian 9 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + fedora-35: + name: Fedora 35 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: fedora-35 + display-name: Fedora 35 + timeout: 20 + instances: '["git-master", "latest"]' + + + fedora-36: + name: Fedora 36 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: fedora-36 + display-name: Fedora 36 + timeout: 20 + instances: '["git-master", "latest"]' + + + gentoo: + name: Gentoo + if: github.event_name == 'push' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: gentoo + display-name: Gentoo + timeout: 90 + instances: '["git-master", "latest"]' + + + gentoo-systemd: + name: Gentoo (systemd) + if: github.event_name == 'push' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: gentoo-systemd + display-name: Gentoo (systemd) + timeout: 90 + instances: '["git-master", "latest"]' + + + opensuse-15: + name: Opensuse 15 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: opensuse-15 + display-name: Opensuse 15 + timeout: 20 + instances: '["git-master", "latest"]' + + + opensuse-tumbleweed: + name: Opensuse Tumbleweed + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: opensuse-tumbleweed + display-name: Opensuse Tumbleweed + timeout: 20 + instances: '["git-master", "latest"]' + + + oraclelinux-7: + name: Oracle Linux 7 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: oraclelinux-7 + display-name: Oracle Linux 7 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + oraclelinux-8: + name: Oracle Linux 8 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: oraclelinux-8 + display-name: Oracle Linux 8 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + rockylinux-8: + name: Rocky Linux 8 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: rockylinux-8 + display-name: Rocky Linux 8 + timeout: 20 + instances: '["stable-3004", "git-3004", "git-master", "latest"]' + + + ubuntu-1804: + name: Ubuntu 18.04 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: ubuntu-1804 + display-name: Ubuntu 18.04 + timeout: 20 + instances: '["stable-3003", "git-3003", "stable-3004", "git-3004", "git-master", "latest"]' + + + ubuntu-2004: + name: Ubuntu 20.04 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: ubuntu-2004 + display-name: Ubuntu 20.04 + timeout: 20 + instances: '["stable-3003", "stable-3004", "git-master", "latest"]' + + + ubuntu-2204: + name: Ubuntu 22.04 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: ubuntu-2204 + display-name: Ubuntu 22.04 + timeout: 20 + instances: '["stable-3004", "git-master", "latest"]' + + + set-pipeline-exit-status: + # This step is just so we can make github require this step, to pass checks + # on a pull request instead of requiring all + name: Set the ${{ github.workflow }} Pipeline Exit Status + runs-on: ubuntu-latest + needs: + - lint + - generate-actions-workflow + - freebsd-131 + - freebsd-123 + - openbsd-6 + - macos-1015 + - macos-11 + - macos-12 + - windows-2019 + - windows-2022 + - almalinux-8 + - amazon-2 + - arch + - centos-7 + - centos-stream8 + - debian-10 + - debian-11 + - debian-9 + - fedora-35 + - fedora-36 + - gentoo + - gentoo-systemd + - opensuse-15 + - opensuse-tumbleweed + - oraclelinux-7 + - oraclelinux-8 + - rockylinux-8 + - ubuntu-1804 + - ubuntu-2004 + - ubuntu-2204 + if: always() + steps: + + - name: Download Exit Status Files + if: always() + uses: actions/download-artifact@v3 + with: + name: exitstatus + path: exitstatus + + - name: Delete Exit Status Artifacts + if: always() + uses: geekyeggo/delete-artifact@v1 + with: + name: exitstatus + failOnError: false + + - name: Set Pipeline Exit Status + run: | + grep -RE 'failure|cancelled' exitstatus/ && exit 1 || exit 0 + + - name: Done + if: always() + run: + echo "All worflows finished" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c00c5cd..1f5a6d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,81 +1,292 @@ -name: Release +name: Cut Release -on: - push: - tags: - - '*' +on: workflow_dispatch jobs: - bootstrap: - name: Update Release Checksums on Develop + update-develop: + name: Update CHANGELOG.md and bootstrap-salt.sh runs-on: ubuntu-latest - + if: github.repository == 'saltstack/salt-bootstrap' + permissions: + contents: write # To be able to publish the release + environment: Release steps: - - uses: actions/checkout@v2 - if: github.repository == 'saltstack/salt-bootstrap' + - name: Check For Admin Permission + uses: actions-cool/check-user-permission@v2 + with: + require: admin + username: ${{ github.triggering_actor }} + + - name: Check Branch Triggering Release + run: | + if [ "${{ github.ref_name }}" != "develop" ] + then + echo "This workflow should only be triggered from the develop branch" + exit 1 + fi + + - uses: actions/checkout@v3 + with: + ref: develop + repository: ${{ github.repository }} + ssh-key: ${{ secrets.SALT_BOOTSTRAP_RELEASE_KEY }} + + - name: Update Git Settings + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot] on behalf of ${{ github.event.sender.login }}" + + - name: Set up Python 3.7 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Requirements + run: | + python3 -m pip install requests pre-commit + pre-commit install --install-hooks + + - name: Update Repository + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + python3 .github/workflows/scripts/cut-release.py --repo ${{ github.repository }} + export CUT_RELEASE_VERSION=$(cat .cut_release_version) + echo "CUT_RELEASE_VERSION=${CUT_RELEASE_VERSION}" >> $GITHUB_ENV + + - name: Show Changes + run: | + git status + git diff + + - name: Commit Changes + run: | + git commit -am "Update develop branch for the ${CUT_RELEASE_VERSION} release" || \ + git commit -am "Update develop branch for the ${CUT_RELEASE_VERSION} release" + + - name: Push Changes + uses: ad-m/github-push-action@master + with: + repository: ${{ github.repository }} + branch: develop + ssh: true + + - name: Upload Release Details + uses: actions/upload-artifact@v3 + with: + name: release-details + path: | + .cut_release_version + .cut_release_changes + + merge-develop-into-stable: + name: Merge develop into stable + runs-on: ubuntu-latest + if: github.repository == 'saltstack/salt-bootstrap' + needs: update-develop + environment: Release + permissions: + contents: write # To be able to publish the release + steps: + - uses: actions/checkout@v3 with: ref: stable + repository: ${{ github.repository }} + ssh-key: ${{ secrets.SALT_BOOTSTRAP_RELEASE_KEY }} + fetch-depth: 0 - - name: Get bootstrap-salt.sh sha256sum - if: github.repository == 'saltstack/salt-bootstrap' + - name: Update Git Settings + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot] on behalf of @${{ github.event.sender.login }}" + + - name: Download Release Details + uses: actions/download-artifact@v3 + with: + name: release-details + + - name: Update Environment + run: | + export CUT_RELEASE_VERSION=$(cat .cut_release_version) + echo "CUT_RELEASE_VERSION=${CUT_RELEASE_VERSION}" >> $GITHUB_ENV + + - name: Merge develop into stable + run: | + git merge --no-ff -m "Merge develop into stable" origin/develop || touch .git-conflicts + if [ -f .git-conflicts ] + then + git diff + for f in $(git status | grep 'both modified' | awk '{ print $3 }') + do + git checkout --theirs $f + git add $f + done + git commit -a -m "Merge develop into stable(auto resolving conflicts to the develop version)" + fi + + - name: Tag Release + uses: mathieudutour/github-tag-action@v6.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + custom_tag: ${{ env.CUT_RELEASE_VERSION }} + tag_prefix: "" + create_annotated_tag: true + + - name: Push Changes + uses: ad-m/github-push-action@master + with: + repository: ${{ github.repository }} + branch: stable + tags: true + ssh: true + + publish-release: + name: Create GitHub Release + runs-on: ubuntu-latest + if: github.repository == 'saltstack/salt-bootstrap' + needs: merge-develop-into-stable + environment: Release + permissions: + contents: write # To be able to publish the release + steps: + - uses: actions/checkout@v3 + with: + ref: stable + repository: ${{ github.repository }} + ssh-key: ${{ secrets.SALT_BOOTSTRAP_RELEASE_KEY }} + - name: Download Release Details + uses: actions/download-artifact@v3 + with: + name: release-details + + - name: Update Environment + run: | + export CUT_RELEASE_VERSION=$(cat .cut_release_version) + echo "CUT_RELEASE_VERSION=${CUT_RELEASE_VERSION}" >> $GITHUB_ENV + + - name: Create Github Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.CUT_RELEASE_VERSION }} + tag_name: ${{ env.CUT_RELEASE_VERSION }} + body_path: .cut_release_changes + target_commitish: stable + draft: false + prerelease: false + generate_release_notes: false + files: | + bootstrap-salt.sh + bootstrap-salt.ps1 + LICENSE + + - name: Delete Release Details Artifact + uses: geekyeggo/delete-artifact@v1 + with: + name: release-details + failOnError: false + + update-develop-checksums: + name: Update Release Checksums on Develop + runs-on: ubuntu-latest + if: github.repository == 'saltstack/salt-bootstrap' + needs: publish-release + environment: Release + permissions: + contents: write # For action peter-evans/create-pull-request + pull-requests: write # For action peter-evans/create-pull-request + + steps: + - uses: actions/checkout@v3 + with: + ref: stable + repository: ${{ github.repository }} + ssh-key: ${{ secrets.SALT_BOOTSTRAP_RELEASE_KEY }} + + - name: Get bootstrap-salt.sh on stable branch sha256sum run: | echo "SH=$(sha256sum bootstrap-salt.sh | awk '{ print $1 }')" >> $GITHUB_ENV echo "BS_VERSION=$(sh bootstrap-salt.sh -v | awk '{ print $4 }')" >> $GITHUB_ENV - - uses: actions/checkout@v2 - if: github.repository == 'saltstack/salt-bootstrap' + - uses: actions/checkout@v3 with: ref: develop + repository: ${{ github.repository }} + ssh-key: ${{ secrets.SALT_BOOTSTRAP_RELEASE_KEY }} + + - name: Update Git Settings + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot] on behalf of @${{ github.event.sender.login }}" - name: Set up Python 3.7 - if: github.repository == 'saltstack/salt-bootstrap' - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: 3.7 - name: Update Latest Release on README - if: github.repository == 'saltstack/salt-bootstrap' run: | python3 .github/workflows/scripts/update-release-shasum.py ${{ env.BS_VERSION }} ${{ env.SH }} - - name: Create Pull Request Against Develop - uses: peter-evans/create-pull-request@v3 + - name: Show Changes + run: | + git status + git diff + + - name: Commit Changes + run: | + git commit -am "Update README.rst with ${{ env.BS_VERSION }} release sha256sum" || \ + git commit -am "Update README.rst with ${{ env.BS_VERSION }} release sha256sum" + + - name: Push Changes + uses: ad-m/github-push-action@master with: - title: Update README.rst with ${{ env.BS_VERSION }} release sha256sum - commit-message: Update README.rst with ${{ env.BS_VERSION }} release sha256sum - delete-branch: true + repository: ${{ github.repository }} + branch: develop + ssh: true + salt: name: Update Release on Salt Repo runs-on: ubuntu-latest + if: github.repository == 'saltstack/salt-bootstrap' + needs: update-develop-checksums + environment: Open PR Against Salt + permissions: + contents: write # For action peter-evans/create-pull-request + pull-requests: write # For action peter-evans/create-pull-request steps: - - uses: actions/checkout@v2 - if: github.repository == 'saltstack/salt-bootstrap' + - uses: actions/checkout@v3 with: ref: stable + repository: ${{ github.repository }} - name: Get bootstrap version - if: github.repository == 'saltstack/salt-bootstrap' run: | echo "BS_VERSION=$(sh bootstrap-salt.sh -v | awk '{ print $4 }')" >> $GITHUB_ENV - - uses: actions/checkout@v2 - if: github.repository == 'saltstack/salt-bootstrap' + - uses: actions/checkout@v3 with: repository: saltstack/salt ref: master path: salt-checkout + token: ${{ secrets.SALT_REPO_WRITE_TOKEN }} + + - name: Update Git Settings + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot] on behalf of @${{ github.event.sender.login }}" - name: Update bootstrap script on Salt - if: github.repository == 'saltstack/salt-bootstrap' run: | cp bootstrap-salt.sh salt-checkout/salt/cloud/deploy/bootstrap-salt.sh - name: Create Pull Request Against Develop - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v4 with: - title: Update the bootstrap script to v${{ env.BS_VERSION }} + title: "Update the bootstrap script to v${{ env.BS_VERSION }}" path: salt-checkout + base: master + token: ${{ secrets.SALT_REPO_WRITE_TOKEN }} commit-message: Update the bootstrap script to v${{ env.BS_VERSION }} delete-branch: true diff --git a/.github/workflows/scripts/cut-release.py b/.github/workflows/scripts/cut-release.py new file mode 100644 index 0000000..4cbda55 --- /dev/null +++ b/.github/workflows/scripts/cut-release.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python +import os +import re +import sys +import pathlib +import argparse +import requests +from datetime import datetime + +REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent.parent.parent + + +class ClassPropertyDescriptor: + def __init__(self, fget, fset=None): + self.fget = fget + self.fset = fset + + def __get__(self, obj, klass=None): + if klass is None: + klass = type(obj) + return self.fget.__get__(obj, klass)() + + def __set__(self, obj, value): + if not self.fset: + raise AttributeError("can't set attribute") + type_ = type(obj) + return self.fset.__get__(obj, type_)(value) + + def setter(self, func): + if not isinstance(func, (classmethod, staticmethod)): + func = classmethod(func) + self.fset = func + return self + + +def classproperty(func): + if not isinstance(func, (classmethod, staticmethod)): + func = classmethod(func) + + return ClassPropertyDescriptor(func) + + +class Session: + + _instance = None + + def __init__(self, endpoint=None): + if endpoint is None: + endpoint = "https://api.github.com" + self.endpoint = endpoint + self.session = requests.Session() + self.session.headers.update( + { + "Accept": "application/vnd.github+json", + "Authorization": f"token {os.environ['GITHUB_TOKEN']}", + } + ) + + @classproperty + def instance(cls): + if cls._instance is None: + cls._instance = cls() + return cls._instance + + def get(self, path, **kwargs): + return self.session.get(f"{self.endpoint}/{path.lstrip('/')}", **kwargs) + + def post(self, path, **kwargs): + return self.session.post(f"{self.endpoint}/{path.lstrip('/')}", **kwargs) + + def __enter__(self): + self.session.__enter__() + return self + + def __exit__(self, *args): + self.session.__exit__(*args) + + +def get_latest_release(options): + response = Session.instance.get(f"/repos/{options.repo}/releases/latest") + if response.status_code != 404: + return response.json()["tag_name"] + + print( + f"Failed to get latest release. HTTP Response:\n{response.text}", + file=sys.stderr, + flush=True, + ) + print("Searching tags...", file=sys.stderr, flush=True) + + tags = [] + page = 0 + while True: + page += 1 + response = Session.instance.get( + f"/repos/{options.repo}/tags", data={"pre_page": 100, "page": page} + ) + repo_tags = response.json() + added_tags = False + for tag in repo_tags: + if tag["name"] not in tags: + tags.append(tag["name"]) + added_tags = True + if added_tags is False: + break + + return list(sorted(tags))[-1] + + +def get_generated_changelog(options): + response = Session.instance.post( + f"/repos/{options.repo}/releases/generate-notes", + json={ + "tag_name": options.release_tag, + "previous_tag_name": options.previous_tag, + "target_commitish": "develop", + }, + ) + if response.status_code == 200: + return response.json() + return response.text + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--repo", required=True, help="The / to use") + parser.add_argument("--release-tag", required=False, help="The tag of the release") + parser.add_argument( + "--previous-tag", + required=False, + help="The previous release tag. If not passed, the GH Api will be queried for it.", + ) + + changelog_file = REPO_ROOT / "CHANGELOG.md" + + if not os.environ.get("GITHUB_TOKEN"): + parser.exit(status=1, message="GITHUB_TOKEN environment variable not set") + + options = parser.parse_args() + if not options.release_tag: + options.release_tag = f"v{datetime.utcnow().strftime('%Y.%m.%d')}" + if not options.previous_tag: + options.previous_tag = get_latest_release(options) + + print( + f"Creating changelog entries from {options.previous_tag} to {options.release_tag} ...", + file=sys.stderr, + flush=True, + ) + + changelog = get_generated_changelog(options) + if not isinstance(changelog, dict): + parser.exit( + status=1, + message=f"Unable to generate changelog. HTTP Response:\n{changelog}", + ) + + cut_release_version = REPO_ROOT / ".cut_release_version" + print( + f"* Writing {cut_release_version.relative_to(REPO_ROOT)} ...", + file=sys.stderr, + flush=True, + ) + cut_release_version.write_text(options.release_tag) + + cut_release_changes = REPO_ROOT / ".cut_release_changes" + print( + f"* Writing {cut_release_changes.relative_to(REPO_ROOT)} ...", + file=sys.stderr, + flush=True, + ) + cut_release_changes.write_text(changelog["body"]) + + print( + f"* Updating {changelog_file.relative_to(REPO_ROOT)} ...", + file=sys.stderr, + flush=True, + ) + changelog_file.write_text( + f"# {changelog['name']}\n\n" + + changelog["body"] + + "\n\n" + + changelog_file.read_text() + ) + + bootstrap_script_path = REPO_ROOT / "bootstrap-salt.sh" + print( + f"* Updating {bootstrap_script_path.relative_to(REPO_ROOT)} ...", + file=sys.stderr, + flush=True, + ) + bootstrap_script_path.write_text( + re.sub( + r'__ScriptVersion="(.*)"', + f'__ScriptVersion="{options.release_tag.lstrip("v")}"', + bootstrap_script_path.read_text(), + ) + ) + parser.exit(status=0, message="CHANGELOG.md and bootstrap-salt.sh updated\n") + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/scripts/update-release-shasum.py b/.github/workflows/scripts/update-release-shasum.py index 60a6600..46e38a0 100644 --- a/.github/workflows/scripts/update-release-shasum.py +++ b/.github/workflows/scripts/update-release-shasum.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import sys import pathlib +import subprocess THIS_FILE = pathlib.Path(__file__).resolve() CODE_ROOT = THIS_FILE.parent.parent.parent.parent @@ -9,6 +10,9 @@ README_PATH = CODE_ROOT / "README.rst" def main(version, sha256sum): in_contents = README_PATH.read_text() + if version in in_contents: + print(f"README file already contains an entry for version {version}") + sys.exit(1) out_contents = "" found_anchor = False updated_version = False @@ -32,6 +36,14 @@ def main(version, sha256sum): if in_contents != out_contents: README_PATH.write_text(out_contents) + ret = subprocess.run( + ["git", "diff", "--stat"], universal_newlines=True, capture_output=True + ) + if "1 file changed, 1 insertion(+)" not in ret.stdout: + print("Too Many Changes to the readme file") + sys.exit(1) + sys.exit(0) + if __name__ == "__main__": main(sys.argv[1], sys.argv[2]) diff --git a/.github/workflows/templates/ci-tail.yml b/.github/workflows/templates/ci-tail.yml new file mode 100644 index 0000000..403ddd5 --- /dev/null +++ b/.github/workflows/templates/ci-tail.yml @@ -0,0 +1,33 @@ + + set-pipeline-exit-status: + # This step is just so we can make github require this step, to pass checks + # on a pull request instead of requiring all + name: Set the ${{{{ github.workflow }}}} Pipeline Exit Status + runs-on: ubuntu-latest + needs: + {needs} + if: always() + steps: + + - name: Download Exit Status Files + if: always() + uses: actions/download-artifact@v3 + with: + name: exitstatus + path: exitstatus + + - name: Delete Exit Status Artifacts + if: always() + uses: geekyeggo/delete-artifact@v1 + with: + name: exitstatus + failOnError: false + + - name: Set Pipeline Exit Status + run: | + grep -RE 'failure|cancelled' exitstatus/ && exit 1 || exit 0 + + - name: Done + if: always() + run: + echo "All worflows finished" diff --git a/.github/workflows/templates/ci.yml b/.github/workflows/templates/ci.yml new file mode 100644 index 0000000..1982b9f --- /dev/null +++ b/.github/workflows/templates/ci.yml @@ -0,0 +1,102 @@ +name: CI +on: + - push + - pull_request + +concurrency: + # If changes are pushed to a PR, stop all running workflows before starting new ones + group: ${{ github.head_ref || (github.repository == 'saltstack/salt-bootstrap' && github.run_id || github.ref_name) }} + cancel-in-progress: true + +jobs: + + collect-changed-files: + name: Collect changed files + runs-on: ubuntu-latest + outputs: + run-tests: ${{ steps.set-output.outputs.run-tests }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Get specific changed files + id: changed-files + uses: tj-actions/changed-files@v25 + with: + separator: "," + files: | + bootstrap-salt.* + Gemfile + kitchen*.yml + tests/** + .github/workflows/** + files_ignore: | + .github/workflows/release.yml + + - name: Set Job Output + id: set-output + run: | + echo "::set-output name=run-tests::${{ steps.changed-files.outputs.any_modified }}" + + generate-actions-workflow: + name: Generate The Actions Workflow + runs-on: ubuntu-latest + needs: collect-changed-files + + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Pre-Commit + run: | + python3 -m pip install -U pip + python3 -m pip install pre-commit + pre-commit install --install-hooks + + - name: Generate Workflow Actions + run: | + pre-commit run -av generate-actions-workflow + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus + + lint: + name: Lint + runs-on: ubuntu-latest + needs: collect-changed-files + container: koalaman/shellcheck-alpine:v0.6.0 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + steps: + - uses: actions/checkout@v3 + - name: ShellCheck + run: | + shellcheck -s sh -f tty bootstrap-salt.sh + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus diff --git a/.github/workflows/templates/generate.py b/.github/workflows/templates/generate.py index 2b1cc1f..ab000e6 100755 --- a/.github/workflows/templates/generate.py +++ b/.github/workflows/templates/generate.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- import os +import json +import pathlib import datetime os.chdir(os.path.abspath(os.path.dirname(__file__))) @@ -14,7 +16,6 @@ LINUX_DISTROS = [ "debian-10", "debian-11", "debian-9", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -26,10 +27,23 @@ LINUX_DISTROS = [ "rockylinux-8", "ubuntu-1804", "ubuntu-2004", - "ubuntu-2110", "ubuntu-2204", ] -OSX = WINDOWS = [] +WINDOWS = [ + "windows-2019", + "windows-2022", +] + +OSX = [ + "macos-1015", + "macos-11", + "macos-12", +] +BSD = [ + "freebsd-131", + "freebsd-123", + "openbsd-6", +] STABLE_DISTROS = [ "almalinux-8", @@ -40,7 +54,6 @@ STABLE_DISTROS = [ "debian-10", "debian-11", "debian-9", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -52,50 +65,12 @@ STABLE_DISTROS = [ "rockylinux-8", "ubuntu-1804", "ubuntu-2004", - "ubuntu-2110", - "ubuntu-2204", -] - -BLACKLIST_3002 = [ - "almalinux-8", - "arch", - "centos-stream8", - "debian-11", - "fedora-34", - "fedora-35", - "fedora-36", - "gentoo", - "gentoo-systemd", - "opensuse-15", - "opensuse-tumbleweed", - "rockylinux-8", - "ubuntu-2204", -] - -BLACKLIST_GIT_3002 = [ - "almalinux-8", - "amazon-2", - "arch", - "centos-stream8", - "debian-10", - "debian-11", - "fedora-34", - "fedora-35", - "fedora-36", - "gentoo", - "gentoo-systemd", - "opensuse-15", - "opensuse-tumbleweed", - "rockylinux-8", - "ubuntu-2004", - "ubuntu-2110", "ubuntu-2204", ] BLACKLIST_3003 = [ "arch", "debian-11", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -111,7 +86,6 @@ BLACKLIST_GIT_3003 = [ "arch", "debian-10", "debian-11", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -126,7 +100,6 @@ BLACKLIST_GIT_3003 = [ BLACKLIST_3004 = [ "arch", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -140,7 +113,6 @@ BLACKLIST_GIT_3004 = [ "arch", "debian-10", "debian-11", - "fedora-34", "fedora-35", "fedora-36", "gentoo", @@ -152,23 +124,21 @@ BLACKLIST_GIT_3004 = [ "ubuntu-2204", ] -SALT_BRANCHES = [ - "3002", +SALT_VERSIONS = [ "3003", "3004", "master", "latest", ] -BRANCH_DISPLAY_NAMES = { - "3002": "v3002", +VERSION_DISPLAY_NAMES = { "3003": "v3003", "3004": "v3004", "master": "Master", "latest": "Latest", } -STABLE_BRANCH_BLACKLIST = [] +STABLE_VERSION_BLACKLIST = [] LATEST_PKG_BLACKLIST = [] @@ -181,7 +151,6 @@ DISTRO_DISPLAY_NAMES = { "debian-10": "Debian 10", "debian-11": "Debian 11", "debian-9": "Debian 9", - "fedora-34": "Fedora 34", "fedora-35": "Fedora 35", "fedora-36": "Fedora 36", "gentoo": "Gentoo", @@ -193,8 +162,15 @@ DISTRO_DISPLAY_NAMES = { "rockylinux-8": "Rocky Linux 8", "ubuntu-1804": "Ubuntu 18.04", "ubuntu-2004": "Ubuntu 20.04", - "ubuntu-2110": "Ubuntu 21.10", "ubuntu-2204": "Ubuntu 22.04", + "macos-1015": "macOS 10.15", + "macos-11": "macOS 11", + "macos-12": "macOS 12", + "freebsd-131": "FreeBSD 13.1", + "freebsd-123": "FreeBSD 12.3", + "openbsd-6": "OpenBSD 6", + "windows-2019": "Windows 2019", + "windows-2022": "Windows 2022", } TIMEOUT_DEFAULT = 20 @@ -202,170 +178,270 @@ TIMEOUT_OVERRIDES = { "gentoo": 90, "gentoo-systemd": 90, } -BRANCH_ONLY_OVERRIDES = [ +VERSION_ONLY_OVERRIDES = [ "gentoo", "gentoo-systemd", ] +TEMPLATE = """ + {distro}: + name: {display_name}{ifcheck} + uses: {uses} + needs: + - lint + - generate-actions-workflow + with: + distro-slug: {distro} + display-name: {display_name} + timeout: {timeout_minutes}{runs_on} + instances: '{instances}' +""" + def generate_test_jobs(): test_jobs = "" - branch_only_test_jobs = "" + needs = ["lint", "generate-actions-workflow"] - for distro in LINUX_DISTROS + OSX + WINDOWS: + for distro in BSD: + test_jobs += "\n" + runs_on = "macos-10.15" + runs_on = f"\n runs-on: {runs_on}" + ifcheck = "\n if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true'" + uses = "./.github/workflows/test-bsd.yml" + instances = [] timeout_minutes = ( TIMEOUT_OVERRIDES[distro] if distro in TIMEOUT_OVERRIDES else TIMEOUT_DEFAULT ) - needs = " needs: lint" - if distro in BRANCH_ONLY_OVERRIDES: - needs = "" - current_test_jobs = "" + for salt_version in SALT_VERSIONS: - for branch in SALT_BRANCHES: - - if branch == "latest": + if salt_version == "latest": if distro in LATEST_PKG_BLACKLIST: continue - if distro in LINUX_DISTROS: - template = "linux.yml" - elif distro in OSX: - template = "osx.yml" - elif distro in WINDOWS: - template = "windows.yml" - else: - print("Don't know how to handle {}".format(distro)) - with open(template) as rfh: - current_test_jobs += "\n{}\n".format( - rfh.read() - .replace( - "{python_version}-{bootstrap_type}-{branch}-{distro}", - "{branch}-{distro}", - ) - .format( - distro=distro, - branch=branch, - display_name="{} Latest packaged release".format( - DISTRO_DISPLAY_NAMES[distro], - ), - timeout_minutes=timeout_minutes, - needs=needs, - ) - ) + instances.append(salt_version) continue - for python_version in ("py3",): + if distro == "openbsd-6": + # Only test latest on OpenBSD 6 + continue - for bootstrap_type in ("stable", "git"): - if bootstrap_type == "stable": - if branch == "master": - # For the master branch there's no stable build - continue - if distro not in STABLE_DISTROS: - continue + if salt_version != "master": + # Only test the master branch on BSD's + continue - if branch in STABLE_BRANCH_BLACKLIST: - continue - - if distro.startswith("fedora") and branch != "latest": - # Fedora does not keep old builds around - continue + # BSD's don't have a stable release, only use git + for bootstrap_type in ("git",): + BLACKLIST = { + "3003": BLACKLIST_3003, + "3004": BLACKLIST_3004, + } + if bootstrap_type == "git": BLACKLIST = { - "3002": BLACKLIST_3002, - "3003": BLACKLIST_3003, - "3004": BLACKLIST_3004, + "3003": BLACKLIST_GIT_3003, + "3004": BLACKLIST_GIT_3004, } - if bootstrap_type == "git": - BLACKLIST = { - "3002": BLACKLIST_GIT_3002, - "3003": BLACKLIST_GIT_3003, - "3004": BLACKLIST_GIT_3004, - } - # .0 versions are a virtual version for pinning to the first point release of a major release, such as 3002, there is no git version. - if branch.endswith("-0"): - continue - - if ( - branch in ("3002", "3003", "3004") - and distro in BLACKLIST[branch] - ): + # .0 versions are a virtual version for pinning to the first + # point release of a major release, such as 3003, + # there is no git version. + if salt_version.endswith("-0"): continue - if distro in LINUX_DISTROS: - template = "linux.yml" - elif distro in OSX: - template = "osx.yml" - elif distro in WINDOWS: - template = "windows.yml" - else: - print("Don't know how to handle {}".format(distro)) + if ( + salt_version in ("3003", "3004") + and distro in BLACKLIST[salt_version] + ): + continue - with open(template) as rfh: - current_test_jobs += "\n{}\n".format( - rfh.read().format( - distro=distro, - branch=branch, - python_version=python_version, - bootstrap_type=bootstrap_type, - display_name="{} {} {} {}".format( - DISTRO_DISPLAY_NAMES[distro], - BRANCH_DISPLAY_NAMES[branch], - python_version.capitalize(), - bootstrap_type.capitalize(), - ), - timeout_minutes=timeout_minutes, - needs=needs, - ) - ) - if distro in BRANCH_ONLY_OVERRIDES: - branch_only_test_jobs += current_test_jobs + kitchen_target = f"{bootstrap_type}-{salt_version}" + instances.append(kitchen_target) + + if instances: + needs.append(distro) + test_jobs += TEMPLATE.format( + distro=distro, + runs_on=runs_on, + uses=uses, + ifcheck=ifcheck, + instances=json.dumps(instances), + display_name=DISTRO_DISPLAY_NAMES[distro], + timeout_minutes=timeout_minutes, + ) + + test_jobs += "\n" + for distro in OSX: + test_jobs += "\n" + if distro == "macos-1015": + runs_on = "macos-10.15" else: - test_jobs += current_test_jobs + runs_on = distro + runs_on = f"\n runs-on: {runs_on}" + ifcheck = "\n if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true'" + uses = "./.github/workflows/test-macos.yml" + instances = [] + timeout_minutes = ( + TIMEOUT_OVERRIDES[distro] + if distro in TIMEOUT_OVERRIDES + else TIMEOUT_DEFAULT + ) - with open("lint.yml") as rfh: - lint_job = "\n{}\n".format(rfh.read()) + for salt_version in SALT_VERSIONS: - with open("pre-commit.yml") as rfh: - pre_commit_job = "\n{}\n".format(rfh.read()) + if salt_version == "latest": - with open("../main.yml", "w") as wfh: - with open("main.yml") as rfh: - wfh.write( - "{}\n".format( - rfh.read() - .format( - jobs="{pre_commit}{lint}{test}".format( - lint=lint_job, - test=test_jobs, - pre_commit=pre_commit_job, - ), - on="push, pull_request", - name="Testing", - ) - .strip() - ) + instances.append(salt_version) + continue + + for bootstrap_type in ("stable",): + if bootstrap_type == "stable": + if salt_version == "master": + # For the master branch there's no stable build + continue + + kitchen_target = f"{bootstrap_type}-{salt_version}" + instances.append(kitchen_target) + + if instances: + needs.append(distro) + test_jobs += TEMPLATE.format( + distro=distro, + runs_on=runs_on, + uses=uses, + ifcheck=ifcheck, + instances=json.dumps(instances), + display_name=DISTRO_DISPLAY_NAMES[distro], + timeout_minutes=timeout_minutes, ) - with open("../main-branch-only.yml", "w") as wfh: - with open("main.yml") as rfh: - wfh.write( - "{}\n".format( - rfh.read() - .format( - jobs="{test}".format( - test=branch_only_test_jobs, - ), - on="push", - name="Branch Testing", - ) - .strip() - ) + test_jobs += "\n" + for distro in WINDOWS: + test_jobs += "\n" + runs_on = f"\n runs-on: {distro}" + ifcheck = "\n if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true'" + uses = "./.github/workflows/test-windows.yml" + instances = [] + timeout_minutes = ( + TIMEOUT_OVERRIDES[distro] + if distro in TIMEOUT_OVERRIDES + else TIMEOUT_DEFAULT + ) + + for salt_version in SALT_VERSIONS: + + if salt_version == "latest": + + instances.append(salt_version) + continue + + for bootstrap_type in ("stable",): + if bootstrap_type == "stable": + if salt_version == "master": + # For the master branch there's no stable build + continue + + kitchen_target = f"{bootstrap_type}-{salt_version}" + instances.append(kitchen_target) + + if instances: + needs.append(distro) + test_jobs += TEMPLATE.format( + distro=distro, + runs_on=runs_on, + uses=uses, + ifcheck=ifcheck, + instances=json.dumps(instances), + display_name=DISTRO_DISPLAY_NAMES[distro], + timeout_minutes=timeout_minutes, ) + test_jobs += "\n" + for distro in LINUX_DISTROS: + test_jobs += "\n" + runs_on = "" + ifcheck = "\n if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true'" + uses = "./.github/workflows/test-linux.yml" + instances = [] + timeout_minutes = ( + TIMEOUT_OVERRIDES[distro] + if distro in TIMEOUT_OVERRIDES + else TIMEOUT_DEFAULT + ) + if distro in VERSION_ONLY_OVERRIDES: + ifcheck = "\n if: github.event_name == 'push'" + + for salt_version in SALT_VERSIONS: + + if salt_version == "latest": + if distro in LATEST_PKG_BLACKLIST: + continue + + instances.append(salt_version) + continue + + for bootstrap_type in ("stable", "git"): + if bootstrap_type == "stable": + if salt_version == "master": + # For the master branch there's no stable build + continue + if distro not in STABLE_DISTROS: + continue + + if salt_version in STABLE_VERSION_BLACKLIST: + continue + + if distro.startswith("fedora") and salt_version != "latest": + # Fedora does not keep old builds around + continue + + BLACKLIST = { + "3003": BLACKLIST_3003, + "3004": BLACKLIST_3004, + } + if bootstrap_type == "git": + BLACKLIST = { + "3003": BLACKLIST_GIT_3003, + "3004": BLACKLIST_GIT_3004, + } + + # .0 versions are a virtual version for pinning to the first + # point release of a major release, such as 3003, + # there is no git version. + if salt_version.endswith("-0"): + continue + + if ( + salt_version in ("3003", "3004") + and distro in BLACKLIST[salt_version] + ): + continue + + kitchen_target = f"{bootstrap_type}-{salt_version}" + instances.append(kitchen_target) + + if instances: + needs.append(distro) + test_jobs += TEMPLATE.format( + distro=distro, + runs_on=runs_on, + uses=uses, + ifcheck=ifcheck, + instances=json.dumps(instances), + display_name=DISTRO_DISPLAY_NAMES[distro], + timeout_minutes=timeout_minutes, + ) + + ci_src_workflow = pathlib.Path("ci.yml").resolve() + ci_tail_src_workflow = pathlib.Path("ci-tail.yml").resolve() + ci_dst_workflow = pathlib.Path("../ci.yml").resolve() + ci_workflow_contents = ci_src_workflow.read_text() + test_jobs + "\n" + ci_workflow_contents += ci_tail_src_workflow.read_text().format( + needs="\n".join([f" - {need}" for need in needs]).lstrip() + ) + ci_dst_workflow.write_text(ci_workflow_contents) + if __name__ == "__main__": generate_test_jobs() diff --git a/.github/workflows/templates/lint.yml b/.github/workflows/templates/lint.yml deleted file mode 100644 index 273e115..0000000 --- a/.github/workflows/templates/lint.yml +++ /dev/null @@ -1,12 +0,0 @@ - lint: - name: Lint - runs-on: ubuntu-latest - - needs: generate-actions-workflow - - container: koalaman/shellcheck-alpine:v0.6.0 - steps: - - uses: actions/checkout@v1 - - name: ShellCheck - run: | - shellcheck -s sh -f tty bootstrap-salt.sh diff --git a/.github/workflows/templates/linux.yml b/.github/workflows/templates/linux.yml deleted file mode 100644 index e956676..0000000 --- a/.github/workflows/templates/linux.yml +++ /dev/null @@ -1,44 +0,0 @@ - {python_version}-{bootstrap_type}-{branch}-{distro}: - name: {display_name} - runs-on: ubuntu-latest - timeout-minutes: {timeout_minutes} - -{needs} - - steps: - - uses: actions/checkout@v1 - - name: Setup Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: 2.6.x - - - name: Install Bundler - run: | - gem install bundler - - - name: Setup Bundle - run: | - bundle install --with docker --without opennebula ec2 windows vagrant - - - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - - name: Install Python Dependencies - run: | - pip install -U pip - pip install -r tests/requirements.txt - - - name: Create Test Container - run: | - bundle exec kitchen create {python_version}-{bootstrap_type}-{branch}-{distro} || bundle exec kitchen create {python_version}-{bootstrap_type}-{branch}-{distro} - - - name: Test Bootstrap In Test Container - run: | - bundle exec kitchen verify {python_version}-{bootstrap_type}-{branch}-{distro} - - - name: Destroy Test Container - if: always() - run: | - bundle exec kitchen destroy {python_version}-{bootstrap_type}-{branch}-{distro} diff --git a/.github/workflows/templates/pre-commit.yml b/.github/workflows/templates/pre-commit.yml deleted file mode 100644 index 654d2a5..0000000 --- a/.github/workflows/templates/pre-commit.yml +++ /dev/null @@ -1,20 +0,0 @@ - generate-actions-workflow: - name: Generate The Actions Workflow - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - - name: Install Pre-Commit - run: | - pip install -U pip - pip install pre-commit - pre-commit install - - - name: Generate Workflow Actions - run: | - pre-commit run -av generate-actions-workflow diff --git a/.github/workflows/test-bsd.yml b/.github/workflows/test-bsd.yml new file mode 100644 index 0000000..62fcfa5 --- /dev/null +++ b/.github/workflows/test-bsd.yml @@ -0,0 +1,97 @@ +name: Test FreeBSD & OpenBSD +on: + workflow_call: + inputs: + distro-slug: + type: string + required: true + description: The Distribution Slug + + display-name: + type: string + required: true + description: The Display Name For The Job + + runs-on: + type: string + required: true + description: The GitHub MacOS Worker To Run Workflow On + + instances: + type: string + required: true + description: The Instances To Test + + timeout: + type: number + required: false + default: 20 + description: The timeout(in minutes) for the workflow + +env: + VAGRANT_HOME: '${{ github.workspace }}/.vagrant.d' + KITCHEN_LOCAL_YAML: 'kitchen.bsd.yml' + +jobs: + Test: + name: ${{ matrix.instance }} + runs-on: ${{ inputs.runs-on }} + timeout-minutes: ${{ inputs.timeout }} + strategy: + fail-fast: false + matrix: + instance: ${{ fromJSON(inputs.instances) }} + + steps: + - uses: actions/checkout@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6.10 + bundler-cache: true + + - name: Setup Vagrant Cache + uses: actions/cache@v3 + with: + path: | + ${{ github.workspace }}/.kitchen + ${{ github.workspace }}/.vagrant.d/ + key: "${{ runner.os }}|vagrant|${{ inputs.distro-slug }}|${{ hashFiles('Gemfile', '.github/workflows/test-bsd.yml', 'kitchen.bsd.yml') }}" + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python Dependencies + run: | + pip install -U pip + pip install -r tests/requirements.txt + + - name: Create Test Instance + run: | + bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }} || \ + (sleep 10 && bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }}) + + - name: Test Bootstrap + run: | + bundle exec kitchen verify ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Destroy Test Instance + if: always() + run: | + bundle exec kitchen destroy ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml new file mode 100644 index 0000000..3949aff --- /dev/null +++ b/.github/workflows/test-linux.yml @@ -0,0 +1,80 @@ +name: Test Linux +on: + workflow_call: + inputs: + distro-slug: + type: string + required: true + description: The Distribution Slug + + display-name: + type: string + required: true + description: The Display Name For The Job + + instances: + type: string + required: true + description: The Instances To Test + + timeout: + type: number + required: false + default: 20 + + +jobs: + Test: + name: ${{ matrix.instance }} + runs-on: ubuntu-latest + timeout-minutes: ${{ inputs.timeout }} + strategy: + fail-fast: false + matrix: + instance: ${{ fromJSON(inputs.instances) }} + + steps: + - uses: actions/checkout@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6.10 + bundler-cache: true + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python Dependencies + run: | + python3 -m pip install -U pip + python3 -m pip install -r tests/requirements.txt + + - name: Create Test Instance + run: | + bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }} || \ + (sleep 10 && bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }}) + + - name: Test Bootstrap + run: | + bundle exec kitchen verify ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Destroy Test Instance + if: always() + run: | + bundle exec kitchen destroy ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml new file mode 100644 index 0000000..0c6c0da --- /dev/null +++ b/.github/workflows/test-macos.yml @@ -0,0 +1,88 @@ +name: Test MacOS +on: + workflow_call: + inputs: + distro-slug: + type: string + required: true + description: The Distribution Slug + + display-name: + type: string + required: true + description: The Display Name For The Job + + runs-on: + type: string + required: true + description: The GitHub MacOS Worker To Run Workflow On + + instances: + type: string + required: true + description: The Instances To Test + + timeout: + type: number + required: false + default: 20 + description: The timeout(in minutes) for the workflow + +env: + KITCHEN_LOCAL_YAML: 'kitchen.macos.yml' + +jobs: + Test: + name: ${{ matrix.instance }} + runs-on: ${{ inputs.runs-on }} + timeout-minutes: ${{ inputs.timeout }} + strategy: + fail-fast: false + matrix: + instance: ${{ fromJSON(inputs.instances) }} + + steps: + - uses: actions/checkout@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6.10 + bundler-cache: true + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python Dependencies + run: | + pip install -U pip + pip install -r tests/requirements.txt + + - name: Create Test Instance + run: | + bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }} || \ + (sleep 10 && bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }}) + + - name: Test Bootstrap + run: | + bundle exec kitchen verify ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Destroy Test Instance + if: always() + run: | + bundle exec kitchen destroy ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml new file mode 100644 index 0000000..c034c9d --- /dev/null +++ b/.github/workflows/test-windows.yml @@ -0,0 +1,113 @@ +name: Test Windows +on: + workflow_call: + inputs: + distro-slug: + type: string + required: true + description: The Distribution Slug + + display-name: + type: string + required: true + description: The Display Name For The Job + + runs-on: + type: string + required: true + description: The GitHub Windows Worker To Run Workflow On + + instances: + type: string + required: true + description: The Instances To Test + + timeout: + type: number + required: false + default: 20 + description: The timeout(in minutes) for the workflow + +env: + machine_user: kitchen + machine_pass: Password1 + machine_port: 5985 + KITCHEN_LOCAL_YAML: 'kitchen.windows.yml' + +jobs: + Test: + name: ${{ matrix.instance }} + runs-on: ${{ inputs.runs-on }} + timeout-minutes: ${{ inputs.timeout }} + strategy: + fail-fast: false + matrix: + instance: ${{ fromJSON(inputs.instances) }} + + steps: + - uses: actions/checkout@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6.10 + bundler-cache: true + + - name: Install Chef + uses: actionshub/chef-install@1.1.0 + with: + project: chef + version: 16.10.8 + + - name: Add Chef bindir to PATH + uses: myci-actions/export-env-var-powershell@1 + with: + name: PATH + value: "C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin;$env:PATH" + + - name: Setup test user + run: | + $password = ConvertTo-SecureString $env:machine_pass -AsPlainText -Force + New-LocalUser $env:machine_user -Password $password + Add-LocalGroupMember -Group "Administrators" -Member $env:machine_user + + - name: Set up WinRM + run: | + Set-WSManQuickConfig -Force + + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python Dependencies + run: | + pip install -U pip + pip install -r tests/requirements.txt + + - name: Create Test Instance + run: | + bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }} || \ + (sleep 10 && bundle exec kitchen create ${{ matrix.instance }}-${{ inputs.distro-slug }}) + + - name: Test Bootstrap + run: | + bundle exec kitchen verify ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Destroy Test Instance + if: always() + run: | + bundle exec kitchen destroy ${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Set Exit Status + if: always() + run: | + mkdir exitstatus + echo "${{ job.status }}" > exitstatus/${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }} + + - name: Upload Exit Status + if: always() + uses: actions/upload-artifact@v3 + with: + name: exitstatus + path: exitstatus diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2cdb73a..b4d63be 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ minimum_pre_commit_version: 1.15.2 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.1.0 + rev: v4.3.0 hooks: - id: check-merge-conflict # Check for files that contain merge conflict strings. - id: trailing-whitespace # Trims trailing whitespace. @@ -11,8 +11,13 @@ repos: args: [--fix=lf] - id: end-of-file-fixer # Makes sure files end in a newline and only a newline. + - repo: https://github.com/executablebooks/mdformat + rev: 0.7.14 + hooks: + - id: mdformat + - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 22.6.0 hooks: - id: black @@ -22,7 +27,7 @@ repos: name: Generate Github Actions Workflow entry: .github/workflows/templates/generate.py pass_filenames: false - files: '.github/workflows/templates/.*' + files: '^.github/workflows/.*$' language: script - id: shellcheck diff --git a/AUTHORS.rst b/AUTHORS.rst index 3424e38..fb75513 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,5 +1,11 @@ +This authors list is kept for historical purposes +================================================= + +Feel free to add yourself to this list, but for a full list of contributors, +`check here `_. + Authors -======= +------- Here's a list of everyone who contributed to salt-bootstrap in alphabetical order. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bc0fabe --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,965 @@ +# v2022.08.12 + +## What's Changed + +- Update README.rst with 2022.05.19 release sha256sum by @github-actions in https://github.com/saltstack/salt-bootstrap/pull/1832 +- ci(eol): remove `fedora-34` and `3002` by @myii in https://github.com/saltstack/salt-bootstrap/pull/1835 +- ci(freebsd): replace `13.0` with newly released `13.1` box by @myii in https://github.com/saltstack/salt-bootstrap/pull/1836 +- feat: add support and update CI for openSUSE Leap 15.4 by @myii in https://github.com/saltstack/salt-bootstrap/pull/1837 +- Rename to py39-salt, Python 3.9 is default version on FreeBSD by @krionbsd in https://github.com/saltstack/salt-bootstrap/pull/1842 +- Adding bits to install Salt packages built using Tiamat. by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1819 +- replace all references of tiamat to onedir by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1845 +- use SHA-256 key for Red Hat / CentOS relesaes 9 and over. by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1846 +- Add version for Salt version 3005. by @garethgreenaway in https://github.com/saltstack/salt-bootstrap/pull/1848 +- Automate the release process by @s0undt3ch in https://github.com/saltstack/salt-bootstrap/pull/1849 +- Tighten Release Workflow Permissions & Rework the CI Workflow by @s0undt3ch in https://github.com/saltstack/salt-bootstrap/pull/1850 +- Fix Release Workflow by @s0undt3ch in https://github.com/saltstack/salt-bootstrap/pull/1852 +- Fix parameter name for the changed files action by @s0undt3ch in https://github.com/saltstack/salt-bootstrap/pull/1853 +- Specify the repository by @s0undt3ch in https://github.com/saltstack/salt-bootstrap/pull/1854 + +**Full Changelog**: https://github.com/saltstack/salt-bootstrap/compare/v2022.05.19...v2022.08.12 + +# v2022.05.19: + +- Fix situations where the registry key for root_dir does not exist + on Windows (twangboy) #1828 +- Add Ubuntu 22 support (krionbsd) #1820 +- Add Fedora 36 support (myii) #1818 + +# v2022.03.15: + +- Add detection and functions for AlmaLinux and Rocky Linux (myii) #1803 +- Copy configs to correct config dirs (v3004+) (dafyddj) #1798 +- Support Non-LTS Ubuntu 21.04 & 21.10 (blindpirate) #1793 +- Use native repositories for Debian 11 (jpacura) #1615 +- Keep all command-line parameters when UAC is enabled (Simon-TheUser) #1613 +- Add support for Raspbian (Jille) #1612 +- Add openrc to alpine:latest dependencies (krionbsd) #1609 +- Add CentOS 7 base key (bryceml) #1608 +- Fix git master install on alpine 3.12+ (Nascire) #1604 +- Sort help alphabetically (krionbsd) #1601 + +# v2021.09.17: + +- Re-add Ubuntu-16 support as it's still supported with 3001 and 3002 (krionbsd) #1594 +- Add oncoming 3004 release (krionbsd) #1593 + +# v2021.09.14: + +- Update latest Salt version in README (krionbsd) #1588 +- Make Python 3 the default (bryceml) #1577 +- Don't output info if using the default -x value (bryceml) #1587 + +# v2021.08.19: + +- Update README with instructions to use salt-bootstrap custom version (ari) #1580 +- Remove unsupported versions (bryceml) #1578 +- Update FreeBSD default Python version to 3.8 (myii) #1574 + +# v2021.06.23: + +- Use salt.list instead of saltstack.list (bryceml) #1563 +- Use fetch_url function for curl (xeacott) #1562 +- Add Ubuntu 21.04 support (krionbsd) #1559 +- Remove python2-futures package for ArchLinux (myii) #1546 + +# v2020.03.02: + +- Debian 11 (bullseye/testing) support using Debian 10 packages (jpacura, bryceml) #1514 +- Fix bootstrap on Gentoo (ijansky) #1516 #1518 +- Fix project URLs (bryceml) #1526 +- FreeBSD also needs the \_PKI_DIR reset (krionbsd) #1523 +- Fix openSUSE Tumbleweed support. (myii) #1525 +- Fix Debian and Ubuntu version support. (jpacura) #1529 +- Powershell: Implement configure only option (for Vagrant). (dafyddj) #1530 +- Powershell: Handle Vagrant's `grains_config` option. (dafyddj) #1520 +- apt-key is deprecated on Debian 10+ and Ubuntu 20+ (bryceml) #1533 +- Fix python Tornado on FreeBSD. (krionbsd) #1522 + +# v2020.10.20: + +- Add support to allow bootstrapping Salt 3002 (s0undt3ch) #1506 + +# v2020.10.19: + +- Fix v3000+ with git install on FreeBSD (krionbsd) #1487 +- Update README giving ONE example of WINDOWS bootstrapping. Default to python3 instead of + python2. (noelmcloughlin) #1496 +- Support git and stable salt-bootstrap on Gentoo. (ijansky) #1500 +- Add support for Linux Mint 20. (taigrr) #1502 +- Adding missing functions for Red Hat 8. (mbochenk) #1489 +- Allow pinning minor 3xxx versions. (max-arnold) #1491 + +# v2020.06.23: + +- Fix for Cumulus Linux 4.1 (darylturner) #1474 +- Fix file download exit code, improve error message on failed download (bryceml) #1478 +- Add support for Ubuntu 20.04 (bryceml) #1479 +- Default Ubuntu 20.04 to Py3 since there isn't a Py2 release for it (bryceml) #1480 +- Warn instead of exit when using -R and -x python3 on centos to allow installing python3 + versions of salt on centos from other repos. Old unsupported releases probably need to + manually install epel-release before running the bootstrap script for versions before 2018.3.5 + and before 2019.2.1 (bryceml) #1482 +- Start maintaining .sha256 files for the bootstrap script + +# v2020.05.28: + +- Fix Opensuse Tumbleweed (noelmcloughlin) #1441 +- Remove Debian 8 from Python 3 supported list (jay1648) #1448 +- Fixed deps parsing for FreeBSD git installs (cedwards) #1462 +- Added support for the upcoming Sodium release (s0undt3ch) #1466 +- Fixed KDE Neon detection (ender8282) #1466 +- Updated README python 2 and 3 installations (gdebunne) #1466 +- Updated README and CONTRIBUTING to prefer Salt's master branch (DmitryKuzmenko) #1466 +- Fixed IUS repo addresses (oeuftete) #1469 +- Updated tests to assert target Python and Salt versions (s0undt3ch) #1470 +- Fixed Amazon 2 -x support (s0undt3ch) #1470 +- Fix Fedora stable installs for older releases (s0undt3ch) #1470 +- Fix CentOS 8 installations (s0undt3ch) #1470 +- Default Debian 10 to Py3 (s0undt3ch) #1470 +- Fix Arch Linux installs (s0undt3ch) #1470 + +# v2020.02.24: + +- Fix SLES 15 install (max298) #1431 +- Fix 3000(Neon) stable install (sblaisot) #1433 +- Fix Amazon Linux Py3 install (s0undt3ch) #1434 + +# v2020.02.04: + +- Add support for the Salt Neon(3000) release (s0undt3ch) #1424 +- Drop support for Fedora \< 30 (s0undt3ch) #1424 +- Drop support for Debian \< 8 (s0undt3ch) #1424 + +# v2020.01.29: + +- FreeBSD fixes (cedwards) #1413 +- Support the upcoming Neon release (s0undt3ch) #1420 + +# v2020.01.21: + +- FreeBSD fixes (kgbsd) #1376 +- Fix macOS support (s0undt3ch) #1397 + +# v2019.11.04: + +- Fix busybox mktemp compatibility (stanzgy) #1369 +- Install debian 10 packages on debian 10 instead of 9 (kiemlicz) #1375 +- move centos to python36, use python specified by -x (Ch3LL,bryceml) #1380 +- Add debian 10 git install support (Ch3LL) #1378 + +# v2019.10.03: + +- Fix possible typo with `gnupg-curl` vs `gnupg curl` (zahiar) +- Install only python3 packges if requested on ubuntu (noelmcloughlin) #1356 +- Fixing debian wheezy (bryceml) #1359 +- Fixed Amazon Linux 2 detection when lsb_release is installed (jars99) #1361 +- Mac OS Support (felippeb) #1363 #1364 #1365 #1366 + +# v2019.05.20: + +- Allow stable version selection for amazon linux (puluanau) #1328 +- FreeBSD 12 support (sticky-note) #1329 +- Apt wait for lock modification (ripesensor) #1335 +- Opensuse 15 Git installation fixes (s0undt3ch) #1340 #1341 +- Amazon Linux Image fixes (nshenry03) #1343 +- apt_key_fetch fixes (greut) #1344 +- CentOS Git and PIP installation m2crypto fixes (s0undt3ch) #1347 +- CI process enhancements/fixes (s0undt3ch) #1347 + +# v2019.02.27: + +- Add support for bunsenlabs devian derivative (kevinquinnyo) #1300 +- Add support for TurnKey devian derivative (dafyddj) #1313 +- Fix BSD develop install (hackacad) #1316 +- Ensure python-concurrent.futures is installed for Ubuntu (garethgreenaway) #1321 + +# v2019.01.08: + +- use official amazon linux 2 repo for amazon linux 2 (mchugh19) #1287 +- Add release info to applicable docs (rallytime) #1292 +- Modify wait_for_apt function (ripesensor) #1291 +- Add support for LinuxMint 19 (darkocerdic) #1289 +- FIX #1237 SmartOS should use pkgin show-deps (sjorge) #1283 +- Fedora: Reduce DNF calls to 2 during install_dep phase (The-Loeki) #1278 + +# v2018.08.15: + +- Add tests using kitchen-salt (gtmanfred) #1279 +- Add python-futures to Py2 installs (gtmanfred) #1279 + +# v2018.08.13: + +- Fedora Py3 fixes (The-Loeki) #1273 +- Handle commented lines in the requirements files for pip pkgs (rallytime) #1271 +- Remove typo: extra 'c' was accidentally added in #1269 (rallytime) #1270 +- \[Arch\] Add python2-futures to list of pkgs on git install (rallytime) #1269 +- Fix undefined variable warn_msg on amd64 (alexandruavadanii) #1268 +- SLES12SP changed packages git to git-core and libzmq3 to libzmq4 (mfapouw) #1266 +- Add opensuse 15 specific installation functions (rallytime) #1263 +- Remove support for openSUSE Leap 42.2 (rallytime) #1262 +- Remove support for Fedora 26 (rallytime) #1261 +- Remove support for Ubuntu 17.10 (rallytime) #1260 +- Ensure pipe is absent before mkfifo/mknod (noelmcloughlin) #1256 +- fix for opensuse15 if no lsb_release pkg (noelmcloughlin) #1255 +- Fix Up ShellCheck errors/warnings for latest version of shellcheck (rallytime) #1253 +- Remove daily install option on Ubuntu system (icy) #1250 +- Add python 3 support for Ubuntu 18 (rallytime) #1248 +- Return immediately if apt-get fails (icy) #1247 +- Disable shell error about unbound variable during daily install (icy) #1246 +- OpenSuse_Leap_15.0 saltstack repo support (noelmcloughlin) #1244 +- Add Python3 package support for Debian 9 (rallytime) #1243 +- Add Python3 package support for CentOS 7 (rallytime) #1242 +- Shellcheck fixes found when running latest version (rallytime) #1239 +- Add Python3 package support for Ubuntu 16.04 (rallytime) #1238 +- Fix the variable ref from #803 (rallytime) #1229 +- Add Ubuntu 18.04 support (rallytime) #1228 +- Call \_\_git_clone_and_checkout directly (jheidbrink) #1226 +- Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 + +# v2018.04.25: + +- Install py-tornado4 for FreeBSD. (abednarik) #1219 +- Remove COPR repos configuration for Fedora (vutny ) #1211 +- Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 +- Use integer parameter for sleep command (bdrung) #1205 +- Add 2018.3 branch to list of stable options (rallytime) #1204 +- If installing with -P, install tornado\<5.0. (rallytime) #1203 +- Add M2Crypto to python27 centos 6 bootstrap install (Ch3LL) #1201 +- Update README to include mention of bootstrap-salt.ps1 for Windows (rallytime) #1200 +- Port spelling fixes from change in Salt to Bootstrap (rallytime) #1199 +- Add M2Crypto package back to git install functions (rallytime) #1198 +- OpenBSD has a cdn which handles selecting the best mirror (jasperla) #1197 +- Change gnupg2 pacakge to gnupg for non-LTS versions of Ubuntu (rallytime) #1196 +- Install swig30 as freebsd dep instead of swig. (abednarik) #1191 +- make salt-syndic optional on salt bootstrap (sybix) #1190 +- Add \_\_wait_for_apt function: avoid locking on the apt-get process (rallytime) #1186 +- Update the README.rst file with some grammatical changes (rallytime) #1185 +- Update Fedora support: 25 is EOL, 27 is supported (rallytime) #1184 +- Add a note about the use of sudo when running commands to README (rallytime) #1183 +- Adding support for minor release pinning on AWS Linux (cmclaughlin) #1182 +- Wait for zypper processes to finish before calling zypper again (rallytime) #1181 +- only install ca-certificates on opensuse if it isn't already installed (gtmanfred) #1179 + +# v2017.12.13: + +- Use HTTPS URL for OpenSuse's saltstack repo (gdm85) #1174 +- Respect disable repos (-r) option on OpenBSD (eradman) #1171 +- Fix #1168 : -b option causes error (vutny) #1170 +- Fix fatal error with using the -b option. (arizvisa) #1169 +- Devuan support (ymasson) #1165 +- Fix yum repo on AWS Linux (cmclaughlin) #1164 +- Use suse repo to install packages, rather than defining them (rallytime) #1157 +- Remove patch-level-1 specific code for SLES installs (rallytime) #1156 +- priority sort fedora-release (toanju) #1153 +- Declare EOL for SUSE Linux Enterprise Server releases (vutny) #1150 +- Fix #1142: allow git install on Raspbian 9 (vutny) #1146 +- Follow symlinks when parsing distro release files (vutny) #1145 +- fedora: use dnf-utils for F26 and above (toanju) #1144 +- Declare EOL for openSUSE LEAP 42.1 (vutny) #1143 +- Fix #1137: import GPG key through an HTTP(S) proxy (vutny) #1139 +- Fix #1138: git install on Debian/Ubuntu various arches (vutny) #1141 +- Declare EOL for openSUSE releases earlier and including 13.X (vutny) #1136 +- Update Fedora support: 24 is EOL (rallytime) #1134 + +# v2017.08.17: + +- Add new authors (rallytime) #1130 +- README: Fix typo and Table of Contents for Debian section (vutny) #1129 +- Reduce the # of days an issue is stale to 6 months (rallytime) #1125 +- Only install Python version if "-y" is defined (rallytime) #1124 +- Allow powershell bootstrap script to specify PY2 or 3 (rallytime) #1123 +- Remove the test that checks if the EPEL RPM was installed (amendlik) #1122 +- added latest version string of nitrogen release 2017.7 (sourceindex) #1120 +- use versions specified in base.txt when doing pip installs (aflat) #1116 +- Remove pip install requirement on Fedora git installs (rallytime) #1114 +- Introductory support for Debian 10 (Buster) (rallytime) #1113 +- Add Debian 9 support using official repo.saltstack.com packages (rallytime) #1111 +- Fix 1105 (vernondcole) #1110 +- Move SUSE specific function closer to related code (vutny) #1107 +- Update Authors file (rallytime) #1103 +- Fix ubuntu 16.04 LTS installation (BlaineAtAffirm) #1102 +- Add debian_codename_translation function, similar to Ubuntu (rallytime) #1101 +- Add the CODE_OF_CONDUCT.md file (rallytime) #1100 +- Update Debian and Ubuntu service file paths to be consistent with salt (rallytime) #1099 +- Add hash verification information to installation instructions (rallytime) #1098 +- Fix installing salt-cloud package on Arch Linux (rallytime) #1097 +- Support bootstrapping on upcoming Debian GNU/Linux 9.0 (vutny) #1096 +- Removes faulty explicit version ordering (absolutejam) #1095 +- Remove configuring EPEL repo for Amazon Linux (vutny) #1093 +- Fix -j/-J (JSON configs) options for Debian 8 (vutny) #1092 +- Fix #1035: detect and log errors earlier (vutny) #1091 +- Update AUTHORS file (rallytime) #1089 +- Autounmask as separate step (decomposite) #1088 +- Ensure presence of CONFIG_PROTECT_MASK files (decomposite) #1087 +- Update Fedora support: 23 is EOL now. (rallytime) #1084 +- Fix the -R option on Debian/Ubuntu (rallytime) #1082 +- Declare End-Of-Life for Ubuntu 12.04 LTS (vutny) #1080 + +# v2017.05.24: + +- Use freebsd repo to query for salt dependencies (Ch3LL) #1076 +- Allow amazon to work with python2.7 on installs over 2016.11 (Ch3LL) #1073 +- ensure sles12 enables services with stable installs (Ch3LL) #1075 +- Declare End-of-Life for RHEL 5 and its variants (vutny) #1070 +- Fix configuring SaltStack's repo URL for RHEL variants (vutny) #1068 +- Add Manjaro as Arch derivative (luthes) #1063 +- Add "unmarkComment" option to probot-stale config (rallytime) #1064 +- Properly detect all supported Debian GNU/Linux derivatives (vutny) #1062 +- Archlinux must always update (gtmanfred) #1060 +- Alpine: fix adding, checking and running Salt Syndic in stable mode (vutny) #1059 +- Add KDE neon... (EHJ-52n) #1058 +- Update probot-stale message formatting. (rallytime) #1057 +- Fix `git` bootstrap mode for CentOS (vutny) #1054 +- update install_freebsd_10_stable to use FreeBSD repo (bytesatwork-xx) #1053 +- Support OpenBSD 6.1 (eradman) #1048 +- Update daysUntilStale value in probot-stale config (rallytime) #1055 +- Add ability to install and use a different python version when installing salt (Ch3LL) #1049 +- Add non-LTS type support for Ubuntu 17.04 (rallytime) #1051 +- Allow -R option to work for Debian/Ubuntu (rallytime) #1045 +- Adjust "daysUntilStale" variable to 190 days. #1047 +- Reduce the number of days an issue is considered "stale" (rallytime) #1046 +- Alpine: fix bootstrapping from Git -- install OpenRC initscripts (vutny) #1044 +- Add probot-stale config file (rallytime) #1042 +- Shallow cloning and Python setup fix for BSD (amontalban) #1040 +- Fix not needed quoting for salt/salt-bootstrap#1026 (amontalban) #1039 +- Update README file with supported release documentation (rallytime) #1034 +- Remove \<\<\< bashism (The-Loeki) #1032 +- \[-R option\] Fix logic error where we trying to enable epel with -R (rallytime) #1033 +- Alpine: check Salt services have been enabled to start on boot (vutny) #1031 +- AWS Linux Native Support (bkruger99) #1022 +- Correct package name for FreeBSD installation (amontalban) #1030 +- README: describe architectures support for Salt deps on Linux distros (vutny) #1029 +- This commit addresses some of the issues in salt/salt-bootstrap#996 (amontalban) #1026 +- Add support for stable installation on Alpine Linux release 3.5 (vutny) #1028 +- Alpine Linux: fix installation of multiple pkgs ("stable" bootstrap) (vutny) #1027 +- Add Void Linux support (ndrwdn) #1025 +- RHEL6: disable stdin to fix shell session hang on killing tee pipe (vutny) #1018 +- Adding 2016.11 to stable version (ashokrajar) #1017 +- Update bootstrap-salt.sh (caelor) #1015 +- Alpine Linux support #1009 (ek9) #1010 +- Add Table of Contents in README (vutny) #1014 + +# v2017.01.10: + +- Update AUTHORS.rst with new contributors (rallytime) #1011 +- fix bootstrap in Arch Linux by updating package name from salt-zmq to salt (ek9) #1007 +- Add python-systemd package to debian 8 git install (rallytime) #1003 +- Updated supported versions for Ubuntu: 12.04, 14.04, 16.04, and 16.10 (best effort) (rallytime) #1002 +- Add "yakkety" to ubuntu_codename_translation function (rallytime) #1001 +- Update supported versions for Fedora: 23, 24, and 25. (rallytime) #1000 +- Handle renaming of gnupg-curl to gnupg1-curl for Ubuntu 16.10 (marco-m) #998 +- fix systemctl path (dmitrievav) #997 +- Drop unnecessary workarounds (creating directories) for early releases (vutny) #995 +- Let's detect newly released Salt 2016.11 stable release (vutny) #994 +- Adjust code examples to use the actual bootstrap-salt.sh file name (rallytime) #993 +- Install TLS certs before cloning git repo via https (vutny) #991 +- Remove fix me comment and fix systemsmanagement link (rallytime) #990 +- Correct usage description about "config only" mode (vutny) #989 +- Fix overwriting Minion config from temporarily directory (vutny) #988 +- Configure Salt components after the dependencies installation (vutny) #987 +- Add CloudLinux support (rallytime) #986 +- Apply the insecure flag to git as well (cachedout) #981 + +# v2016.10.25: + +- Update AUTHORS.rst with new contributors (rallytime) #978 +- Let's start detecting the upcoming Debian 9 (Stretch) (lhost) #975 +- FreeBSD: set \_SALT_ETC_DIR directory to match ports (eradman) #970 +- Update OpenBSD 6.0+ provisioning (eradman) #969 +- adds supports for Cumulus Linux (plumbis) #967 +- Run "pip install -U futures" for SmartOS git install (rallytime) #966 +- Change /pkg/rpm/ to /pkg/deb/ in install_ubuntu_git_post func (rallytime) #965 +- SUSE: Refactor systemsmanagement_saltstack repo checks to be DRY (rallytime) #964 +- Fix detection of EPEL repository with not-expired metadata (sp1r) #963 +- Display warning message about deprecating the `-G` option (vutny) #958 +- Allow correct salt paths to be used when -c is passed (justinta) #955 +- Fix issues with replacing configs when python3 is default in os. (fizmat) #954 +- Remove m2crypto package installs (rallytime) #951 +- Try to install SP4 packages on SLE 11 when SP version is older (rallytime) #950 +- Add python-futures package to install_centos_git_deps (rallytime) #948 +- Add /etc/portage/package.accept_keywords to CONFIG_PROTECT_MASK (rallytime) #947 +- Deprecate `-G` option: use `https` scheme for GitHub by default (vutny) #945 +- \[SECURITY\] Properly handle GnuPG keys for APT repositories (vutny) #940 + +# v2016.08.16: + +- Ubuntu git mode: install all deps from SaltStack corp repo by default. (vutny) #936 + +# v2016.08.15: + +- Remove chris-lea python-zmq repo. (rallytime) #929 +- Disable the '--enablerepo=${\_EPEL_REPO}' part of yum install cmds when passing -R/-r. (rallytime) #928 +- Fix grep pattern in `__check_services_sysvinit`. (vutny) #927 +- Missing python dependency for salt-cloud added. (toanju) #925 +- Fix git install mode when using commit hash with `-g` option. (vutny) #922 +- Install `salt-cloud` package with `-L` option in `stable` mode. (vutny) #919 +- Fix bootstrapping from Git on CentOS7 when `systemd` is not running. (vutny) #915 + +# v2016.07.07: + +- Add new contributors to authors list. (rallytime) #910 +- Split up python-requests and python-msgpack packages for newer Fedora. (rallytime) #909 +- Fix typo in repository configuration for FreeBSD. (ekollof) #907 +- Make sure $STABLE_REV is set before setting up SaltStack repo. (rallytime) #906 +- Remove tests written question from template. (rallytime) #904 +- Adding support for Linux Mint 18 (based on Ubuntu 16.04). (eliezerlp) #902 +- Allow git installation for SLES 12. (rallytime) #903 +- Set repo_arch for raspberry pi installs. (mrichar1) #899 +- Change temporary directory for storing executable to C:\\Windows\\Temp. (themalkolm) #897 +- add apt-transport-https for ubuntu. (epcim) #896 +- Fix expanding shell script position parameters with nounset enabled. (vutny) #895 +- RFC: Add tests for bootstrap-salt.ps1. (themalkolm) #893 +- Keep original name of salt executable executable. (themalkolm) #857 + +# v2016.06.27: + +- Fix race condition when doing one-liner bootstrap. (vutny) #889 +- Add space back in between 'install' and '--install'. (rallytime) #890 + +# v2016.06.24: + +- Save invocation command and arguments into variables. (jfindlay) #885 +- Update the authors list with new contributors. (rallytime) #884 +- Add option to make setup.py install quiet. (nasenbaer13) #865 +- Fix lint. (jfindlay) #881 +- Add -R option to allow a custom repo URL. (rallytime) #877 +- Exclude path of script when called from another dir. (l2ol33rt) #871 +- Print invocation info. (jfindlay) #869 +- Always refresh the Arch Linux keyring if needed. (cachedout) #868 +- Ubuntu 16.04 LTS Xenial Support. (notpeter) #852 +- Install Salt packages from repo.saltstack.com on Debian 7 "Wheezy". (vutny) #864 +- Drop support for Debian 6 old-old-stable "squeeze": reached end-of-life. (vutny) #860 +- Removed ubuntu version restriction for apt-get update. (marccardinal) #859 +- Fix bootstrapping from git on Debian 8 by installing latest `tornado` via pip. (vutny) #828 +- Add the ability to override master and/or minion configs from CLI. (rallytime) #841 +- Don't sleep 11 seconds if the user allowed overwrite of config files. (poelzi) #832 + +# v2016.05.11: + +- Only overwrite the minion config file if '-C' is passed. Otherwise, preserve it. (rallytime) #848 + +# v2016.05.10: + +- Removed libzmq4 and forking-deamon-patch for Opensuse13. (jtand) #840 +- Ubuntu 12.04 needs to be updated before installing packages. (jtand) #829 +- Always download and install *latest* `epel-release` package on RHEL systems. (vutny) #825 +- Fix Amazon Linux EOL check. (vutny) #818 + +# v2016.04.18: + +- Add support for openSUSE Leap. Thanks Roman Inflianskas(rominf). #693 +- Fix missing deps installation on Debian. Thanks Steve Groesz(wolfpackmars2). #699 +- Update SaltStack repo location and latest version for Windows. (brandon099) #711 +- Better EPEL repository detection on RHEL and CentOS. (vutny) #717 +- Fix git invocation fail when `man` command is not available. (vutny) #718 +- Fix `epel-release` package installation on CentOS/RHEL 5. (vutny) #719 +- Removed deprecated cli option. (abednarik) #705 +- Remove RHEL optional repo check and enable. (vutny) #720 +- Remove SaltStack COPR repository configuration for CentOS/RHEL5. (vutny) #721 +- Add opensuse_Tumbleweed support. (aboe76) #725 +- Sometimes bootstrap doesn't install zmq. (jtand) #726 +- Process -s (default sleep for service restarts) in bootstrap-salt.sh. (hipikat) #692 +- Minion keys and /etc/salt/minion should be overwritten on -C. (cro) #541 +- Fix for -C (\_CONFIG_ONLY). (beaucephus) #544 +- Fix when using upstream tags. (The-Loeki) #564 +- COPR project moved. (rmohr) #738 +- Update license year range. (pra85) #743 +- Use POSIX-Compliant Command-Exists Test. (kojiromike) #741 +- Add -f option to force shallow cloning. (eyj) #660 +- add SLE 12 support, fix OpenSUSE support. (grep4linux) #748 +- Fix CentOS git setup.py syntax error upon installation. (The-Loeki) #746 +- Enable shallow cloning for version branches by default, not only tags. (vutny) #750 +- do not install copr repo on fedora 22+. (toanju) #751 +- Add support for pegged versions on YUM based OS'ses through repo.saltstack.com. (The-Loeki) #685 +- fix for FreeBSD 11 CURRENT install functions. (serge-p) #723 +- Don't add zypp repo if it already exists. (furlongm) #731 +- switch repositories for suse and sles fixes `#706`\_. (aboe76) #734 +- Reformat and correct usage instructions. (vutny) #755 +- fixed missing repo for suse 12. (aboe76) #756 +- fix for Amazon Linux. (shawnbutts) #700 +- adding support for OpenBSD distribution. (serge-p) #722 +- fixing syntax errors. (beardedeagle) #760 +- Import CentOS 7 GPG key on RHEL for installing base dependencies from Salt corp repo. (vutny) #765 +- Fix multiple lint errors (shellcheck) and make some refactoring. (vutny) #768 +- Fix sleep time option to recognize a numeric argument. (vutny) #771 +- Update README. (vutny) #787 +- get tornado from pip on a fedora git install. (jfindlay) #785 +- Remove the Saltstack repo's alias. (cro) #794 +- Ability to change cache dir. (clarkperkins) #761 +- Add config_freebsd_salt func so freebsd puts cfgs in the right place. (ryanwalder) #779 +- Allow archive versions. (clarkperkins) #769 +- Lack of HTTPS for RPM packages. (jaredestroud) #783 +- Ability to change cache dir. (clarkperkins) #761 +- Bootstrap on Docker. (vutny) #793 +- add downstream pkg repo for SUSE. (jfindlay) #791 +- Fixed use of HTTP over HTTPS for anonscm.debian.org. (gdm85) #788 +- Bump Salt version to latest stable in PS bootstrap script for Windows. (vutny) #801 +- Add an -l option to switch https to http links. (rallytime) #795 +- Virtualenv support for Ubuntu. (l2ol33rt) #666 +- Lint. (jfindlay) #805 +- use portable command check. (jfindlay) #806 +- Update epel-release version number (RuriRyan) #809 + +# v2015.11.09 + +- Make sure that wget is installed. #868 + +# v2015.11.04: + +- Allow bypassing dependencies installation. Thanks EYJ. #656. +- Add FreeBSD 11 support. Thanks Chris Buechler(cbuechler). #653 +- Move RHEL installations to use repo.saltstack.com #674 +- Move Debian 8 installation to use repo.saltstack.com #674 +- Fix error finding python-jinja2 in RHEL 7. Thanks Rob Eden(hedinfaok). #654 +- Move Ubuntu 12 and 14 installations to use repo.saltstack.com #674 +- Move FreeBSD installations to use repo.saltstack.com #674 +- Use dnf on Fedora 22 and later. Thanks Michele Bologna (mbologna). #665 + +# v2015.08.06: + +- Fix python-requests installations for Ubuntu >= 14.04 LTS. #631, #632, #633 +- Install python-crypto from Chris Lea's PPA for Ubuntu \< 14.04 +- Exit the git checkout directory before deleting it. Thanks Bret Fisher. #634 +- Use prefix /usr for centos git install. Thanks Stanislav B. #638 +- Drop Ubuntu EOL versions. All Ubuntu version before 12.04. +- Make sure python-dev is installed wheb trying to install tornado from PyPi. #640 + +# v2015.07.22: + +- Fix tornado installation in Ubuntu. Thanks Yushi Nakai. #627 +- Install tornado using pip on Ubuntu for Salt's v2015.8.xx onward stable releases. +- Install requests on Ubuntu from Chris Lea's PPA. #630 + +# v2015.07.17: + +- Make sure setuptools is installed before using it. #598. +- `systemd` is only fully supported from 15.04 onwards. #602 +- Fix debian mirrors issue. Thanks Wolodja Wentland(babilen). #606 +- Fix python-jinja2 repo move on RHEL6. Thanks lomeroe. #621 +- Allow skipping services. Thanks denmat. #455 +- Fix missing Debian init script. #607 saltstack/salt#25270 and saltstack/salt#25456 +- Fix SmartOS etc path. Thanks Bret Fisher. #624 +- Fix possible unbound variable in Gentoo. #625 +- Properly detect the git binary in SmartOS. #611 + +# v2015.05.07: + +- Lower required requests version dependency. Use system requests package where possible. +- Allow Ubuntu alternate ppas. Thanks Peter Tripp(notpeter). #563 + +# v2015.05.04: + +- Fix the configuration path for FreeBSD. #567/#552. Thanks Ronald van Zantvoort(The-Loeki). + \+ Fix non grouping support in POSIX sed. Thanks Ronald van Zantvoort(The-Loeki). +- Add Debian 8 support. Thanks Matt Black(mafrosis) +- Improve Debian version parsing. Thanks Mark Lee(malept) +- Make sure we update packages list one Chris Lea's PPA repository is added. +- Hard code the Debian Squeeze backports to the DE mirror since the main repository is down. + Thanks @panticz. #589. +- Only install git if not already installed. #560 +- Fix openSUSE 13.2 where we need to pass --replaceflags. Thanks Roman Inflianskas(rominf). + #504. +- Make sure that a recent enough requests package is installed in Debian/Ubuntu. +- Install tornado on git installs for the develop branch if necessary. #580 +- Add support for Ubuntu 15.04 + +# v2015.03.15: + +- Add multi-master support. Thanks Fred Reimer(freimer). #555 + +# v2015.03.04: + +- Fix the salt package selection on Arch stable installs. + +# v2015.02.28: + +- Fix Debian backports repository. + +# v2015.02.27: + +- Try other tools besides wget when downloading the COPR repo file. Thanks Ronald van + Zantvoort(The-Loeki) +- No need to install packages from the Unstable repository for debian, use backports. Thanks + Ari Aosved(devaos) +- Fix an issue in CentOS where the syndic package wasn't being installed(since it's now a + separate package). Thanks Ronald van Zantvoort(The-Loeki) +- Enable the server-optionals repository for RHEL >= 7 +- RHEL/CentOS 5 now uses the COPR repository. #533 + +# v2015.01.12: + +- Add package upgrades support to FreeBSD. Thanks William Eshagh(eshagl). +- Make sure wget is installed on debian bare systems. +- Make sure the Arch pacman database is up to date +- Install `python-hashlib` in CentOS 5 in order to use the COPR repository + +# v2014.12.11: + +- Enable binary installations on CentOS 7. Thanks ggillies +- Updated the URL for EPEL 7 + +# v2014.10.30: + +- Apply the forking patch to openSUSE git installations. + +# v2014.10.28: + +- Install the python systemd bindings for Arch and Fedora git installations +- Allow cloning from Salt's git repository using HTTPS. #475 + +# v2014.10.21: + +- Fix path to python on FreeBSD. Thanks Pavel Snagovsky(paha) +- Fix syndic installation on RHEL based installations. Thanks markgaylard +- Properly detect the git checkout `basename` directory instead of hard coding it. Thanks + Howard Mei(HowardMei). +- Allow installing ZMQ for SaltStack's COPR repository. +- Allow installing ZMQ4/PyZMQ14 from Chris Lea's PPA repository. + +# v2014.10.14: + +- Fixed a regex issue with matching Salt's tags. Match v2014.7 but not 2014.7 as a valid tag +- Distro Support Added: +- Added Linux Mint 17 support(Thanks Skyler Berg) +- Disrto Suuport Fixed: +- Init pacman keys if not done so previously + +# v2014.09.25: + +- Properly detect Amazon AMI's >= 2014.9. #468 + +# v2014.09.09: + +- Distro Support Fixes: +- Updated the URL for EPEL 7 +- PIP based installations on Ubuntu 10.04 need setuptools installed +- Arch stopped providing the version information on `/etc/arch-release` +- Complete `salt-api` services checking. #450 + +# v2014.08.30: + +- Skip service checks for `salt-api`, since this should be an opt-in service not necessarily + meant to start at boot time. +- Distro Support Fixes: +- Also install the salt-api service on RHEL based distributions for git based + installations. +- Properly detect Arch Linux when lsb-release is available +- Updated the URL for EPEL 7 + +# v2014.08.23: + +- Avoid redirect breakage when installing EPEL with rpm on RHEL 5 +- Ensure python-apt is installed by the bootstrap script for Debian & Ubuntu minions. Thanks + @garethgreenaway. +- Don't shallow clone on git versions lower than 1.7.10 +- Only shallow clone on git tag based installations +- Configurable Salt repository clone directory for git based installations +- Distro Support Fixed: +- Fixed the URL to download EPEL for Cent 5 +- Use the full path to the `chkconfig` binary when checking for services in SysV init + systems. +- Fixed an issue where the default sleep period(3 secs) on Ubuntu would cause a race + condition with upstart wherein the package installation would call an upstart start and + before it could complete, bootstrap would call another. The result was *two* copies of salt + running which ended up causing a most stubborn bug that's documented in + https://github.com/saltstack/salt/issues/12248 + +# v2014.07.29: + +- Shallow clone Salt's repository for speed improvements. In case of failure, resume old + behaviour. +- Fixed bug introduced in 0577622 when salt-api service install and checks were added +- Distro Support Fixed: +- Fixed infinite loop when handling RHEL dependencies. Thanks Dan Mick(@dmick). + +# v2014.07.27: + +- Amazon Linux AMI 2010.xx is not explicitly not supported. +- Install the `salt-api` scripts if available when the `salt-master` is also installed. +- Added support for a configurable sleep time when starting, restarting and checking for + enabled services. +- Drop the `tsflags` requirement for RHEL and RHEL based distributions. +- When sorting release files, oracle-release has higher priority than redhat-release. +- Distro Support Fixed: +- Debian >= 7 uses system's python-requests package, not PIP +- Install 'python-zypp' in SuSE and openSUSE(required by Salt's zypper module) +- Only install EPEL on requiring distributions if not already installed +- CentOS 7 now uses systemd and the script now properly handles it +- systemd in openSUSE 12.2 complains if service does not contain ``` .service`` * Properly detect openSUSE using ```lsb_release +- SLES 11 SP3 ships with both python-M2Crypto-0.22.\* and python-m2crypto-0.21 and we will + be asked which we want to install, even with --non-interactive. Let's try to install the + higher version first and then the lower one in case of failure. +- Allow some extra time on RHEL for the optionals repo check in case the repository + subscription is being managed externally. + +# v2014.06.30: + +- Distro Support Fixed: +- Bump build/maintenance version for epel-release package. Thanks Gregory Meno(GregMeno) +- Properly detect Amazon Linux AMI when using `lsb_release` +- Fix `tsflags` installation. + +# v2014.06.28: + +- Fixed `tsflags` packages detection for RHEL and Oracle Linux 6.5 + +# v2014.06.21: + +- Also export the HTTPS proxy environment variable. Thanks Giuseppe Iannello(gianello). +- Distro Support Fixed: +- Improve Oracle Linux Server detection +- Overcome the Oracle Linux awkwardness. `--enablerepo=XYX` disables ALL OTHER REPOS!!!! +- Oracle Linux also support testing repositories installation + +# v2014.06.19: + +- Allow passing the master address as an environment variable, `BS_SALT_MASTER_ADDRESS` +- Fixed an issue with the keys pre-seed. We were passing absolute paths where we only needed + basenames. +- Added HTTP proxy configuration support. Thanks Giuseppe Iannello(gianello), +- Distro Support Added: +- Elementary OS +- RHEL 7 Beta/RC +- Kali Linux. Thanks Valentin Bud(valentinbud) +- Distro Support Fixed: +- Improved RHEL optionals repository detection + +# v2014.04.16: + +- Fixed a bug for RHEL 6 based distributions where yum-utils was not getting installed. +- Added minor version check for RHEL 6 optional channel. +- Added quotes around "apache-libcloud>=$\_LIBCLOUD_MIN_VERSION" for proper version requirements + handling. +- Install the python 'requests' package which is now a hard dependency in Salt. +- When installing from a user defined repository add the official one as a remote and fetch + its tags for proper versioning. +- Distro Support Fixed: +- CentOS netinstall ISO's don't install `chkconfig` +- Improved RHEL optional repository detection. This allows user repository usage, which + don't need the optional repository support since they usually provide their packages. +- Distro Support Added: +- Oracle Linux +- Scientific Linux + +# v2014.03.10-1: + +- Distro Support Fixed: +- Fix the Debian services running function + +# v2014.03.10: + +- Debian based distributions which don't use upstart now also check if the salt services are + enabled. +- Distro Support Fixed: +- RedHat based distributions now have a proper services enabled checker. + +# v2014.02.27: + +- Fixed a bug on the services enabled function searching logic. +- Arch, Fedora, openSUSE and SuSE now check for services enabled, if using systemd +- CentOS(and any RedHat based) and Ubuntu now check for services enabled is using upstart +- Distro Support Added: +- Debian 8. Thank You Boris Feld(Lothiraldan). + +# v2014.02.19: + +- Fixed a problem with the quotes of an error message +- Arch installations now uses the community repository +- Distro Support Fixed: +- Fixed Fedora Git based installations(git was not being installed) + +# v2014.02.18: + +- Debian based distribution now get a warning stating that NOT starting daemons does not work + as supposed, mainly because that's the Debian policy. +- Fix bug introduced when implementing the master ip flag. The default minion includes + directory is `minion.d`, not `minion.conf.d` + +# v2014.02.16: + +- The script now allows setting up the salt-master address as a separate configuration file by + passing `-A` to the script. +- Add support to install apache-libcloud by passing the `-L` flag. In some distribution it's + also needed to pass `-P` because the minimal apache-libcloud version is `0.14.0`. This support + is still missing for FreeBSD and SmartOS. +- Fixed an issue when copying or moving files. We now test to see if the destination is a + directory and create a full path from that so that the "do not override" logic works as + supposed. #294. +- Allow passing additional package names to install while installing Salt's dependencies. #262 +- Pass the salt configuration directory, default or from environment variable to the setup.py + script for git based installations. #305 +- Distro Support Fixed: +- FreeBSD `fetch` now has a notion of insecure certificates. Handle this properly. Thank + You Mike Carlson(m87carlson). +- Arch, openSUSE and SuSE are now upgradable when the `-U` flag is passed. +- Force overwrites now works for existing init.d scripts on CentOS git installations. #259 +- Distro Support Added: +- FreeBSD 10 is now also supported. Thank You Mike Carlson(m87carlson). +- Red Had Enterprise Workstation is now supported. + +# v1.5.11: + +- Fixed an out of scope variable missed when moving functions around. + +# v1.5.10: + +- Salt no longer has the master branch in git, install from develop as default. +- Installing from Git on Red Hat based distributions now also needs `yum-utils` installed. +- Allow the script to use a different git repository to install from. +- Fixed a bug where a branch name with dashes would be wrongly detected as an option to the + script. +- Default to secure file downloads(if any). +- Distro Support Fixed: +- Minimal Ubuntu installation might not have upstart installed, fixed. +- FreeBSD now uses the official FreeBSD repository. Thank You Paul Brian(lifeisstillgood)! + +# v1.5.9: + +- Allow to not start the daemons after bootstrapping salt. This will allow `vagrant-lxc` + installations, `debootstrap*`, etc, to finish properly. Thanks Henrik Holmboe (holmboe). +- Distro Support Fixed: +- Salt >= 0.17 requires ElementTree which is on the python standard library after python + 2.6 but openSUSE split that into a separate package. +- Fixed a logic preventing proper Ubuntu bootstrapping on some situations. + +# v1.5.8: + +- Fixed an Ubuntu regression. `add-apt-repository` is only available on + `software-properties-common` after 12.10, inclusive. Thanks Diego Woitasen(diegows) + +# v1.5.7: + +- For RedHat based distributions which rely on `epel`, the user can now pass `testing` to the + script and `epel-testing` shall be used to bootstrap salt and it's dependencies. +- No full system upgrades, if optional by the distribution, shall be done unless `-U` is passed + to the bootstrap script(required upgrade procedures must exist on the script, currently Debian + and RedHat based distributions support system upgrades). +- Fixed an issue where passing BS_KEEP_TEMP_FILES=1 to the script was causing an error. #206. +- Switched FreeBSD default packages repository to PCBSD(http://www.pcbsd.org) and added + multiple repository support to install salt from the SaltStack's FreeBSD repository. Thanks + Christer Edwards(cedwards). +- Improved Gentoo Support. Thanks Elias Probst(eliasp). +- Stop execution soon for end of life distributions or non supported distribution versions. +- Distro Support Fixed: +- Fixed an unbound variable while bootstraping Gentoo. +- Fixed CentOS/RHEL 5. +- Fixed crypto++ compilation. Thanks Kenneth Wilke(KennethWilke)! +- Fixed FreeBSD git installations not pointing to the proper salt configuration directory, + which on FreeBSD is '/usr/local/etc/salt'. +- Fixed testing installation for Red Hat based distributions. Thanks Jeff Strunk(jstrunk) +- Fixed wrong package name on Arch. Thanks Niels Abspoel(aboe76) +- Make sure the Ubuntu universe repository is enabled. Thanks Karl Grzeszczak(karlgrz). +- Fixed SmartOS installation. Thanks Matthieu Guegan(mguegan). + +# v1.5.6: + +- If there's a `grains` file on the provided temporary configuration directory, move it to the + proper place while moving the minion configuration file. +- Gentoo bootstraps can now use a bin host to provide binary packages, just set the + `BS_GENTOO_USE_BINHOST` environment variable. +- If `BS_KEEP_TEMP_FILES=1` is found on the environment, the script will copy the files instead + of moving them. +- There were still some `mv` and `cp` occurrences which were not using their `{move,copy}file` + replacements which ended up on now respecting the "Do not override existing configuration" + feature. +- Distro Support Fixed: +- Arch now upgrades it's system package properly as suggested on their mailing list. +- Arch now moves back any configuration files provided by the user renamed by pacman on the + installation process. +- Fixed SmartOS detection(was being detected as Solaris) and bootstrapping. Fixed SmartOS + different gcc package names for different package sets. +- Fixed FreeBSD git based installations(no rc.d scripts were available). +- Fixed FreeBSD not re-evaluating the `PKI_DIR` variable since the `SALT_ETC_DIR` was + redefined. +- Distro Support Added: +- Linux Mint. Thanks Alex Van't Hof(alexvh)! +- Linaro. + +# v1.5.5: + +- Fixed a variable error in the new pre-seed feature. +- Fixed the destination path to where the pre-seed minions keys should be copied. +- Debian installations now use SaltStack's repository. +- Configuration files can now be passed as an URL to a compressed file. Thanks Geoff Garside! +- Distro Support Fixed: +- Debian's optional ZMQ3 support was fixed (libzmq3 has moved from experimental to + unstable). +- Ubuntu Lucid Daily PPA +- SmartOS no longer ignores $SALT_ETC_DIR. Matthieu Guegan! +- FreeBSD no longer ignores $SALT_ETC_DIR. Thanks Geoff Garside! +- FreeBSD does not try to install pkgng if pkg is installed. Thanks Geoff Garside! +- SunOS (Make use of XPG4 binaries on SunOS). Thanks Matthieu Guegan! +- openSUSE (Don't fail if only one of the repositories failed to update) +- Arch (Fixed the GPG issues for git installations) +- Distro Support Added: +- Gentoo. Thanks kaithar! + +# v1.5.4: + +- Fixed an issue we had when /proc/cpuinfo had more than one CPU. Detected on AMD CPUs. +- OpenSUSE 12.3 uses lsb_release. Fix the returned distro name "openSUSE project" to "openSUSE" + which the script handles. +- Added an custom move function which will only override if required and if we permit it. +- Implemented the necessary function to pre-seed minion keys on a salt master as an optional + argument. +- Distro Support Fixed: +- FreeBSD (Don't let the script fail if PACKAGESITE is not set) +- Debian Stable installations (the function search was not working as supposed) +- Distro Support Added: +- Ubuntu 13.04 (Was disabled because of a bad beta1. Fixed in beta2) + +# v1.5.3: + +- Return 0 or 1 from functions +- Convert several pipes into a single awk call +- Fixed `/etc/os-release` parsing +- Fixed `config_salt()` +- Distro Support Fixed: +- EPEL-based installations (CentOS, Amazon Linux, RedHat) +- SuSE/OpenSUSE (problem running the script twice, ie, existing `devel_languages_python` + repository) +- SuSE 11 SP1 (pip based install and config trigger) +- Distro Support Added: +- Debian 7 (Only git installations at the moment) + +# v1.5.2: + +- Fix issue with Travis testing (it installs it's own ZeroMQ3 lib +- Allow setting the debug output from an environment variable +- Fix an escape issue in the `printf` calls used in our echo calls +- Don't overwrite files (`config`, `init.d`, etc). Use a specific flag to force overwrites. +- Distro Support Fixed: +- Ubuntu daily installs. +- Distro Support Added: +- Trisquel 6.0 (Ubuntu 12.04) + +# v1.5.1: + +- Improved unittesting. +- Starting daemons. +- Make sure that daemons are really running. +- For the users to make the choice if installing from PIP (if required since there aren't system + pacakges). +- Fixed salt's git cloning when the salt git tree is already present on the system. +- Distro Support Fixed: +- Debian 6 +- Ubuntu 12.10 +- CentOS +- Distro Support Added: +- SuSE 11 SP1/11 SP2 +- OpenSUSE 12.x + +# v1.5: + +- First stable version of the script +- Support for: +- Ubuntu 10.x/11.x/12.x +- Debian 6.x +- CentOS 5/6 +- Red Hat 5/6 +- Red Hat Enterprise 5/6 +- Fedora +- Arch +- SmartOS +- FreeBSD 9.0 diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index bfffef0..0000000 --- a/ChangeLog +++ /dev/null @@ -1,873 +0,0 @@ -Version TBD (In Progress on the Develop Branch): - -Version 2022.03.15: - * Add detection and functions for AlmaLinux and Rocky Linux (myii) #1803 - * Copy configs to correct config dirs (v3004+) (dafyddj) #1798 - * Support Non-LTS Ubuntu 21.04 & 21.10 (blindpirate) #1793 - * Use native repositories for Debian 11 (jpacura) #1615 - * Keep all command-line parameters when UAC is enabled (Simon-TheUser) #1613 - * Add support for Raspbian (Jille) #1612 - * Add openrc to alpine:latest dependencies (krionbsd) #1609 - * Add CentOS 7 base key (bryceml) #1608 - * Fix git master install on alpine 3.12+ (Nascire) #1604 - * Sort help alphabetically (krionbsd) #1601 - -Version 2021.09.17: - * Re-add Ubuntu-16 support as it's still supported with 3001 and 3002 (krionbsd) #1594 - * Add oncoming 3004 release (krionbsd) #1593 - -Version 2021.09.14: - * Update latest Salt version in README (krionbsd) #1588 - * Make Python 3 the default (bryceml) #1577 - * Don't output info if using the default -x value (bryceml) #1587 - -Version 2021.08.19: - * Update README with instructions to use salt-bootstrap custom version (ari) #1580 - * Remove unsupported versions (bryceml) #1578 - * Update FreeBSD default Python version to 3.8 (myii) #1574 - -Version 2021.06.23: - * Use salt.list instead of saltstack.list (bryceml) #1563 - * Use fetch_url function for curl (xeacott) #1562 - * Add Ubuntu 21.04 support (krionbsd) #1559 - * Remove python2-futures package for ArchLinux (myii) #1546 - -Version 2020.03.02: - * Debian 11 (bullseye/testing) support using Debian 10 packages (jpacura, bryceml) #1514 - * Fix bootstrap on Gentoo (ijansky) #1516 #1518 - * Fix project URLs (bryceml) #1526 - * FreeBSD also needs the _PKI_DIR reset (krionbsd) #1523 - * Fix openSUSE Tumbleweed support. (myii) #1525 - * Fix Debian and Ubuntu version support. (jpacura) #1529 - * Powershell: Implement configure only option (for Vagrant). (dafyddj) #1530 - * Powershell: Handle Vagrant's `grains_config` option. (dafyddj) #1520 - * apt-key is deprecated on Debian 10+ and Ubuntu 20+ (bryceml) #1533 - * Fix python Tornado on FreeBSD. (krionbsd) #1522 - -Version 2020.10.20: - * Add support to allow bootstrapping Salt 3002 (s0undt3ch) #1506 - -Version 2020.10.19: - * Fix v3000+ with git install on FreeBSD (krionbsd) #1487 - * Update README giving ONE example of WINDOWS bootstrapping. Default to python3 instead of - python2. (noelmcloughlin) #1496 - * Support git and stable salt-bootstrap on Gentoo. (ijansky) #1500 - * Add support for Linux Mint 20. (taigrr) #1502 - * Adding missing functions for Red Hat 8. (mbochenk) #1489 - * Allow pinning minor 3xxx versions. (max-arnold) #1491 - -Version 2020.06.23: - * Fix for Cumulus Linux 4.1 (darylturner) #1474 - * Fix file download exit code, improve error message on failed download (bryceml) #1478 - * Add support for Ubuntu 20.04 (bryceml) #1479 - * Default Ubuntu 20.04 to Py3 since there isn't a Py2 release for it (bryceml) #1480 - * Warn instead of exit when using -R and -x python3 on centos to allow installing python3 - versions of salt on centos from other repos. Old unsupported releases probably need to - manually install epel-release before running the bootstrap script for versions before 2018.3.5 - and before 2019.2.1 (bryceml) #1482 - * Start maintaining .sha256 files for the bootstrap script - -Version 2020.05.28: - * Fix Opensuse Tumbleweed (noelmcloughlin) #1441 - * Remove Debian 8 from Python 3 supported list (jay1648) #1448 - * Fixed deps parsing for FreeBSD git installs (cedwards) #1462 - * Added support for the upcoming Sodium release (s0undt3ch) #1466 - * Fixed KDE Neon detection (ender8282) #1466 - * Updated README python 2 and 3 installations (gdebunne) #1466 - * Updated README and CONTRIBUTING to prefer Salt's master branch (DmitryKuzmenko) #1466 - * Fixed IUS repo addresses (oeuftete) #1469 - * Updated tests to assert target Python and Salt versions (s0undt3ch) #1470 - * Fixed Amazon 2 -x support (s0undt3ch) #1470 - * Fix Fedora stable installs for older releases (s0undt3ch) #1470 - * Fix CentOS 8 installations (s0undt3ch) #1470 - * Default Debian 10 to Py3 (s0undt3ch) #1470 - * Fix Arch Linux installs (s0undt3ch) #1470 - -Version 2020.02.24: - * Fix SLES 15 install (max298) #1431 - * Fix 3000(Neon) stable install (sblaisot) #1433 - * Fix Amazon Linux Py3 install (s0undt3ch) #1434 - -Version 2020.02.04: - * Add support for the Salt Neon(3000) release (s0undt3ch) #1424 - * Drop support for Fedora < 30 (s0undt3ch) #1424 - * Drop support for Debian < 8 (s0undt3ch) #1424 - -Version 2020.01.29: - * FreeBSD fixes (cedwards) #1413 - * Support the upcoming Neon release (s0undt3ch) #1420 - -Version 2020.01.21: - * FreeBSD fixes (kgbsd) #1376 - * Fix macOS support (s0undt3ch) #1397 - -Version 2019.11.04: - * Fix busybox mktemp compatibility (stanzgy) #1369 - * Install debian 10 packages on debian 10 instead of 9 (kiemlicz) #1375 - * move centos to python36, use python specified by -x (Ch3LL,bryceml) #1380 - * Add debian 10 git install support (Ch3LL) #1378 - -Version 2019.10.03: - * Fix possible typo with `gnupg-curl` vs `gnupg curl` (zahiar) - * Install only python3 packges if requested on ubuntu (noelmcloughlin) #1356 - * Fixing debian wheezy (bryceml) #1359 - * Fixed Amazon Linux 2 detection when lsb_release is installed (jars99) #1361 - * Mac OS Support (felippeb) #1363 #1364 #1365 #1366 - -Version 2019.05.20: - * Allow stable version selection for amazon linux (puluanau) #1328 - * FreeBSD 12 support (sticky-note) #1329 - * Apt wait for lock modification (ripesensor) #1335 - * Opensuse 15 Git installation fixes (s0undt3ch) #1340 #1341 - * Amazon Linux Image fixes (nshenry03) #1343 - * apt_key_fetch fixes (greut) #1344 - * CentOS Git and PIP installation m2crypto fixes (s0undt3ch) #1347 - * CI process enhancements/fixes (s0undt3ch) #1347 - -Version 2019.02.27: - * Add support for bunsenlabs devian derivative (kevinquinnyo) #1300 - * Add support for TurnKey devian derivative (dafyddj) #1313 - * Fix BSD develop install (hackacad) #1316 - * Ensure python-concurrent.futures is installed for Ubuntu (garethgreenaway) #1321 - -Version 2019.01.08: - * use official amazon linux 2 repo for amazon linux 2 (mchugh19) #1287 - * Add release info to applicable docs (rallytime) #1292 - * Modify wait_for_apt function (ripesensor) #1291 - * Add support for LinuxMint 19 (darkocerdic) #1289 - * FIX #1237 SmartOS should use pkgin show-deps (sjorge) #1283 - * Fedora: Reduce DNF calls to 2 during install_dep phase (The-Loeki) #1278 - -Version 2018.08.15: - * Add tests using kitchen-salt (gtmanfred) #1279 - * Add python-futures to Py2 installs (gtmanfred) #1279 - -Version 2018.08.13: - * Fedora Py3 fixes (The-Loeki) #1273 - * Handle commented lines in the requirements files for pip pkgs (rallytime) #1271 - * Remove typo: extra 'c' was accidentally added in #1269 (rallytime) #1270 - * [Arch] Add python2-futures to list of pkgs on git install (rallytime) #1269 - * Fix undefined variable warn_msg on amd64 (alexandruavadanii) #1268 - * SLES12SP changed packages git to git-core and libzmq3 to libzmq4 (mfapouw) #1266 - * Add opensuse 15 specific installation functions (rallytime) #1263 - * Remove support for openSUSE Leap 42.2 (rallytime) #1262 - * Remove support for Fedora 26 (rallytime) #1261 - * Remove support for Ubuntu 17.10 (rallytime) #1260 - * Ensure pipe is absent before mkfifo/mknod (noelmcloughlin) #1256 - * fix for opensuse15 if no lsb_release pkg (noelmcloughlin) #1255 - * Fix Up ShellCheck errors/warnings for latest version of shellcheck (rallytime) #1253 - * Remove daily install option on Ubuntu system (icy) #1250 - * Add python 3 support for Ubuntu 18 (rallytime) #1248 - * Return immediately if apt-get fails (icy) #1247 - * Disable shell error about unbound variable during daily install (icy) #1246 - * OpenSuse_Leap_15.0 saltstack repo support (noelmcloughlin) #1244 - * Add Python3 package support for Debian 9 (rallytime) #1243 - * Add Python3 package support for CentOS 7 (rallytime) #1242 - * Shellcheck fixes found when running latest version (rallytime) #1239 - * Add Python3 package support for Ubuntu 16.04 (rallytime) #1238 - * Fix the variable ref from #803 (rallytime) #1229 - * Add Ubuntu 18.04 support (rallytime) #1228 - * Call __git_clone_and_checkout directly (jheidbrink) #1226 - * Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 - -Version 2018.04.25: - * Install py-tornado4 for FreeBSD. (abednarik) #1219 - * Remove COPR repos configuration for Fedora (vutny ) #1211 - * Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 - * Use integer parameter for sleep command (bdrung) #1205 - * Add 2018.3 branch to list of stable options (rallytime) #1204 - * If installing with -P, install tornado<5.0. (rallytime) #1203 - * Add M2Crypto to python27 centos 6 bootstrap install (Ch3LL) #1201 - * Update README to include mention of bootstrap-salt.ps1 for Windows (rallytime) #1200 - * Port spelling fixes from change in Salt to Bootstrap (rallytime) #1199 - * Add M2Crypto package back to git install functions (rallytime) #1198 - * OpenBSD has a cdn which handles selecting the best mirror (jasperla) #1197 - * Change gnupg2 pacakge to gnupg for non-LTS versions of Ubuntu (rallytime) #1196 - * Install swig30 as freebsd dep instead of swig. (abednarik) #1191 - * make salt-syndic optional on salt bootstrap (sybix) #1190 - * Add __wait_for_apt function: avoid locking on the apt-get process (rallytime) #1186 - * Update the README.rst file with some grammatical changes (rallytime) #1185 - * Update Fedora support: 25 is EOL, 27 is supported (rallytime) #1184 - * Add a note about the use of sudo when running commands to README (rallytime) #1183 - * Adding support for minor release pinning on AWS Linux (cmclaughlin) #1182 - * Wait for zypper processes to finish before calling zypper again (rallytime) #1181 - * only install ca-certificates on opensuse if it isn't already installed (gtmanfred) #1179 - -Version 2017.12.13: - * Use HTTPS URL for OpenSuse's saltstack repo (gdm85) #1174 - * Respect disable repos (-r) option on OpenBSD (eradman) #1171 - * Fix #1168 : -b option causes error (vutny) #1170 - * Fix fatal error with using the -b option. (arizvisa) #1169 - * Devuan support (ymasson) #1165 - * Fix yum repo on AWS Linux (cmclaughlin) #1164 - * Use suse repo to install packages, rather than defining them (rallytime) #1157 - * Remove patch-level-1 specific code for SLES installs (rallytime) #1156 - * priority sort fedora-release (toanju) #1153 - * Declare EOL for SUSE Linux Enterprise Server releases (vutny) #1150 - * Fix #1142: allow git install on Raspbian 9 (vutny) #1146 - * Follow symlinks when parsing distro release files (vutny) #1145 - * fedora: use dnf-utils for F26 and above (toanju) #1144 - * Declare EOL for openSUSE LEAP 42.1 (vutny) #1143 - * Fix #1137: import GPG key through an HTTP(S) proxy (vutny) #1139 - * Fix #1138: git install on Debian/Ubuntu various arches (vutny) #1141 - * Declare EOL for openSUSE releases earlier and including 13.X (vutny) #1136 - * Update Fedora support: 24 is EOL (rallytime) #1134 - -Version 2017.08.17: - * Add new authors (rallytime) #1130 - * README: Fix typo and Table of Contents for Debian section (vutny) #1129 - * Reduce the # of days an issue is stale to 6 months (rallytime) #1125 - * Only install Python version if "-y" is defined (rallytime) #1124 - * Allow powershell bootstrap script to specify PY2 or 3 (rallytime) #1123 - * Remove the test that checks if the EPEL RPM was installed (amendlik) #1122 - * added latest version string of nitrogen release 2017.7 (sourceindex) #1120 - * use versions specified in base.txt when doing pip installs (aflat) #1116 - * Remove pip install requirement on Fedora git installs (rallytime) #1114 - * Introductory support for Debian 10 (Buster) (rallytime) #1113 - * Add Debian 9 support using official repo.saltstack.com packages (rallytime) #1111 - * Fix 1105 (vernondcole) #1110 - * Move SUSE specific function closer to related code (vutny) #1107 - * Update Authors file (rallytime) #1103 - * Fix ubuntu 16.04 LTS installation (BlaineAtAffirm) #1102 - * Add debian_codename_translation function, similar to Ubuntu (rallytime) #1101 - * Add the CODE_OF_CONDUCT.md file (rallytime) #1100 - * Update Debian and Ubuntu service file paths to be consistent with salt (rallytime) #1099 - * Add hash verification information to installation instructions (rallytime) #1098 - * Fix installing salt-cloud package on Arch Linux (rallytime) #1097 - * Support bootstrapping on upcoming Debian GNU/Linux 9.0 (vutny) #1096 - * Removes faulty explicit version ordering (absolutejam) #1095 - * Remove configuring EPEL repo for Amazon Linux (vutny) #1093 - * Fix -j/-J (JSON configs) options for Debian 8 (vutny) #1092 - * Fix #1035: detect and log errors earlier (vutny) #1091 - * Update AUTHORS file (rallytime) #1089 - * Autounmask as separate step (decomposite) #1088 - * Ensure presence of CONFIG_PROTECT_MASK files (decomposite) #1087 - * Update Fedora support: 23 is EOL now. (rallytime) #1084 - * Fix the -R option on Debian/Ubuntu (rallytime) #1082 - * Declare End-Of-Life for Ubuntu 12.04 LTS (vutny) #1080 - -Version 2017.05.24: - * Use freebsd repo to query for salt dependencies (Ch3LL) #1076 - * Allow amazon to work with python2.7 on installs over 2016.11 (Ch3LL) #1073 - * ensure sles12 enables services with stable installs (Ch3LL) #1075 - * Declare End-of-Life for RHEL 5 and its variants (vutny) #1070 - * Fix configuring SaltStack's repo URL for RHEL variants (vutny) #1068 - * Add Manjaro as Arch derivative (luthes) #1063 - * Add "unmarkComment" option to probot-stale config (rallytime) #1064 - * Properly detect all supported Debian GNU/Linux derivatives (vutny) #1062 - * Archlinux must always update (gtmanfred) #1060 - * Alpine: fix adding, checking and running Salt Syndic in stable mode (vutny) #1059 - * Add KDE neon... (EHJ-52n) #1058 - * Update probot-stale message formatting. (rallytime) #1057 - * Fix `git` bootstrap mode for CentOS (vutny) #1054 - * update install_freebsd_10_stable to use FreeBSD repo (bytesatwork-xx) #1053 - * Support OpenBSD 6.1 (eradman) #1048 - * Update daysUntilStale value in probot-stale config (rallytime) #1055 - * Add ability to install and use a different python version when installing salt (Ch3LL) #1049 - * Add non-LTS type support for Ubuntu 17.04 (rallytime) #1051 - * Allow -R option to work for Debian/Ubuntu (rallytime) #1045 - * Adjust "daysUntilStale" variable to 190 days. #1047 - * Reduce the number of days an issue is considered "stale" (rallytime) #1046 - * Alpine: fix bootstrapping from Git -- install OpenRC initscripts (vutny) #1044 - * Add probot-stale config file (rallytime) #1042 - * Shallow cloning and Python setup fix for BSD (amontalban) #1040 - * Fix not needed quoting for salt/salt-bootstrap#1026 (amontalban) #1039 - * Update README file with supported release documentation (rallytime) #1034 - * Remove <<< bashism (The-Loeki) #1032 - * [-R option] Fix logic error where we trying to enable epel with -R (rallytime) #1033 - * Alpine: check Salt services have been enabled to start on boot (vutny) #1031 - * AWS Linux Native Support (bkruger99) #1022 - * Correct package name for FreeBSD installation (amontalban) #1030 - * README: describe architectures support for Salt deps on Linux distros (vutny) #1029 - * This commit addresses some of the issues in salt/salt-bootstrap#996 (amontalban) #1026 - * Add support for stable installation on Alpine Linux release 3.5 (vutny) #1028 - * Alpine Linux: fix installation of multiple pkgs ("stable" bootstrap) (vutny) #1027 - * Add Void Linux support (ndrwdn) #1025 - * RHEL6: disable stdin to fix shell session hang on killing tee pipe (vutny) #1018 - * Adding 2016.11 to stable version (ashokrajar) #1017 - * Update bootstrap-salt.sh (caelor) #1015 - * Alpine Linux support #1009 (ek9) #1010 - * Add Table of Contents in README (vutny) #1014 - -Version 2017.01.10: - * Update AUTHORS.rst with new contributors (rallytime) #1011 - * fix bootstrap in Arch Linux by updating package name from salt-zmq to salt (ek9) #1007 - * Add python-systemd package to debian 8 git install (rallytime) #1003 - * Updated supported versions for Ubuntu: 12.04, 14.04, 16.04, and 16.10 (best effort) (rallytime) #1002 - * Add "yakkety" to ubuntu_codename_translation function (rallytime) #1001 - * Update supported versions for Fedora: 23, 24, and 25. (rallytime) #1000 - * Handle renaming of gnupg-curl to gnupg1-curl for Ubuntu 16.10 (marco-m) #998 - * fix systemctl path (dmitrievav) #997 - * Drop unnecessary workarounds (creating directories) for early releases (vutny) #995 - * Let's detect newly released Salt 2016.11 stable release (vutny) #994 - * Adjust code examples to use the actual bootstrap-salt.sh file name (rallytime) #993 - * Install TLS certs before cloning git repo via https (vutny) #991 - * Remove fix me comment and fix systemsmanagement link (rallytime) #990 - * Correct usage description about "config only" mode (vutny) #989 - * Fix overwriting Minion config from temporarily directory (vutny) #988 - * Configure Salt components after the dependencies installation (vutny) #987 - * Add CloudLinux support (rallytime) #986 - * Apply the insecure flag to git as well (cachedout) #981 - -Version 2016.10.25: - * Update AUTHORS.rst with new contributors (rallytime) #978 - * Let's start detecting the upcoming Debian 9 (Stretch) (lhost) #975 - * FreeBSD: set _SALT_ETC_DIR directory to match ports (eradman) #970 - * Update OpenBSD 6.0+ provisioning (eradman) #969 - * adds supports for Cumulus Linux (plumbis) #967 - * Run "pip install -U futures" for SmartOS git install (rallytime) #966 - * Change /pkg/rpm/ to /pkg/deb/ in install_ubuntu_git_post func (rallytime) #965 - * SUSE: Refactor systemsmanagement_saltstack repo checks to be DRY (rallytime) #964 - * Fix detection of EPEL repository with not-expired metadata (sp1r) #963 - * Display warning message about deprecating the `-G` option (vutny) #958 - * Allow correct salt paths to be used when -c is passed (justinta) #955 - * Fix issues with replacing configs when python3 is default in os. (fizmat) #954 - * Remove m2crypto package installs (rallytime) #951 - * Try to install SP4 packages on SLE 11 when SP version is older (rallytime) #950 - * Add python-futures package to install_centos_git_deps (rallytime) #948 - * Add /etc/portage/package.accept_keywords to CONFIG_PROTECT_MASK (rallytime) #947 - * Deprecate `-G` option: use `https` scheme for GitHub by default (vutny) #945 - * [SECURITY] Properly handle GnuPG keys for APT repositories (vutny) #940 - -Version 2016.08.16: - * Ubuntu git mode: install all deps from SaltStack corp repo by default. (vutny) #936 - -Version 2016.08.15: - * Remove chris-lea python-zmq repo. (rallytime) #929 - * Disable the '--enablerepo=${_EPEL_REPO}' part of yum install cmds when passing -R/-r. (rallytime) #928 - * Fix grep pattern in `__check_services_sysvinit`. (vutny) #927 - * Missing python dependency for salt-cloud added. (toanju) #925 - * Fix git install mode when using commit hash with `-g` option. (vutny) #922 - * Install `salt-cloud` package with `-L` option in `stable` mode. (vutny) #919 - * Fix bootstrapping from Git on CentOS7 when `systemd` is not running. (vutny) #915 - -Version 2016.07.07: - * Add new contributors to authors list. (rallytime) #910 - * Split up python-requests and python-msgpack packages for newer Fedora. (rallytime) #909 - * Fix typo in repository configuration for FreeBSD. (ekollof) #907 - * Make sure $STABLE_REV is set before setting up SaltStack repo. (rallytime) #906 - * Remove tests written question from template. (rallytime) #904 - * Adding support for Linux Mint 18 (based on Ubuntu 16.04). (eliezerlp) #902 - * Allow git installation for SLES 12. (rallytime) #903 - * Set repo_arch for raspberry pi installs. (mrichar1) #899 - * Change temporary directory for storing executable to C:\Windows\Temp. (themalkolm) #897 - * add apt-transport-https for ubuntu. (epcim) #896 - * Fix expanding shell script position parameters with nounset enabled. (vutny) #895 - * RFC: Add tests for bootstrap-salt.ps1. (themalkolm) #893 - * Keep original name of salt executable executable. (themalkolm) #857 - -Version 2016.06.27: - * Fix race condition when doing one-liner bootstrap. (vutny) #889 - * Add space back in between 'install' and '--install'. (rallytime) #890 - -Version 2016.06.24: - * Save invocation command and arguments into variables. (jfindlay) #885 - * Update the authors list with new contributors. (rallytime) #884 - * Add option to make setup.py install quiet. (nasenbaer13) #865 - * Fix lint. (jfindlay) #881 - * Add -R option to allow a custom repo URL. (rallytime) #877 - * Exclude path of script when called from another dir. (l2ol33rt) #871 - * Print invocation info. (jfindlay) #869 - * Always refresh the Arch Linux keyring if needed. (cachedout) #868 - * Ubuntu 16.04 LTS Xenial Support. (notpeter) #852 - * Install Salt packages from repo.saltstack.com on Debian 7 "Wheezy". (vutny) #864 - * Drop support for Debian 6 old-old-stable "squeeze": reached end-of-life. (vutny) #860 - * Removed ubuntu version restriction for apt-get update. (marccardinal) #859 - * Fix bootstrapping from git on Debian 8 by installing latest `tornado` via pip. (vutny) #828 - * Add the ability to override master and/or minion configs from CLI. (rallytime) #841 - * Don't sleep 11 seconds if the user allowed overwrite of config files. (poelzi) #832 - -Version 2016.05.11: - * Only overwrite the minion config file if '-C' is passed. Otherwise, preserve it. (rallytime) #848 - -Version 2016.05.10: - * Removed libzmq4 and forking-deamon-patch for Opensuse13. (jtand) #840 - * Ubuntu 12.04 needs to be updated before installing packages. (jtand) #829 - * Always download and install *latest* `epel-release` package on RHEL systems. (vutny) #825 - * Fix Amazon Linux EOL check. (vutny) #818 - -Version 2016.04.18: - * Add support for openSUSE Leap. Thanks Roman Inflianskas(rominf). #693 - * Fix missing deps installation on Debian. Thanks Steve Groesz(wolfpackmars2). #699 - * Update SaltStack repo location and latest version for Windows. (brandon099) #711 - * Better EPEL repository detection on RHEL and CentOS. (vutny) #717 - * Fix git invocation fail when `man` command is not available. (vutny) #718 - * Fix `epel-release` package installation on CentOS/RHEL 5. (vutny) #719 - * Removed deprecated cli option. (abednarik) #705 - * Remove RHEL optional repo check and enable. (vutny) #720 - * Remove SaltStack COPR repository configuration for CentOS/RHEL5. (vutny) #721 - * Add opensuse_Tumbleweed support. (aboe76) #725 - * Sometimes bootstrap doesn't install zmq. (jtand) #726 - * Process -s (default sleep for service restarts) in bootstrap-salt.sh. (hipikat) #692 - * Minion keys and /etc/salt/minion should be overwritten on -C. (cro) #541 - * Fix for -C (_CONFIG_ONLY). (beaucephus) #544 - * Fix when using upstream tags. (The-Loeki) #564 - * COPR project moved. (rmohr) #738 - * Update license year range. (pra85) #743 - * Use POSIX-Compliant Command-Exists Test. (kojiromike) #741 - * Add -f option to force shallow cloning. (eyj) #660 - * add SLE 12 support, fix OpenSUSE support. (grep4linux) #748 - * Fix CentOS git setup.py syntax error upon installation. (The-Loeki) #746 - * Enable shallow cloning for version branches by default, not only tags. (vutny) #750 - * do not install copr repo on fedora 22+. (toanju) #751 - * Add support for pegged versions on YUM based OS'ses through repo.saltstack.com. (The-Loeki) #685 - * fix for FreeBSD 11 CURRENT install functions. (serge-p) #723 - * Don't add zypp repo if it already exists. (furlongm) #731 - * switch repositories for suse and sles fixes `#706`_. (aboe76) #734 - * Reformat and correct usage instructions. (vutny) #755 - * fixed missing repo for suse 12. (aboe76) #756 - * fix for Amazon Linux. (shawnbutts) #700 - * adding support for OpenBSD distribution. (serge-p) #722 - * fixing syntax errors. (beardedeagle) #760 - * Import CentOS 7 GPG key on RHEL for installing base dependencies from Salt corp repo. (vutny) #765 - * Fix multiple lint errors (shellcheck) and make some refactoring. (vutny) #768 - * Fix sleep time option to recognize a numeric argument. (vutny) #771 - * Update README. (vutny) #787 - * get tornado from pip on a fedora git install. (jfindlay) #785 - * Remove the Saltstack repo's alias. (cro) #794 - * Ability to change cache dir. (clarkperkins) #761 - * Add config_freebsd_salt func so freebsd puts cfgs in the right place. (ryanwalder) #779 - * Allow archive versions. (clarkperkins) #769 - * Lack of HTTPS for RPM packages. (jaredestroud) #783 - * Ability to change cache dir. (clarkperkins) #761 - * Bootstrap on Docker. (vutny) #793 - * add downstream pkg repo for SUSE. (jfindlay) #791 - * Fixed use of HTTP over HTTPS for anonscm.debian.org. (gdm85) #788 - * Bump Salt version to latest stable in PS bootstrap script for Windows. (vutny) #801 - * Add an -l option to switch https to http links. (rallytime) #795 - * Virtualenv support for Ubuntu. (l2ol33rt) #666 - * Lint. (jfindlay) #805 - * use portable command check. (jfindlay) #806 - * Update epel-release version number (RuriRyan) #809 - - -Version 2015.11.09 - * Make sure that wget is installed. #868 - - -Version 2015.11.04: - * Allow bypassing dependencies installation. Thanks EYJ. #656. - * Add FreeBSD 11 support. Thanks Chris Buechler(cbuechler). #653 - * Move RHEL installations to use repo.saltstack.com #674 - * Move Debian 8 installation to use repo.saltstack.com #674 - * Fix error finding python-jinja2 in RHEL 7. Thanks Rob Eden(hedinfaok). #654 - * Move Ubuntu 12 and 14 installations to use repo.saltstack.com #674 - * Move FreeBSD installations to use repo.saltstack.com #674 - * Use dnf on Fedora 22 and later. Thanks Michele Bologna (mbologna). #665 - - -Version 2015.08.06: - * Fix python-requests installations for Ubuntu >= 14.04 LTS. #631, #632, #633 - * Install python-crypto from Chris Lea's PPA for Ubuntu < 14.04 - * Exit the git checkout directory before deleting it. Thanks Bret Fisher. #634 - * Use prefix /usr for centos git install. Thanks Stanislav B. #638 - * Drop Ubuntu EOL versions. All Ubuntu version before 12.04. - * Make sure python-dev is installed wheb trying to install tornado from PyPi. #640 - - -Version 2015.07.22: - * Fix tornado installation in Ubuntu. Thanks Yushi Nakai. #627 - * Install tornado using pip on Ubuntu for Salt's v2015.8.xx onward stable releases. - * Install requests on Ubuntu from Chris Lea's PPA. #630 - -Version 2015.07.17: - * Make sure setuptools is installed before using it. #598. - * `systemd` is only fully supported from 15.04 onwards. #602 - * Fix debian mirrors issue. Thanks Wolodja Wentland(babilen). #606 - * Fix python-jinja2 repo move on RHEL6. Thanks lomeroe. #621 - * Allow skipping services. Thanks denmat. #455 - * Fix missing Debian init script. #607 saltstack/salt#25270 and saltstack/salt#25456 - * Fix SmartOS etc path. Thanks Bret Fisher. #624 - * Fix possible unbound variable in Gentoo. #625 - * Properly detect the git binary in SmartOS. #611 - -Version 2015.05.07: - * Lower required requests version dependency. Use system requests package where possible. - * Allow Ubuntu alternate ppas. Thanks Peter Tripp(notpeter). #563 - -Version 2015.05.04: - * Fix the configuration path for FreeBSD. #567/#552. Thanks Ronald van Zantvoort(The-Loeki). - + Fix non grouping support in POSIX sed. Thanks Ronald van Zantvoort(The-Loeki). - * Add Debian 8 support. Thanks Matt Black(mafrosis) - * Improve Debian version parsing. Thanks Mark Lee(malept) - * Make sure we update packages list one Chris Lea's PPA repository is added. - * Hard code the Debian Squeeze backports to the DE mirror since the main repository is down. - Thanks @panticz. #589. - * Only install git if not already installed. #560 - * Fix openSUSE 13.2 where we need to pass --replaceflags. Thanks Roman Inflianskas(rominf). - #504. - * Make sure that a recent enough requests package is installed in Debian/Ubuntu. - * Install tornado on git installs for the develop branch if necessary. #580 - * Add support for Ubuntu 15.04 - -Version 2015.03.15: - * Add multi-master support. Thanks Fred Reimer(freimer). #555 - -Version 2015.03.04: - * Fix the salt package selection on Arch stable installs. - -Version 2015.02.28: - * Fix Debian backports repository. - -Version 2015.02.27: - * Try other tools besides wget when downloading the COPR repo file. Thanks Ronald van - Zantvoort(The-Loeki) - * No need to install packages from the Unstable repository for debian, use backports. Thanks - Ari Aosved(devaos) - * Fix an issue in CentOS where the syndic package wasn't being installed(since it's now a - separate package). Thanks Ronald van Zantvoort(The-Loeki) - * Enable the server-optionals repository for RHEL >= 7 - * RHEL/CentOS 5 now uses the COPR repository. #533 - -Version 2015.01.12: - * Add package upgrades support to FreeBSD. Thanks William Eshagh(eshagl). - * Make sure wget is installed on debian bare systems. - * Make sure the Arch pacman database is up to date - * Install `python-hashlib` in CentOS 5 in order to use the COPR repository - -Version 2014.12.11: - * Enable binary installations on CentOS 7. Thanks ggillies - * Updated the URL for EPEL 7 - -Version 2014.10.30: - * Apply the forking patch to openSUSE git installations. - -Version 2014.10.28: - * Install the python systemd bindings for Arch and Fedora git installations - * Allow cloning from Salt's git repository using HTTPS. #475 - -Version 2014.10.21: - * Fix path to python on FreeBSD. Thanks Pavel Snagovsky(paha) - * Fix syndic installation on RHEL based installations. Thanks markgaylard - * Properly detect the git checkout `basename` directory instead of hard coding it. Thanks - Howard Mei(HowardMei). - * Allow installing ZMQ for SaltStack's COPR repository. - * Allow installing ZMQ4/PyZMQ14 from Chris Lea's PPA repository. - -Version 2014.10.14: - * Fixed a regex issue with matching Salt's tags. Match v2014.7 but not 2014.7 as a valid tag - * Distro Support Added: - * Added Linux Mint 17 support(Thanks Skyler Berg) - * Disrto Suuport Fixed: - * Init pacman keys if not done so previously - -Version 2014.09.25: - * Properly detect Amazon AMI's >= 2014.9. #468 - -Version 2014.09.09: - * Distro Support Fixes: - * Updated the URL for EPEL 7 - * PIP based installations on Ubuntu 10.04 need setuptools installed - * Arch stopped providing the version information on `/etc/arch-release` - * Complete `salt-api` services checking. #450 - -Version 2014.08.30: - * Skip service checks for `salt-api`, since this should be an opt-in service not necessarily - meant to start at boot time. - * Distro Support Fixes: - * Also install the salt-api service on RHEL based distributions for git based - installations. - * Properly detect Arch Linux when lsb-release is available - * Updated the URL for EPEL 7 - -Version 2014.08.23: - * Avoid redirect breakage when installing EPEL with rpm on RHEL 5 - * Ensure python-apt is installed by the bootstrap script for Debian & Ubuntu minions. Thanks - @garethgreenaway. - * Don't shallow clone on git versions lower than 1.7.10 - * Only shallow clone on git tag based installations - * Configurable Salt repository clone directory for git based installations - * Distro Support Fixed: - * Fixed the URL to download EPEL for Cent 5 - * Use the full path to the `chkconfig` binary when checking for services in SysV init - systems. - * Fixed an issue where the default sleep period(3 secs) on Ubuntu would cause a race - condition with upstart wherein the package installation would call an upstart start and - before it could complete, bootstrap would call another. The result was *two* copies of salt - running which ended up causing a most stubborn bug that's documented in - https://github.com/saltstack/salt/issues/12248 - -Version 2014.07.29: - * Shallow clone Salt's repository for speed improvements. In case of failure, resume old - behaviour. - * Fixed bug introduced in 0577622 when salt-api service install and checks were added - * Distro Support Fixed: - * Fixed infinite loop when handling RHEL dependencies. Thanks Dan Mick(@dmick). - -Version 2014.07.27: - * Amazon Linux AMI 2010.xx is not explicitly not supported. - * Install the `salt-api` scripts if available when the `salt-master` is also installed. - * Added support for a configurable sleep time when starting, restarting and checking for - enabled services. - * Drop the `tsflags` requirement for RHEL and RHEL based distributions. - * When sorting release files, oracle-release has higher priority than redhat-release. - * Distro Support Fixed: - * Debian >= 7 uses system's python-requests package, not PIP - * Install 'python-zypp' in SuSE and openSUSE(required by Salt's zypper module) - * Only install EPEL on requiring distributions if not already installed - * CentOS 7 now uses systemd and the script now properly handles it - * systemd in openSUSE 12.2 complains if service does not contain `.service`` - * Properly detect openSUSE using `lsb_release - * SLES 11 SP3 ships with both python-M2Crypto-0.22.* and python-m2crypto-0.21 and we will - be asked which we want to install, even with --non-interactive. Let's try to install the - higher version first and then the lower one in case of failure. - * Allow some extra time on RHEL for the optionals repo check in case the repository - subscription is being managed externally. - -Version 2014.06.30: - * Distro Support Fixed: - * Bump build/maintenance version for epel-release package. Thanks Gregory Meno(GregMeno) - * Properly detect Amazon Linux AMI when using `lsb_release` - * Fix `tsflags` installation. - -Version 2014.06.28: - * Fixed `tsflags` packages detection for RHEL and Oracle Linux 6.5 - -Version 2014.06.21: - * Also export the HTTPS proxy environment variable. Thanks Giuseppe Iannello(gianello). - * Distro Support Fixed: - * Improve Oracle Linux Server detection - * Overcome the Oracle Linux awkwardness. `--enablerepo=XYX` disables ALL OTHER REPOS!!!! - * Oracle Linux also support testing repositories installation - -Version 2014.06.19: - * Allow passing the master address as an environment variable, `BS_SALT_MASTER_ADDRESS` - * Fixed an issue with the keys pre-seed. We were passing absolute paths where we only needed - basenames. - * Added HTTP proxy configuration support. Thanks Giuseppe Iannello(gianello), - * Distro Support Added: - * Elementary OS - * RHEL 7 Beta/RC - * Kali Linux. Thanks Valentin Bud(valentinbud) - * Distro Support Fixed: - * Improved RHEL optionals repository detection - -Version 2014.04.16: - * Fixed a bug for RHEL 6 based distributions where yum-utils was not getting installed. - * Added minor version check for RHEL 6 optional channel. - * Added quotes around "apache-libcloud>=$_LIBCLOUD_MIN_VERSION" for proper version requirements - handling. - * Install the python 'requests' package which is now a hard dependency in Salt. - * When installing from a user defined repository add the official one as a remote and fetch - its tags for proper versioning. - * Distro Support Fixed: - * CentOS netinstall ISO's don't install `chkconfig` - * Improved RHEL optional repository detection. This allows user repository usage, which - don't need the optional repository support since they usually provide their packages. - * Distro Support Added: - * Oracle Linux - * Scientific Linux - -Version 2014.03.10-1: - * Distro Support Fixed: - * Fix the Debian services running function - -Version 2014.03.10: - * Debian based distributions which don't use upstart now also check if the salt services are - enabled. - * Distro Support Fixed: - * RedHat based distributions now have a proper services enabled checker. - -Version 2014.02.27: - * Fixed a bug on the services enabled function searching logic. - * Arch, Fedora, openSUSE and SuSE now check for services enabled, if using systemd - * CentOS(and any RedHat based) and Ubuntu now check for services enabled is using upstart - * Distro Support Added: - * Debian 8. Thank You Boris Feld(Lothiraldan). - -Version 2014.02.19: - * Fixed a problem with the quotes of an error message - * Arch installations now uses the community repository - * Distro Support Fixed: - * Fixed Fedora Git based installations(git was not being installed) - -Version 2014.02.18: - * Debian based distribution now get a warning stating that NOT starting daemons does not work - as supposed, mainly because that's the Debian policy. - * Fix bug introduced when implementing the master ip flag. The default minion includes - directory is `minion.d`, not `minion.conf.d` - -Version 2014.02.16: - * The script now allows setting up the salt-master address as a separate configuration file by - passing `-A` to the script. - * Add support to install apache-libcloud by passing the `-L` flag. In some distribution it's - also needed to pass `-P` because the minimal apache-libcloud version is `0.14.0`. This support - is still missing for FreeBSD and SmartOS. - * Fixed an issue when copying or moving files. We now test to see if the destination is a - directory and create a full path from that so that the "do not override" logic works as - supposed. #294. - * Allow passing additional package names to install while installing Salt's dependencies. #262 - * Pass the salt configuration directory, default or from environment variable to the setup.py - script for git based installations. #305 - * Distro Support Fixed: - * FreeBSD `fetch` now has a notion of insecure certificates. Handle this properly. Thank - You Mike Carlson(m87carlson). - * Arch, openSUSE and SuSE are now upgradable when the `-U` flag is passed. - * Force overwrites now works for existing init.d scripts on CentOS git installations. #259 - * Distro Support Added: - * FreeBSD 10 is now also supported. Thank You Mike Carlson(m87carlson). - * Red Had Enterprise Workstation is now supported. - -Version 1.5.11: - * Fixed an out of scope variable missed when moving functions around. - -Version 1.5.10: - * Salt no longer has the master branch in git, install from develop as default. - * Installing from Git on Red Hat based distributions now also needs `yum-utils` installed. - * Allow the script to use a different git repository to install from. - * Fixed a bug where a branch name with dashes would be wrongly detected as an option to the - script. - * Default to secure file downloads(if any). - * Distro Support Fixed: - * Minimal Ubuntu installation might not have upstart installed, fixed. - * FreeBSD now uses the official FreeBSD repository. Thank You Paul Brian(lifeisstillgood)! - -Version 1.5.9: - * Allow to not start the daemons after bootstrapping salt. This will allow `vagrant-lxc` - installations, `debootstrap*`, etc, to finish properly. Thanks Henrik Holmboe (holmboe). - * Distro Support Fixed: - * Salt >= 0.17 requires ElementTree which is on the python standard library after python - 2.6 but openSUSE split that into a separate package. - * Fixed a logic preventing proper Ubuntu bootstrapping on some situations. - -Version 1.5.8: - * Fixed an Ubuntu regression. `add-apt-repository` is only available on - `software-properties-common` after 12.10, inclusive. Thanks Diego Woitasen(diegows) - -Version 1.5.7: - * For RedHat based distributions which rely on `epel`, the user can now pass `testing` to the - script and `epel-testing` shall be used to bootstrap salt and it's dependencies. - * No full system upgrades, if optional by the distribution, shall be done unless `-U` is passed - to the bootstrap script(required upgrade procedures must exist on the script, currently Debian - and RedHat based distributions support system upgrades). - * Fixed an issue where passing BS_KEEP_TEMP_FILES=1 to the script was causing an error. #206. - * Switched FreeBSD default packages repository to PCBSD(http://www.pcbsd.org) and added - multiple repository support to install salt from the SaltStack's FreeBSD repository. Thanks - Christer Edwards(cedwards). - * Improved Gentoo Support. Thanks Elias Probst(eliasp). - * Stop execution soon for end of life distributions or non supported distribution versions. - * Distro Support Fixed: - * Fixed an unbound variable while bootstraping Gentoo. - * Fixed CentOS/RHEL 5. - * Fixed crypto++ compilation. Thanks Kenneth Wilke(KennethWilke)! - * Fixed FreeBSD git installations not pointing to the proper salt configuration directory, - which on FreeBSD is '/usr/local/etc/salt'. - * Fixed testing installation for Red Hat based distributions. Thanks Jeff Strunk(jstrunk) - * Fixed wrong package name on Arch. Thanks Niels Abspoel(aboe76) - * Make sure the Ubuntu universe repository is enabled. Thanks Karl Grzeszczak(karlgrz). - * Fixed SmartOS installation. Thanks Matthieu Guegan(mguegan). - -Version 1.5.6: - * If there's a `grains` file on the provided temporary configuration directory, move it to the - proper place while moving the minion configuration file. - * Gentoo bootstraps can now use a bin host to provide binary packages, just set the - `BS_GENTOO_USE_BINHOST` environment variable. - * If `BS_KEEP_TEMP_FILES=1` is found on the environment, the script will copy the files instead - of moving them. - * There were still some `mv` and `cp` occurrences which were not using their `{move,copy}file` - replacements which ended up on now respecting the "Do not override existing configuration" - feature. - * Distro Support Fixed: - * Arch now upgrades it's system package properly as suggested on their mailing list. - * Arch now moves back any configuration files provided by the user renamed by pacman on the - installation process. - * Fixed SmartOS detection(was being detected as Solaris) and bootstrapping. Fixed SmartOS - different gcc package names for different package sets. - * Fixed FreeBSD git based installations(no rc.d scripts were available). - * Fixed FreeBSD not re-evaluating the `PKI_DIR` variable since the `SALT_ETC_DIR` was - redefined. - * Distro Support Added: - * Linux Mint. Thanks Alex Van't Hof(alexvh)! - * Linaro. - - -Version 1.5.5: - * Fixed a variable error in the new pre-seed feature. - * Fixed the destination path to where the pre-seed minions keys should be copied. - * Debian installations now use SaltStack's repository. - * Configuration files can now be passed as an URL to a compressed file. Thanks Geoff Garside! - * Distro Support Fixed: - * Debian's optional ZMQ3 support was fixed (libzmq3 has moved from experimental to - unstable). - * Ubuntu Lucid Daily PPA - * SmartOS no longer ignores $SALT_ETC_DIR. Matthieu Guegan! - * FreeBSD no longer ignores $SALT_ETC_DIR. Thanks Geoff Garside! - * FreeBSD does not try to install pkgng if pkg is installed. Thanks Geoff Garside! - * SunOS (Make use of XPG4 binaries on SunOS). Thanks Matthieu Guegan! - * openSUSE (Don't fail if only one of the repositories failed to update) - * Arch (Fixed the GPG issues for git installations) - * Distro Support Added: - * Gentoo. Thanks kaithar! - - -Version 1.5.4: - * Fixed an issue we had when /proc/cpuinfo had more than one CPU. Detected on AMD CPUs. - * OpenSUSE 12.3 uses lsb_release. Fix the returned distro name "openSUSE project" to "openSUSE" - which the script handles. - * Added an custom move function which will only override if required and if we permit it. - * Implemented the necessary function to pre-seed minion keys on a salt master as an optional - argument. - * Distro Support Fixed: - * FreeBSD (Don't let the script fail if PACKAGESITE is not set) - * Debian Stable installations (the function search was not working as supposed) - * Distro Support Added: - * Ubuntu 13.04 (Was disabled because of a bad beta1. Fixed in beta2) - - -Version 1.5.3: - * Return 0 or 1 from functions - * Convert several pipes into a single awk call - * Fixed `/etc/os-release` parsing - * Fixed `config_salt()` - * Distro Support Fixed: - * EPEL-based installations (CentOS, Amazon Linux, RedHat) - * SuSE/OpenSUSE (problem running the script twice, ie, existing `devel_languages_python` - repository) - * SuSE 11 SP1 (pip based install and config trigger) - * Distro Support Added: - * Debian 7 (Only git installations at the moment) - - -Version 1.5.2: - * Fix issue with Travis testing (it installs it's own ZeroMQ3 lib - * Allow setting the debug output from an environment variable - * Fix an escape issue in the `printf` calls used in our echo calls - * Don't overwrite files (`config`, `init.d`, etc). Use a specific flag to force overwrites. - * Distro Support Fixed: - * Ubuntu daily installs. - * Distro Support Added: - * Trisquel 6.0 (Ubuntu 12.04) - - -Version 1.5.1: - * Improved unittesting. - * Starting daemons. - * Make sure that daemons are really running. - * For the users to make the choice if installing from PIP (if required since there aren't system - pacakges). - * Fixed salt's git cloning when the salt git tree is already present on the system. - * Distro Support Fixed: - * Debian 6 - * Ubuntu 12.10 - * CentOS - * Distro Support Added: - * SuSE 11 SP1/11 SP2 - * OpenSUSE 12.x - - -Version 1.5: - * First stable version of the script - * Support for: - * Ubuntu 10.x/11.x/12.x - * Debian 6.x - * CentOS 5/6 - * Red Hat 5/6 - * Red Hat Enterprise 5/6 - * Fedora - * Arch - * SmartOS - * FreeBSD 9.0 - - -# Don't remove the line below. -# vim: fenc=utf-8 spell spl=en cc=100 tw=99 fo=want ts=4 diff --git a/ChangeLog b/ChangeLog new file mode 120000 index 0000000..83b6947 --- /dev/null +++ b/ChangeLog @@ -0,0 +1 @@ +CHANGELOG.md \ No newline at end of file diff --git a/ChangeLog~HEAD b/ChangeLog~HEAD new file mode 100644 index 0000000..bfffef0 --- /dev/null +++ b/ChangeLog~HEAD @@ -0,0 +1,873 @@ +Version TBD (In Progress on the Develop Branch): + +Version 2022.03.15: + * Add detection and functions for AlmaLinux and Rocky Linux (myii) #1803 + * Copy configs to correct config dirs (v3004+) (dafyddj) #1798 + * Support Non-LTS Ubuntu 21.04 & 21.10 (blindpirate) #1793 + * Use native repositories for Debian 11 (jpacura) #1615 + * Keep all command-line parameters when UAC is enabled (Simon-TheUser) #1613 + * Add support for Raspbian (Jille) #1612 + * Add openrc to alpine:latest dependencies (krionbsd) #1609 + * Add CentOS 7 base key (bryceml) #1608 + * Fix git master install on alpine 3.12+ (Nascire) #1604 + * Sort help alphabetically (krionbsd) #1601 + +Version 2021.09.17: + * Re-add Ubuntu-16 support as it's still supported with 3001 and 3002 (krionbsd) #1594 + * Add oncoming 3004 release (krionbsd) #1593 + +Version 2021.09.14: + * Update latest Salt version in README (krionbsd) #1588 + * Make Python 3 the default (bryceml) #1577 + * Don't output info if using the default -x value (bryceml) #1587 + +Version 2021.08.19: + * Update README with instructions to use salt-bootstrap custom version (ari) #1580 + * Remove unsupported versions (bryceml) #1578 + * Update FreeBSD default Python version to 3.8 (myii) #1574 + +Version 2021.06.23: + * Use salt.list instead of saltstack.list (bryceml) #1563 + * Use fetch_url function for curl (xeacott) #1562 + * Add Ubuntu 21.04 support (krionbsd) #1559 + * Remove python2-futures package for ArchLinux (myii) #1546 + +Version 2020.03.02: + * Debian 11 (bullseye/testing) support using Debian 10 packages (jpacura, bryceml) #1514 + * Fix bootstrap on Gentoo (ijansky) #1516 #1518 + * Fix project URLs (bryceml) #1526 + * FreeBSD also needs the _PKI_DIR reset (krionbsd) #1523 + * Fix openSUSE Tumbleweed support. (myii) #1525 + * Fix Debian and Ubuntu version support. (jpacura) #1529 + * Powershell: Implement configure only option (for Vagrant). (dafyddj) #1530 + * Powershell: Handle Vagrant's `grains_config` option. (dafyddj) #1520 + * apt-key is deprecated on Debian 10+ and Ubuntu 20+ (bryceml) #1533 + * Fix python Tornado on FreeBSD. (krionbsd) #1522 + +Version 2020.10.20: + * Add support to allow bootstrapping Salt 3002 (s0undt3ch) #1506 + +Version 2020.10.19: + * Fix v3000+ with git install on FreeBSD (krionbsd) #1487 + * Update README giving ONE example of WINDOWS bootstrapping. Default to python3 instead of + python2. (noelmcloughlin) #1496 + * Support git and stable salt-bootstrap on Gentoo. (ijansky) #1500 + * Add support for Linux Mint 20. (taigrr) #1502 + * Adding missing functions for Red Hat 8. (mbochenk) #1489 + * Allow pinning minor 3xxx versions. (max-arnold) #1491 + +Version 2020.06.23: + * Fix for Cumulus Linux 4.1 (darylturner) #1474 + * Fix file download exit code, improve error message on failed download (bryceml) #1478 + * Add support for Ubuntu 20.04 (bryceml) #1479 + * Default Ubuntu 20.04 to Py3 since there isn't a Py2 release for it (bryceml) #1480 + * Warn instead of exit when using -R and -x python3 on centos to allow installing python3 + versions of salt on centos from other repos. Old unsupported releases probably need to + manually install epel-release before running the bootstrap script for versions before 2018.3.5 + and before 2019.2.1 (bryceml) #1482 + * Start maintaining .sha256 files for the bootstrap script + +Version 2020.05.28: + * Fix Opensuse Tumbleweed (noelmcloughlin) #1441 + * Remove Debian 8 from Python 3 supported list (jay1648) #1448 + * Fixed deps parsing for FreeBSD git installs (cedwards) #1462 + * Added support for the upcoming Sodium release (s0undt3ch) #1466 + * Fixed KDE Neon detection (ender8282) #1466 + * Updated README python 2 and 3 installations (gdebunne) #1466 + * Updated README and CONTRIBUTING to prefer Salt's master branch (DmitryKuzmenko) #1466 + * Fixed IUS repo addresses (oeuftete) #1469 + * Updated tests to assert target Python and Salt versions (s0undt3ch) #1470 + * Fixed Amazon 2 -x support (s0undt3ch) #1470 + * Fix Fedora stable installs for older releases (s0undt3ch) #1470 + * Fix CentOS 8 installations (s0undt3ch) #1470 + * Default Debian 10 to Py3 (s0undt3ch) #1470 + * Fix Arch Linux installs (s0undt3ch) #1470 + +Version 2020.02.24: + * Fix SLES 15 install (max298) #1431 + * Fix 3000(Neon) stable install (sblaisot) #1433 + * Fix Amazon Linux Py3 install (s0undt3ch) #1434 + +Version 2020.02.04: + * Add support for the Salt Neon(3000) release (s0undt3ch) #1424 + * Drop support for Fedora < 30 (s0undt3ch) #1424 + * Drop support for Debian < 8 (s0undt3ch) #1424 + +Version 2020.01.29: + * FreeBSD fixes (cedwards) #1413 + * Support the upcoming Neon release (s0undt3ch) #1420 + +Version 2020.01.21: + * FreeBSD fixes (kgbsd) #1376 + * Fix macOS support (s0undt3ch) #1397 + +Version 2019.11.04: + * Fix busybox mktemp compatibility (stanzgy) #1369 + * Install debian 10 packages on debian 10 instead of 9 (kiemlicz) #1375 + * move centos to python36, use python specified by -x (Ch3LL,bryceml) #1380 + * Add debian 10 git install support (Ch3LL) #1378 + +Version 2019.10.03: + * Fix possible typo with `gnupg-curl` vs `gnupg curl` (zahiar) + * Install only python3 packges if requested on ubuntu (noelmcloughlin) #1356 + * Fixing debian wheezy (bryceml) #1359 + * Fixed Amazon Linux 2 detection when lsb_release is installed (jars99) #1361 + * Mac OS Support (felippeb) #1363 #1364 #1365 #1366 + +Version 2019.05.20: + * Allow stable version selection for amazon linux (puluanau) #1328 + * FreeBSD 12 support (sticky-note) #1329 + * Apt wait for lock modification (ripesensor) #1335 + * Opensuse 15 Git installation fixes (s0undt3ch) #1340 #1341 + * Amazon Linux Image fixes (nshenry03) #1343 + * apt_key_fetch fixes (greut) #1344 + * CentOS Git and PIP installation m2crypto fixes (s0undt3ch) #1347 + * CI process enhancements/fixes (s0undt3ch) #1347 + +Version 2019.02.27: + * Add support for bunsenlabs devian derivative (kevinquinnyo) #1300 + * Add support for TurnKey devian derivative (dafyddj) #1313 + * Fix BSD develop install (hackacad) #1316 + * Ensure python-concurrent.futures is installed for Ubuntu (garethgreenaway) #1321 + +Version 2019.01.08: + * use official amazon linux 2 repo for amazon linux 2 (mchugh19) #1287 + * Add release info to applicable docs (rallytime) #1292 + * Modify wait_for_apt function (ripesensor) #1291 + * Add support for LinuxMint 19 (darkocerdic) #1289 + * FIX #1237 SmartOS should use pkgin show-deps (sjorge) #1283 + * Fedora: Reduce DNF calls to 2 during install_dep phase (The-Loeki) #1278 + +Version 2018.08.15: + * Add tests using kitchen-salt (gtmanfred) #1279 + * Add python-futures to Py2 installs (gtmanfred) #1279 + +Version 2018.08.13: + * Fedora Py3 fixes (The-Loeki) #1273 + * Handle commented lines in the requirements files for pip pkgs (rallytime) #1271 + * Remove typo: extra 'c' was accidentally added in #1269 (rallytime) #1270 + * [Arch] Add python2-futures to list of pkgs on git install (rallytime) #1269 + * Fix undefined variable warn_msg on amd64 (alexandruavadanii) #1268 + * SLES12SP changed packages git to git-core and libzmq3 to libzmq4 (mfapouw) #1266 + * Add opensuse 15 specific installation functions (rallytime) #1263 + * Remove support for openSUSE Leap 42.2 (rallytime) #1262 + * Remove support for Fedora 26 (rallytime) #1261 + * Remove support for Ubuntu 17.10 (rallytime) #1260 + * Ensure pipe is absent before mkfifo/mknod (noelmcloughlin) #1256 + * fix for opensuse15 if no lsb_release pkg (noelmcloughlin) #1255 + * Fix Up ShellCheck errors/warnings for latest version of shellcheck (rallytime) #1253 + * Remove daily install option on Ubuntu system (icy) #1250 + * Add python 3 support for Ubuntu 18 (rallytime) #1248 + * Return immediately if apt-get fails (icy) #1247 + * Disable shell error about unbound variable during daily install (icy) #1246 + * OpenSuse_Leap_15.0 saltstack repo support (noelmcloughlin) #1244 + * Add Python3 package support for Debian 9 (rallytime) #1243 + * Add Python3 package support for CentOS 7 (rallytime) #1242 + * Shellcheck fixes found when running latest version (rallytime) #1239 + * Add Python3 package support for Ubuntu 16.04 (rallytime) #1238 + * Fix the variable ref from #803 (rallytime) #1229 + * Add Ubuntu 18.04 support (rallytime) #1228 + * Call __git_clone_and_checkout directly (jheidbrink) #1226 + * Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 + +Version 2018.04.25: + * Install py-tornado4 for FreeBSD. (abednarik) #1219 + * Remove COPR repos configuration for Fedora (vutny ) #1211 + * Fix for silently ignored version argument on CentOS/RHEL (pjcreath) #1210 + * Use integer parameter for sleep command (bdrung) #1205 + * Add 2018.3 branch to list of stable options (rallytime) #1204 + * If installing with -P, install tornado<5.0. (rallytime) #1203 + * Add M2Crypto to python27 centos 6 bootstrap install (Ch3LL) #1201 + * Update README to include mention of bootstrap-salt.ps1 for Windows (rallytime) #1200 + * Port spelling fixes from change in Salt to Bootstrap (rallytime) #1199 + * Add M2Crypto package back to git install functions (rallytime) #1198 + * OpenBSD has a cdn which handles selecting the best mirror (jasperla) #1197 + * Change gnupg2 pacakge to gnupg for non-LTS versions of Ubuntu (rallytime) #1196 + * Install swig30 as freebsd dep instead of swig. (abednarik) #1191 + * make salt-syndic optional on salt bootstrap (sybix) #1190 + * Add __wait_for_apt function: avoid locking on the apt-get process (rallytime) #1186 + * Update the README.rst file with some grammatical changes (rallytime) #1185 + * Update Fedora support: 25 is EOL, 27 is supported (rallytime) #1184 + * Add a note about the use of sudo when running commands to README (rallytime) #1183 + * Adding support for minor release pinning on AWS Linux (cmclaughlin) #1182 + * Wait for zypper processes to finish before calling zypper again (rallytime) #1181 + * only install ca-certificates on opensuse if it isn't already installed (gtmanfred) #1179 + +Version 2017.12.13: + * Use HTTPS URL for OpenSuse's saltstack repo (gdm85) #1174 + * Respect disable repos (-r) option on OpenBSD (eradman) #1171 + * Fix #1168 : -b option causes error (vutny) #1170 + * Fix fatal error with using the -b option. (arizvisa) #1169 + * Devuan support (ymasson) #1165 + * Fix yum repo on AWS Linux (cmclaughlin) #1164 + * Use suse repo to install packages, rather than defining them (rallytime) #1157 + * Remove patch-level-1 specific code for SLES installs (rallytime) #1156 + * priority sort fedora-release (toanju) #1153 + * Declare EOL for SUSE Linux Enterprise Server releases (vutny) #1150 + * Fix #1142: allow git install on Raspbian 9 (vutny) #1146 + * Follow symlinks when parsing distro release files (vutny) #1145 + * fedora: use dnf-utils for F26 and above (toanju) #1144 + * Declare EOL for openSUSE LEAP 42.1 (vutny) #1143 + * Fix #1137: import GPG key through an HTTP(S) proxy (vutny) #1139 + * Fix #1138: git install on Debian/Ubuntu various arches (vutny) #1141 + * Declare EOL for openSUSE releases earlier and including 13.X (vutny) #1136 + * Update Fedora support: 24 is EOL (rallytime) #1134 + +Version 2017.08.17: + * Add new authors (rallytime) #1130 + * README: Fix typo and Table of Contents for Debian section (vutny) #1129 + * Reduce the # of days an issue is stale to 6 months (rallytime) #1125 + * Only install Python version if "-y" is defined (rallytime) #1124 + * Allow powershell bootstrap script to specify PY2 or 3 (rallytime) #1123 + * Remove the test that checks if the EPEL RPM was installed (amendlik) #1122 + * added latest version string of nitrogen release 2017.7 (sourceindex) #1120 + * use versions specified in base.txt when doing pip installs (aflat) #1116 + * Remove pip install requirement on Fedora git installs (rallytime) #1114 + * Introductory support for Debian 10 (Buster) (rallytime) #1113 + * Add Debian 9 support using official repo.saltstack.com packages (rallytime) #1111 + * Fix 1105 (vernondcole) #1110 + * Move SUSE specific function closer to related code (vutny) #1107 + * Update Authors file (rallytime) #1103 + * Fix ubuntu 16.04 LTS installation (BlaineAtAffirm) #1102 + * Add debian_codename_translation function, similar to Ubuntu (rallytime) #1101 + * Add the CODE_OF_CONDUCT.md file (rallytime) #1100 + * Update Debian and Ubuntu service file paths to be consistent with salt (rallytime) #1099 + * Add hash verification information to installation instructions (rallytime) #1098 + * Fix installing salt-cloud package on Arch Linux (rallytime) #1097 + * Support bootstrapping on upcoming Debian GNU/Linux 9.0 (vutny) #1096 + * Removes faulty explicit version ordering (absolutejam) #1095 + * Remove configuring EPEL repo for Amazon Linux (vutny) #1093 + * Fix -j/-J (JSON configs) options for Debian 8 (vutny) #1092 + * Fix #1035: detect and log errors earlier (vutny) #1091 + * Update AUTHORS file (rallytime) #1089 + * Autounmask as separate step (decomposite) #1088 + * Ensure presence of CONFIG_PROTECT_MASK files (decomposite) #1087 + * Update Fedora support: 23 is EOL now. (rallytime) #1084 + * Fix the -R option on Debian/Ubuntu (rallytime) #1082 + * Declare End-Of-Life for Ubuntu 12.04 LTS (vutny) #1080 + +Version 2017.05.24: + * Use freebsd repo to query for salt dependencies (Ch3LL) #1076 + * Allow amazon to work with python2.7 on installs over 2016.11 (Ch3LL) #1073 + * ensure sles12 enables services with stable installs (Ch3LL) #1075 + * Declare End-of-Life for RHEL 5 and its variants (vutny) #1070 + * Fix configuring SaltStack's repo URL for RHEL variants (vutny) #1068 + * Add Manjaro as Arch derivative (luthes) #1063 + * Add "unmarkComment" option to probot-stale config (rallytime) #1064 + * Properly detect all supported Debian GNU/Linux derivatives (vutny) #1062 + * Archlinux must always update (gtmanfred) #1060 + * Alpine: fix adding, checking and running Salt Syndic in stable mode (vutny) #1059 + * Add KDE neon... (EHJ-52n) #1058 + * Update probot-stale message formatting. (rallytime) #1057 + * Fix `git` bootstrap mode for CentOS (vutny) #1054 + * update install_freebsd_10_stable to use FreeBSD repo (bytesatwork-xx) #1053 + * Support OpenBSD 6.1 (eradman) #1048 + * Update daysUntilStale value in probot-stale config (rallytime) #1055 + * Add ability to install and use a different python version when installing salt (Ch3LL) #1049 + * Add non-LTS type support for Ubuntu 17.04 (rallytime) #1051 + * Allow -R option to work for Debian/Ubuntu (rallytime) #1045 + * Adjust "daysUntilStale" variable to 190 days. #1047 + * Reduce the number of days an issue is considered "stale" (rallytime) #1046 + * Alpine: fix bootstrapping from Git -- install OpenRC initscripts (vutny) #1044 + * Add probot-stale config file (rallytime) #1042 + * Shallow cloning and Python setup fix for BSD (amontalban) #1040 + * Fix not needed quoting for salt/salt-bootstrap#1026 (amontalban) #1039 + * Update README file with supported release documentation (rallytime) #1034 + * Remove <<< bashism (The-Loeki) #1032 + * [-R option] Fix logic error where we trying to enable epel with -R (rallytime) #1033 + * Alpine: check Salt services have been enabled to start on boot (vutny) #1031 + * AWS Linux Native Support (bkruger99) #1022 + * Correct package name for FreeBSD installation (amontalban) #1030 + * README: describe architectures support for Salt deps on Linux distros (vutny) #1029 + * This commit addresses some of the issues in salt/salt-bootstrap#996 (amontalban) #1026 + * Add support for stable installation on Alpine Linux release 3.5 (vutny) #1028 + * Alpine Linux: fix installation of multiple pkgs ("stable" bootstrap) (vutny) #1027 + * Add Void Linux support (ndrwdn) #1025 + * RHEL6: disable stdin to fix shell session hang on killing tee pipe (vutny) #1018 + * Adding 2016.11 to stable version (ashokrajar) #1017 + * Update bootstrap-salt.sh (caelor) #1015 + * Alpine Linux support #1009 (ek9) #1010 + * Add Table of Contents in README (vutny) #1014 + +Version 2017.01.10: + * Update AUTHORS.rst with new contributors (rallytime) #1011 + * fix bootstrap in Arch Linux by updating package name from salt-zmq to salt (ek9) #1007 + * Add python-systemd package to debian 8 git install (rallytime) #1003 + * Updated supported versions for Ubuntu: 12.04, 14.04, 16.04, and 16.10 (best effort) (rallytime) #1002 + * Add "yakkety" to ubuntu_codename_translation function (rallytime) #1001 + * Update supported versions for Fedora: 23, 24, and 25. (rallytime) #1000 + * Handle renaming of gnupg-curl to gnupg1-curl for Ubuntu 16.10 (marco-m) #998 + * fix systemctl path (dmitrievav) #997 + * Drop unnecessary workarounds (creating directories) for early releases (vutny) #995 + * Let's detect newly released Salt 2016.11 stable release (vutny) #994 + * Adjust code examples to use the actual bootstrap-salt.sh file name (rallytime) #993 + * Install TLS certs before cloning git repo via https (vutny) #991 + * Remove fix me comment and fix systemsmanagement link (rallytime) #990 + * Correct usage description about "config only" mode (vutny) #989 + * Fix overwriting Minion config from temporarily directory (vutny) #988 + * Configure Salt components after the dependencies installation (vutny) #987 + * Add CloudLinux support (rallytime) #986 + * Apply the insecure flag to git as well (cachedout) #981 + +Version 2016.10.25: + * Update AUTHORS.rst with new contributors (rallytime) #978 + * Let's start detecting the upcoming Debian 9 (Stretch) (lhost) #975 + * FreeBSD: set _SALT_ETC_DIR directory to match ports (eradman) #970 + * Update OpenBSD 6.0+ provisioning (eradman) #969 + * adds supports for Cumulus Linux (plumbis) #967 + * Run "pip install -U futures" for SmartOS git install (rallytime) #966 + * Change /pkg/rpm/ to /pkg/deb/ in install_ubuntu_git_post func (rallytime) #965 + * SUSE: Refactor systemsmanagement_saltstack repo checks to be DRY (rallytime) #964 + * Fix detection of EPEL repository with not-expired metadata (sp1r) #963 + * Display warning message about deprecating the `-G` option (vutny) #958 + * Allow correct salt paths to be used when -c is passed (justinta) #955 + * Fix issues with replacing configs when python3 is default in os. (fizmat) #954 + * Remove m2crypto package installs (rallytime) #951 + * Try to install SP4 packages on SLE 11 when SP version is older (rallytime) #950 + * Add python-futures package to install_centos_git_deps (rallytime) #948 + * Add /etc/portage/package.accept_keywords to CONFIG_PROTECT_MASK (rallytime) #947 + * Deprecate `-G` option: use `https` scheme for GitHub by default (vutny) #945 + * [SECURITY] Properly handle GnuPG keys for APT repositories (vutny) #940 + +Version 2016.08.16: + * Ubuntu git mode: install all deps from SaltStack corp repo by default. (vutny) #936 + +Version 2016.08.15: + * Remove chris-lea python-zmq repo. (rallytime) #929 + * Disable the '--enablerepo=${_EPEL_REPO}' part of yum install cmds when passing -R/-r. (rallytime) #928 + * Fix grep pattern in `__check_services_sysvinit`. (vutny) #927 + * Missing python dependency for salt-cloud added. (toanju) #925 + * Fix git install mode when using commit hash with `-g` option. (vutny) #922 + * Install `salt-cloud` package with `-L` option in `stable` mode. (vutny) #919 + * Fix bootstrapping from Git on CentOS7 when `systemd` is not running. (vutny) #915 + +Version 2016.07.07: + * Add new contributors to authors list. (rallytime) #910 + * Split up python-requests and python-msgpack packages for newer Fedora. (rallytime) #909 + * Fix typo in repository configuration for FreeBSD. (ekollof) #907 + * Make sure $STABLE_REV is set before setting up SaltStack repo. (rallytime) #906 + * Remove tests written question from template. (rallytime) #904 + * Adding support for Linux Mint 18 (based on Ubuntu 16.04). (eliezerlp) #902 + * Allow git installation for SLES 12. (rallytime) #903 + * Set repo_arch for raspberry pi installs. (mrichar1) #899 + * Change temporary directory for storing executable to C:\Windows\Temp. (themalkolm) #897 + * add apt-transport-https for ubuntu. (epcim) #896 + * Fix expanding shell script position parameters with nounset enabled. (vutny) #895 + * RFC: Add tests for bootstrap-salt.ps1. (themalkolm) #893 + * Keep original name of salt executable executable. (themalkolm) #857 + +Version 2016.06.27: + * Fix race condition when doing one-liner bootstrap. (vutny) #889 + * Add space back in between 'install' and '--install'. (rallytime) #890 + +Version 2016.06.24: + * Save invocation command and arguments into variables. (jfindlay) #885 + * Update the authors list with new contributors. (rallytime) #884 + * Add option to make setup.py install quiet. (nasenbaer13) #865 + * Fix lint. (jfindlay) #881 + * Add -R option to allow a custom repo URL. (rallytime) #877 + * Exclude path of script when called from another dir. (l2ol33rt) #871 + * Print invocation info. (jfindlay) #869 + * Always refresh the Arch Linux keyring if needed. (cachedout) #868 + * Ubuntu 16.04 LTS Xenial Support. (notpeter) #852 + * Install Salt packages from repo.saltstack.com on Debian 7 "Wheezy". (vutny) #864 + * Drop support for Debian 6 old-old-stable "squeeze": reached end-of-life. (vutny) #860 + * Removed ubuntu version restriction for apt-get update. (marccardinal) #859 + * Fix bootstrapping from git on Debian 8 by installing latest `tornado` via pip. (vutny) #828 + * Add the ability to override master and/or minion configs from CLI. (rallytime) #841 + * Don't sleep 11 seconds if the user allowed overwrite of config files. (poelzi) #832 + +Version 2016.05.11: + * Only overwrite the minion config file if '-C' is passed. Otherwise, preserve it. (rallytime) #848 + +Version 2016.05.10: + * Removed libzmq4 and forking-deamon-patch for Opensuse13. (jtand) #840 + * Ubuntu 12.04 needs to be updated before installing packages. (jtand) #829 + * Always download and install *latest* `epel-release` package on RHEL systems. (vutny) #825 + * Fix Amazon Linux EOL check. (vutny) #818 + +Version 2016.04.18: + * Add support for openSUSE Leap. Thanks Roman Inflianskas(rominf). #693 + * Fix missing deps installation on Debian. Thanks Steve Groesz(wolfpackmars2). #699 + * Update SaltStack repo location and latest version for Windows. (brandon099) #711 + * Better EPEL repository detection on RHEL and CentOS. (vutny) #717 + * Fix git invocation fail when `man` command is not available. (vutny) #718 + * Fix `epel-release` package installation on CentOS/RHEL 5. (vutny) #719 + * Removed deprecated cli option. (abednarik) #705 + * Remove RHEL optional repo check and enable. (vutny) #720 + * Remove SaltStack COPR repository configuration for CentOS/RHEL5. (vutny) #721 + * Add opensuse_Tumbleweed support. (aboe76) #725 + * Sometimes bootstrap doesn't install zmq. (jtand) #726 + * Process -s (default sleep for service restarts) in bootstrap-salt.sh. (hipikat) #692 + * Minion keys and /etc/salt/minion should be overwritten on -C. (cro) #541 + * Fix for -C (_CONFIG_ONLY). (beaucephus) #544 + * Fix when using upstream tags. (The-Loeki) #564 + * COPR project moved. (rmohr) #738 + * Update license year range. (pra85) #743 + * Use POSIX-Compliant Command-Exists Test. (kojiromike) #741 + * Add -f option to force shallow cloning. (eyj) #660 + * add SLE 12 support, fix OpenSUSE support. (grep4linux) #748 + * Fix CentOS git setup.py syntax error upon installation. (The-Loeki) #746 + * Enable shallow cloning for version branches by default, not only tags. (vutny) #750 + * do not install copr repo on fedora 22+. (toanju) #751 + * Add support for pegged versions on YUM based OS'ses through repo.saltstack.com. (The-Loeki) #685 + * fix for FreeBSD 11 CURRENT install functions. (serge-p) #723 + * Don't add zypp repo if it already exists. (furlongm) #731 + * switch repositories for suse and sles fixes `#706`_. (aboe76) #734 + * Reformat and correct usage instructions. (vutny) #755 + * fixed missing repo for suse 12. (aboe76) #756 + * fix for Amazon Linux. (shawnbutts) #700 + * adding support for OpenBSD distribution. (serge-p) #722 + * fixing syntax errors. (beardedeagle) #760 + * Import CentOS 7 GPG key on RHEL for installing base dependencies from Salt corp repo. (vutny) #765 + * Fix multiple lint errors (shellcheck) and make some refactoring. (vutny) #768 + * Fix sleep time option to recognize a numeric argument. (vutny) #771 + * Update README. (vutny) #787 + * get tornado from pip on a fedora git install. (jfindlay) #785 + * Remove the Saltstack repo's alias. (cro) #794 + * Ability to change cache dir. (clarkperkins) #761 + * Add config_freebsd_salt func so freebsd puts cfgs in the right place. (ryanwalder) #779 + * Allow archive versions. (clarkperkins) #769 + * Lack of HTTPS for RPM packages. (jaredestroud) #783 + * Ability to change cache dir. (clarkperkins) #761 + * Bootstrap on Docker. (vutny) #793 + * add downstream pkg repo for SUSE. (jfindlay) #791 + * Fixed use of HTTP over HTTPS for anonscm.debian.org. (gdm85) #788 + * Bump Salt version to latest stable in PS bootstrap script for Windows. (vutny) #801 + * Add an -l option to switch https to http links. (rallytime) #795 + * Virtualenv support for Ubuntu. (l2ol33rt) #666 + * Lint. (jfindlay) #805 + * use portable command check. (jfindlay) #806 + * Update epel-release version number (RuriRyan) #809 + + +Version 2015.11.09 + * Make sure that wget is installed. #868 + + +Version 2015.11.04: + * Allow bypassing dependencies installation. Thanks EYJ. #656. + * Add FreeBSD 11 support. Thanks Chris Buechler(cbuechler). #653 + * Move RHEL installations to use repo.saltstack.com #674 + * Move Debian 8 installation to use repo.saltstack.com #674 + * Fix error finding python-jinja2 in RHEL 7. Thanks Rob Eden(hedinfaok). #654 + * Move Ubuntu 12 and 14 installations to use repo.saltstack.com #674 + * Move FreeBSD installations to use repo.saltstack.com #674 + * Use dnf on Fedora 22 and later. Thanks Michele Bologna (mbologna). #665 + + +Version 2015.08.06: + * Fix python-requests installations for Ubuntu >= 14.04 LTS. #631, #632, #633 + * Install python-crypto from Chris Lea's PPA for Ubuntu < 14.04 + * Exit the git checkout directory before deleting it. Thanks Bret Fisher. #634 + * Use prefix /usr for centos git install. Thanks Stanislav B. #638 + * Drop Ubuntu EOL versions. All Ubuntu version before 12.04. + * Make sure python-dev is installed wheb trying to install tornado from PyPi. #640 + + +Version 2015.07.22: + * Fix tornado installation in Ubuntu. Thanks Yushi Nakai. #627 + * Install tornado using pip on Ubuntu for Salt's v2015.8.xx onward stable releases. + * Install requests on Ubuntu from Chris Lea's PPA. #630 + +Version 2015.07.17: + * Make sure setuptools is installed before using it. #598. + * `systemd` is only fully supported from 15.04 onwards. #602 + * Fix debian mirrors issue. Thanks Wolodja Wentland(babilen). #606 + * Fix python-jinja2 repo move on RHEL6. Thanks lomeroe. #621 + * Allow skipping services. Thanks denmat. #455 + * Fix missing Debian init script. #607 saltstack/salt#25270 and saltstack/salt#25456 + * Fix SmartOS etc path. Thanks Bret Fisher. #624 + * Fix possible unbound variable in Gentoo. #625 + * Properly detect the git binary in SmartOS. #611 + +Version 2015.05.07: + * Lower required requests version dependency. Use system requests package where possible. + * Allow Ubuntu alternate ppas. Thanks Peter Tripp(notpeter). #563 + +Version 2015.05.04: + * Fix the configuration path for FreeBSD. #567/#552. Thanks Ronald van Zantvoort(The-Loeki). + + Fix non grouping support in POSIX sed. Thanks Ronald van Zantvoort(The-Loeki). + * Add Debian 8 support. Thanks Matt Black(mafrosis) + * Improve Debian version parsing. Thanks Mark Lee(malept) + * Make sure we update packages list one Chris Lea's PPA repository is added. + * Hard code the Debian Squeeze backports to the DE mirror since the main repository is down. + Thanks @panticz. #589. + * Only install git if not already installed. #560 + * Fix openSUSE 13.2 where we need to pass --replaceflags. Thanks Roman Inflianskas(rominf). + #504. + * Make sure that a recent enough requests package is installed in Debian/Ubuntu. + * Install tornado on git installs for the develop branch if necessary. #580 + * Add support for Ubuntu 15.04 + +Version 2015.03.15: + * Add multi-master support. Thanks Fred Reimer(freimer). #555 + +Version 2015.03.04: + * Fix the salt package selection on Arch stable installs. + +Version 2015.02.28: + * Fix Debian backports repository. + +Version 2015.02.27: + * Try other tools besides wget when downloading the COPR repo file. Thanks Ronald van + Zantvoort(The-Loeki) + * No need to install packages from the Unstable repository for debian, use backports. Thanks + Ari Aosved(devaos) + * Fix an issue in CentOS where the syndic package wasn't being installed(since it's now a + separate package). Thanks Ronald van Zantvoort(The-Loeki) + * Enable the server-optionals repository for RHEL >= 7 + * RHEL/CentOS 5 now uses the COPR repository. #533 + +Version 2015.01.12: + * Add package upgrades support to FreeBSD. Thanks William Eshagh(eshagl). + * Make sure wget is installed on debian bare systems. + * Make sure the Arch pacman database is up to date + * Install `python-hashlib` in CentOS 5 in order to use the COPR repository + +Version 2014.12.11: + * Enable binary installations on CentOS 7. Thanks ggillies + * Updated the URL for EPEL 7 + +Version 2014.10.30: + * Apply the forking patch to openSUSE git installations. + +Version 2014.10.28: + * Install the python systemd bindings for Arch and Fedora git installations + * Allow cloning from Salt's git repository using HTTPS. #475 + +Version 2014.10.21: + * Fix path to python on FreeBSD. Thanks Pavel Snagovsky(paha) + * Fix syndic installation on RHEL based installations. Thanks markgaylard + * Properly detect the git checkout `basename` directory instead of hard coding it. Thanks + Howard Mei(HowardMei). + * Allow installing ZMQ for SaltStack's COPR repository. + * Allow installing ZMQ4/PyZMQ14 from Chris Lea's PPA repository. + +Version 2014.10.14: + * Fixed a regex issue with matching Salt's tags. Match v2014.7 but not 2014.7 as a valid tag + * Distro Support Added: + * Added Linux Mint 17 support(Thanks Skyler Berg) + * Disrto Suuport Fixed: + * Init pacman keys if not done so previously + +Version 2014.09.25: + * Properly detect Amazon AMI's >= 2014.9. #468 + +Version 2014.09.09: + * Distro Support Fixes: + * Updated the URL for EPEL 7 + * PIP based installations on Ubuntu 10.04 need setuptools installed + * Arch stopped providing the version information on `/etc/arch-release` + * Complete `salt-api` services checking. #450 + +Version 2014.08.30: + * Skip service checks for `salt-api`, since this should be an opt-in service not necessarily + meant to start at boot time. + * Distro Support Fixes: + * Also install the salt-api service on RHEL based distributions for git based + installations. + * Properly detect Arch Linux when lsb-release is available + * Updated the URL for EPEL 7 + +Version 2014.08.23: + * Avoid redirect breakage when installing EPEL with rpm on RHEL 5 + * Ensure python-apt is installed by the bootstrap script for Debian & Ubuntu minions. Thanks + @garethgreenaway. + * Don't shallow clone on git versions lower than 1.7.10 + * Only shallow clone on git tag based installations + * Configurable Salt repository clone directory for git based installations + * Distro Support Fixed: + * Fixed the URL to download EPEL for Cent 5 + * Use the full path to the `chkconfig` binary when checking for services in SysV init + systems. + * Fixed an issue where the default sleep period(3 secs) on Ubuntu would cause a race + condition with upstart wherein the package installation would call an upstart start and + before it could complete, bootstrap would call another. The result was *two* copies of salt + running which ended up causing a most stubborn bug that's documented in + https://github.com/saltstack/salt/issues/12248 + +Version 2014.07.29: + * Shallow clone Salt's repository for speed improvements. In case of failure, resume old + behaviour. + * Fixed bug introduced in 0577622 when salt-api service install and checks were added + * Distro Support Fixed: + * Fixed infinite loop when handling RHEL dependencies. Thanks Dan Mick(@dmick). + +Version 2014.07.27: + * Amazon Linux AMI 2010.xx is not explicitly not supported. + * Install the `salt-api` scripts if available when the `salt-master` is also installed. + * Added support for a configurable sleep time when starting, restarting and checking for + enabled services. + * Drop the `tsflags` requirement for RHEL and RHEL based distributions. + * When sorting release files, oracle-release has higher priority than redhat-release. + * Distro Support Fixed: + * Debian >= 7 uses system's python-requests package, not PIP + * Install 'python-zypp' in SuSE and openSUSE(required by Salt's zypper module) + * Only install EPEL on requiring distributions if not already installed + * CentOS 7 now uses systemd and the script now properly handles it + * systemd in openSUSE 12.2 complains if service does not contain `.service`` + * Properly detect openSUSE using `lsb_release + * SLES 11 SP3 ships with both python-M2Crypto-0.22.* and python-m2crypto-0.21 and we will + be asked which we want to install, even with --non-interactive. Let's try to install the + higher version first and then the lower one in case of failure. + * Allow some extra time on RHEL for the optionals repo check in case the repository + subscription is being managed externally. + +Version 2014.06.30: + * Distro Support Fixed: + * Bump build/maintenance version for epel-release package. Thanks Gregory Meno(GregMeno) + * Properly detect Amazon Linux AMI when using `lsb_release` + * Fix `tsflags` installation. + +Version 2014.06.28: + * Fixed `tsflags` packages detection for RHEL and Oracle Linux 6.5 + +Version 2014.06.21: + * Also export the HTTPS proxy environment variable. Thanks Giuseppe Iannello(gianello). + * Distro Support Fixed: + * Improve Oracle Linux Server detection + * Overcome the Oracle Linux awkwardness. `--enablerepo=XYX` disables ALL OTHER REPOS!!!! + * Oracle Linux also support testing repositories installation + +Version 2014.06.19: + * Allow passing the master address as an environment variable, `BS_SALT_MASTER_ADDRESS` + * Fixed an issue with the keys pre-seed. We were passing absolute paths where we only needed + basenames. + * Added HTTP proxy configuration support. Thanks Giuseppe Iannello(gianello), + * Distro Support Added: + * Elementary OS + * RHEL 7 Beta/RC + * Kali Linux. Thanks Valentin Bud(valentinbud) + * Distro Support Fixed: + * Improved RHEL optionals repository detection + +Version 2014.04.16: + * Fixed a bug for RHEL 6 based distributions where yum-utils was not getting installed. + * Added minor version check for RHEL 6 optional channel. + * Added quotes around "apache-libcloud>=$_LIBCLOUD_MIN_VERSION" for proper version requirements + handling. + * Install the python 'requests' package which is now a hard dependency in Salt. + * When installing from a user defined repository add the official one as a remote and fetch + its tags for proper versioning. + * Distro Support Fixed: + * CentOS netinstall ISO's don't install `chkconfig` + * Improved RHEL optional repository detection. This allows user repository usage, which + don't need the optional repository support since they usually provide their packages. + * Distro Support Added: + * Oracle Linux + * Scientific Linux + +Version 2014.03.10-1: + * Distro Support Fixed: + * Fix the Debian services running function + +Version 2014.03.10: + * Debian based distributions which don't use upstart now also check if the salt services are + enabled. + * Distro Support Fixed: + * RedHat based distributions now have a proper services enabled checker. + +Version 2014.02.27: + * Fixed a bug on the services enabled function searching logic. + * Arch, Fedora, openSUSE and SuSE now check for services enabled, if using systemd + * CentOS(and any RedHat based) and Ubuntu now check for services enabled is using upstart + * Distro Support Added: + * Debian 8. Thank You Boris Feld(Lothiraldan). + +Version 2014.02.19: + * Fixed a problem with the quotes of an error message + * Arch installations now uses the community repository + * Distro Support Fixed: + * Fixed Fedora Git based installations(git was not being installed) + +Version 2014.02.18: + * Debian based distribution now get a warning stating that NOT starting daemons does not work + as supposed, mainly because that's the Debian policy. + * Fix bug introduced when implementing the master ip flag. The default minion includes + directory is `minion.d`, not `minion.conf.d` + +Version 2014.02.16: + * The script now allows setting up the salt-master address as a separate configuration file by + passing `-A` to the script. + * Add support to install apache-libcloud by passing the `-L` flag. In some distribution it's + also needed to pass `-P` because the minimal apache-libcloud version is `0.14.0`. This support + is still missing for FreeBSD and SmartOS. + * Fixed an issue when copying or moving files. We now test to see if the destination is a + directory and create a full path from that so that the "do not override" logic works as + supposed. #294. + * Allow passing additional package names to install while installing Salt's dependencies. #262 + * Pass the salt configuration directory, default or from environment variable to the setup.py + script for git based installations. #305 + * Distro Support Fixed: + * FreeBSD `fetch` now has a notion of insecure certificates. Handle this properly. Thank + You Mike Carlson(m87carlson). + * Arch, openSUSE and SuSE are now upgradable when the `-U` flag is passed. + * Force overwrites now works for existing init.d scripts on CentOS git installations. #259 + * Distro Support Added: + * FreeBSD 10 is now also supported. Thank You Mike Carlson(m87carlson). + * Red Had Enterprise Workstation is now supported. + +Version 1.5.11: + * Fixed an out of scope variable missed when moving functions around. + +Version 1.5.10: + * Salt no longer has the master branch in git, install from develop as default. + * Installing from Git on Red Hat based distributions now also needs `yum-utils` installed. + * Allow the script to use a different git repository to install from. + * Fixed a bug where a branch name with dashes would be wrongly detected as an option to the + script. + * Default to secure file downloads(if any). + * Distro Support Fixed: + * Minimal Ubuntu installation might not have upstart installed, fixed. + * FreeBSD now uses the official FreeBSD repository. Thank You Paul Brian(lifeisstillgood)! + +Version 1.5.9: + * Allow to not start the daemons after bootstrapping salt. This will allow `vagrant-lxc` + installations, `debootstrap*`, etc, to finish properly. Thanks Henrik Holmboe (holmboe). + * Distro Support Fixed: + * Salt >= 0.17 requires ElementTree which is on the python standard library after python + 2.6 but openSUSE split that into a separate package. + * Fixed a logic preventing proper Ubuntu bootstrapping on some situations. + +Version 1.5.8: + * Fixed an Ubuntu regression. `add-apt-repository` is only available on + `software-properties-common` after 12.10, inclusive. Thanks Diego Woitasen(diegows) + +Version 1.5.7: + * For RedHat based distributions which rely on `epel`, the user can now pass `testing` to the + script and `epel-testing` shall be used to bootstrap salt and it's dependencies. + * No full system upgrades, if optional by the distribution, shall be done unless `-U` is passed + to the bootstrap script(required upgrade procedures must exist on the script, currently Debian + and RedHat based distributions support system upgrades). + * Fixed an issue where passing BS_KEEP_TEMP_FILES=1 to the script was causing an error. #206. + * Switched FreeBSD default packages repository to PCBSD(http://www.pcbsd.org) and added + multiple repository support to install salt from the SaltStack's FreeBSD repository. Thanks + Christer Edwards(cedwards). + * Improved Gentoo Support. Thanks Elias Probst(eliasp). + * Stop execution soon for end of life distributions or non supported distribution versions. + * Distro Support Fixed: + * Fixed an unbound variable while bootstraping Gentoo. + * Fixed CentOS/RHEL 5. + * Fixed crypto++ compilation. Thanks Kenneth Wilke(KennethWilke)! + * Fixed FreeBSD git installations not pointing to the proper salt configuration directory, + which on FreeBSD is '/usr/local/etc/salt'. + * Fixed testing installation for Red Hat based distributions. Thanks Jeff Strunk(jstrunk) + * Fixed wrong package name on Arch. Thanks Niels Abspoel(aboe76) + * Make sure the Ubuntu universe repository is enabled. Thanks Karl Grzeszczak(karlgrz). + * Fixed SmartOS installation. Thanks Matthieu Guegan(mguegan). + +Version 1.5.6: + * If there's a `grains` file on the provided temporary configuration directory, move it to the + proper place while moving the minion configuration file. + * Gentoo bootstraps can now use a bin host to provide binary packages, just set the + `BS_GENTOO_USE_BINHOST` environment variable. + * If `BS_KEEP_TEMP_FILES=1` is found on the environment, the script will copy the files instead + of moving them. + * There were still some `mv` and `cp` occurrences which were not using their `{move,copy}file` + replacements which ended up on now respecting the "Do not override existing configuration" + feature. + * Distro Support Fixed: + * Arch now upgrades it's system package properly as suggested on their mailing list. + * Arch now moves back any configuration files provided by the user renamed by pacman on the + installation process. + * Fixed SmartOS detection(was being detected as Solaris) and bootstrapping. Fixed SmartOS + different gcc package names for different package sets. + * Fixed FreeBSD git based installations(no rc.d scripts were available). + * Fixed FreeBSD not re-evaluating the `PKI_DIR` variable since the `SALT_ETC_DIR` was + redefined. + * Distro Support Added: + * Linux Mint. Thanks Alex Van't Hof(alexvh)! + * Linaro. + + +Version 1.5.5: + * Fixed a variable error in the new pre-seed feature. + * Fixed the destination path to where the pre-seed minions keys should be copied. + * Debian installations now use SaltStack's repository. + * Configuration files can now be passed as an URL to a compressed file. Thanks Geoff Garside! + * Distro Support Fixed: + * Debian's optional ZMQ3 support was fixed (libzmq3 has moved from experimental to + unstable). + * Ubuntu Lucid Daily PPA + * SmartOS no longer ignores $SALT_ETC_DIR. Matthieu Guegan! + * FreeBSD no longer ignores $SALT_ETC_DIR. Thanks Geoff Garside! + * FreeBSD does not try to install pkgng if pkg is installed. Thanks Geoff Garside! + * SunOS (Make use of XPG4 binaries on SunOS). Thanks Matthieu Guegan! + * openSUSE (Don't fail if only one of the repositories failed to update) + * Arch (Fixed the GPG issues for git installations) + * Distro Support Added: + * Gentoo. Thanks kaithar! + + +Version 1.5.4: + * Fixed an issue we had when /proc/cpuinfo had more than one CPU. Detected on AMD CPUs. + * OpenSUSE 12.3 uses lsb_release. Fix the returned distro name "openSUSE project" to "openSUSE" + which the script handles. + * Added an custom move function which will only override if required and if we permit it. + * Implemented the necessary function to pre-seed minion keys on a salt master as an optional + argument. + * Distro Support Fixed: + * FreeBSD (Don't let the script fail if PACKAGESITE is not set) + * Debian Stable installations (the function search was not working as supposed) + * Distro Support Added: + * Ubuntu 13.04 (Was disabled because of a bad beta1. Fixed in beta2) + + +Version 1.5.3: + * Return 0 or 1 from functions + * Convert several pipes into a single awk call + * Fixed `/etc/os-release` parsing + * Fixed `config_salt()` + * Distro Support Fixed: + * EPEL-based installations (CentOS, Amazon Linux, RedHat) + * SuSE/OpenSUSE (problem running the script twice, ie, existing `devel_languages_python` + repository) + * SuSE 11 SP1 (pip based install and config trigger) + * Distro Support Added: + * Debian 7 (Only git installations at the moment) + + +Version 1.5.2: + * Fix issue with Travis testing (it installs it's own ZeroMQ3 lib + * Allow setting the debug output from an environment variable + * Fix an escape issue in the `printf` calls used in our echo calls + * Don't overwrite files (`config`, `init.d`, etc). Use a specific flag to force overwrites. + * Distro Support Fixed: + * Ubuntu daily installs. + * Distro Support Added: + * Trisquel 6.0 (Ubuntu 12.04) + + +Version 1.5.1: + * Improved unittesting. + * Starting daemons. + * Make sure that daemons are really running. + * For the users to make the choice if installing from PIP (if required since there aren't system + pacakges). + * Fixed salt's git cloning when the salt git tree is already present on the system. + * Distro Support Fixed: + * Debian 6 + * Ubuntu 12.10 + * CentOS + * Distro Support Added: + * SuSE 11 SP1/11 SP2 + * OpenSUSE 12.x + + +Version 1.5: + * First stable version of the script + * Support for: + * Ubuntu 10.x/11.x/12.x + * Debian 6.x + * CentOS 5/6 + * Red Hat 5/6 + * Red Hat Enterprise 5/6 + * Fedora + * Arch + * SmartOS + * FreeBSD 9.0 + + +# Don't remove the line below. +# vim: fenc=utf-8 spell spl=en cc=100 tw=99 fo=want ts=4 diff --git a/README.rst b/README.rst index 6b134de..da4bc95 100644 --- a/README.rst +++ b/README.rst @@ -32,7 +32,7 @@ sum** of the downloaded ``bootstrap-salt.sh`` file. The SHA256 sum of the ``bootstrap-salt.sh`` file, per release, is: -======= +- 2022.05.19: ``e92e1df6930285cf23eda188bee3cfa3dd6c577b4fb7aa91b29213ad820199b1`` - 2022.03.15: ``8f65952c3435f441e7f793941d5162d3ec2033a9ef82722ff1da67a2ef860a2f`` - 2021.09.17: ``090d652cd6290debce0e3a4eded65086a4272e69446e711eb26f87160593b6a2`` - 2021.09.14: ``30fdcba972f449630b4f13492cb5525e69e08fa2cdb66a6dc78f1536ad279e52`` @@ -102,12 +102,12 @@ To view the latest options and descriptions for ``salt-bootstrap``, use ``-h`` a Examples: - bootstrap-salt.sh - bootstrap-salt.sh stable - - bootstrap-salt.sh stable 3003.3 - - bootstrap-salt.sh stable v3002.7 + - bootstrap-salt.sh stable 3004.1 + - bootstrap-salt.sh stable v3003.4 - bootstrap-salt.sh testing - bootstrap-salt.sh git - - bootstrap-salt.sh git 3003.3 - - bootstrap-salt.sh git v3002.7 + - bootstrap-salt.sh git 3004.1 + - bootstrap-salt.sh git v3003.4 - bootstrap-salt.sh git 06f249901a2e2f1ed310d58ea3921a129f214358 Options: @@ -218,14 +218,14 @@ If you want to install a package of a specific release version, from the SaltSta .. code:: console curl -o bootstrap-salt.sh -L https://bootstrap.saltproject.io - sudo sh bootstrap-salt.sh -P stable 3003.3 + sudo sh bootstrap-salt.sh -P stable 3004.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 v3003.3 + sudo sh bootstrap-salt.sh git v3004.1 Using ``curl`` to install latest development version from GitHub: @@ -280,14 +280,14 @@ Installing a specific version from git using ``wget``: .. code:: console wget -O bootstrap-salt.sh https://bootstrap.saltproject.io - sudo sh bootstrap-salt.sh git v3003.3 + sudo sh bootstrap-salt.sh git v3004.1 Installing a specific version package from the SaltStack repo using ``wget``: .. code:: console wget -O bootstrap-salt.sh https://bootstrap.saltproject.io - sudo sh bootstrap-salt.sh -P stable 3003.3 + sudo sh bootstrap-salt.sh -P stable 3004.1 **NOTE** @@ -303,7 +303,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 3003.3 + sudo sh bootstrap-salt.sh -P stable 3004.1 With python version 2, the following in-line code should always work: @@ -317,7 +317,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 v3003.3 + sudo sh bootstrap-salt.sh git v3004.1 Install using fetch ~~~~~~~~~~~~~~~~~~~ @@ -378,7 +378,7 @@ Installing a target version package of Salt from the SaltStack repo: .. code:: console - curl -L https://bootstrap.saltproject.io | sudo sh -s -- stable 3003.3 + curl -L https://bootstrap.saltproject.io | sudo sh -s -- stable 3004.1 Installing the latest master branch of Salt from git: diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh old mode 100644 new mode 100755 index b0d6d68..7537a09 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -23,7 +23,7 @@ #====================================================================================================================== set -o nounset # Treat unset variables as an error -__ScriptVersion="2022.05.19" +__ScriptVersion="2022.08.12" __ScriptName="bootstrap-salt.sh" __ScriptFullName="$0" @@ -268,6 +268,7 @@ _CUSTOM_MASTER_CONFIG="null" _CUSTOM_MINION_CONFIG="null" _QUIET_GIT_INSTALLATION=$BS_FALSE _REPO_URL="repo.saltproject.io" +_ONEDIR_DIR="salt" _PY_EXE="python3" _INSTALL_PY="$BS_FALSE" _TORNADO_MAX_PY3_VERSION="5.0" @@ -290,17 +291,24 @@ __usage() { Usage : ${__ScriptName} [options] [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) + - 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) + - onedir Install latest onedir release. + - onedir [version] Install a specific version. Only supported for + onedir packages available at repo.saltproject.io + + - onedir_rc Install latest onedir RC release. + - onedir_rc [version] Install a specific version. Only supported for + onedir RC packages available at repo.saltproject.io Examples: - ${__ScriptName} @@ -312,6 +320,10 @@ __usage() { - ${__ScriptName} git 2017.7 - ${__ScriptName} git v2017.7.2 - ${__ScriptName} git 06f249901a2e2f1ed310d58ea3921a129f214358 + - ${__ScriptName} onedir + - ${__ScriptName} onedir 3005 + - ${__ScriptName} onedir_rc + - ${__ScriptName} onedir_rc 3005 Options: -a Pip install all Python pkg dependencies for Salt. Requires -V to install @@ -582,7 +594,7 @@ if [ "$#" -gt 0 ];then fi # Check installation type -if [ "$(echo "$ITYPE" | grep -E '(stable|testing|git)')" = "" ]; then +if [ "$(echo "$ITYPE" | grep -E '(stable|testing|git|onedir|onedir_rc)')" = "" ]; then echoerror "Installation type \"$ITYPE\" is not known..." exit 1 fi @@ -604,7 +616,7 @@ elif [ "$ITYPE" = "stable" ]; then if [ "$#" -eq 0 ];then STABLE_REV="latest" else - if [ "$(echo "$1" | grep -E '^(latest|1\.6|1\.7|2014\.1|2014\.7|2015\.5|2015\.8|2016\.3|2016\.11|2017\.7|2018\.3|2019\.2|3000|3001|3002|3003|3004)$')" != "" ]; then + if [ "$(echo "$1" | grep -E '^(latest|1\.6|1\.7|2014\.1|2014\.7|2015\.5|2015\.8|2016\.3|2016\.11|2017\.7|2018\.3|2019\.2|3000|3001|3002|3003|3004|3005)$')" != "" ]; then STABLE_REV="$1" shift elif [ "$(echo "$1" | grep -E '^(2[0-9]*\.[0-9]*\.[0-9]*|[3-9][0-9]{3}(\.[0-9]*)?)$')" != "" ]; then @@ -615,7 +627,49 @@ elif [ "$ITYPE" = "stable" ]; then fi shift else - echo "Unknown stable version: $1 (valid: 1.6, 1.7, 2014.1, 2014.7, 2015.5, 2015.8, 2016.3, 2016.11, 2017.7, 2018.3, 2019.2, 3000, 3001, 3002, 3003, 3004, latest, \$MAJOR.\$MINOR.\$PATCH until 2019.2, \$MAJOR or \$MAJOR.\$PATCH starting from 3000)" + echo "Unknown stable version: $1 (valid: 1.6, 1.7, 2014.1, 2014.7, 2015.5, 2015.8, 2016.3, 2016.11, 2017.7, 2018.3, 2019.2, 3000, 3001, 3002, 3003, 3004, 3005, latest, \$MAJOR.\$MINOR.\$PATCH until 2019.2, \$MAJOR or \$MAJOR.\$PATCH starting from 3000)" + exit 1 + fi + fi + +elif [ "$ITYPE" = "onedir" ]; then + if [ "$#" -eq 0 ];then + ONEDIR_REV="latest" + else + if [ "$(echo "$1" | grep -E '^(latest)$')" != "" ]; then + ONEDIR_REV="$1" + shift + elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}(\.[0-9]*)?)$')" != "" ]; then + # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix + ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') + ONEDIR_REV="minor/$ONEDIR_REV" + shift + else + echo "Unknown stable version: $1 (valid: 3005, latest.)" + exit 1 + fi + fi + +elif [ "$ITYPE" = "onedir_rc" ]; then + # Change the _ONEDIR_DIR to be the location for the RC packages + _ONEDIR_DIR="salt_rc/salt" + + # Change ITYPE to onedir so we use the regular onedir functions + ITYPE="onedir" + + if [ "$#" -eq 0 ];then + ONEDIR_REV="latest" + else + if [ "$(echo "$1" | grep -E '^(latest)$')" != "" ]; then + ONEDIR_REV="$1" + shift + elif [ "$(echo "$1" | grep -E '^([3-9][0-9]{3}?rc[0-9]-[0-9]$)')" != "" ]; then + # Handle the 3xxx.0 version as 3xxx archive (pin to minor) and strip the fake ".0" suffix + #ONEDIR_REV=$(echo "$1" | sed -E 's/^([3-9][0-9]{3})\.0$/\1/') + ONEDIR_REV="minor/$1" + shift + else + echo "Unknown stable version: $1 (valid: 3005, latest.)" exit 1 fi fi @@ -2969,6 +3023,48 @@ __install_saltstack_ubuntu_repository() { __wait_for_apt apt-get update || return 1 } +__install_saltstack_ubuntu_onedir_repository() { + # Workaround for latest non-LTS Ubuntu + if { [ "$DISTRO_MAJOR_VERSION" -eq 20 ] && [ "$DISTRO_MINOR_VERSION" -eq 10 ]; } || \ + [ "$DISTRO_MAJOR_VERSION" -eq 21 ]; then + echowarn "Non-LTS Ubuntu detected, but stable packages requested. Trying packages for previous LTS release. You may experience problems." + UBUNTU_VERSION=20.04 + UBUNTU_CODENAME="focal" + else + UBUNTU_VERSION=${DISTRO_VERSION} + UBUNTU_CODENAME=${DISTRO_CODENAME} + fi + + # Install downloader backend for GPG keys fetching + __PACKAGES='wget' + + # Required as it is not installed by default on Ubuntu 18+ + if [ "$DISTRO_MAJOR_VERSION" -ge 18 ]; then + __PACKAGES="${__PACKAGES} gnupg" + fi + + # Make sure https transport is available + if [ "$HTTP_VAL" = "https" ] ; then + __PACKAGES="${__PACKAGES} apt-transport-https ca-certificates" + fi + + # shellcheck disable=SC2086,SC2090 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + __PY_VERSION_REPO="apt" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + __PY_VERSION_REPO="py3" + fi + + # SaltStack's stable Ubuntu repository: + SALTSTACK_UBUNTU_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/ubuntu/${UBUNTU_VERSION}/${__REPO_ARCH}/${ONEDIR_REV}/" + echo "$__REPO_ARCH_DEB $SALTSTACK_UBUNTU_URL $UBUNTU_CODENAME main" > /etc/apt/sources.list.d/salt.list + + __apt_key_fetch "${SALTSTACK_UBUNTU_URL}salt-archive-keyring.gpg" || return 1 + + __wait_for_apt apt-get update || return 1 +} + install_ubuntu_deps() { if [ $_DISABLE_REPOS -eq $BS_FALSE ]; then # Install add-apt-repository @@ -3141,6 +3237,44 @@ install_ubuntu_git_deps() { return 0 } +install_ubuntu_onedir_deps() { + if [ "${_SLEEP}" -eq "${__DEFAULT_SLEEP}" ] && [ "$DISTRO_MAJOR_VERSION" -lt 16 ]; then + # The user did not pass a custom sleep value as an argument, let's increase the default value + echodebug "On Ubuntu systems we increase the default sleep value to 10." + echodebug "See https://github.com/saltstack/salt/issues/12248 for more info." + _SLEEP=10 + fi + + if [ $_START_DAEMONS -eq $BS_FALSE ]; then + echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." + fi + + # No user interaction, libc6 restart services for example + export DEBIAN_FRONTEND=noninteractive + + __wait_for_apt apt-get update || return 1 + + if [ "${_UPGRADE_SYS}" -eq $BS_TRUE ]; then + if [ "${_INSECURE_DL}" -eq $BS_TRUE ]; then + if [ "$DISTRO_MAJOR_VERSION" -ge 20 ] || [ "$DISTRO_MAJOR_VERSION" -ge 21 ]; then + __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && apt-get update || return 1 + else + __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && + apt-key update && apt-get update || return 1 + fi + fi + + __apt_get_upgrade_noinput || return 1 + fi + + if [ "$_DISABLE_REPOS" -eq "$BS_FALSE" ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then + __check_dpkg_architecture || return 1 + __install_saltstack_ubuntu_onedir_repository || return 1 + fi + + install_ubuntu_deps || return 1 +} + install_ubuntu_stable() { __PACKAGES="" @@ -3200,6 +3334,28 @@ install_ubuntu_git() { return 0 } +install_ubuntu_onedir() { + __PACKAGES="" + + if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then + __PACKAGES="${__PACKAGES} salt-cloud" + fi + if [ "$_INSTALL_MASTER" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-master" + fi + if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-minion" + fi + if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-syndic" + fi + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + return 0 +} + install_ubuntu_stable_post() { for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot @@ -3397,6 +3553,40 @@ __install_saltstack_debian_repository() { __wait_for_apt apt-get update || return 1 } +__install_saltstack_debian_onedir_repository() { + DEBIAN_RELEASE="$DISTRO_MAJOR_VERSION" + DEBIAN_CODENAME="$DISTRO_CODENAME" + + __PY_VERSION_REPO="apt" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + __PY_VERSION_REPO="py3" + fi + + # Install downloader backend for GPG keys fetching + __PACKAGES='wget' + + # Required as it is not installed by default on Debian 9+ + if [ "$DISTRO_MAJOR_VERSION" -ge 9 ]; then + __PACKAGES="${__PACKAGES} gnupg2" + fi + + # Make sure https transport is available + if [ "$HTTP_VAL" = "https" ] ; then + __PACKAGES="${__PACKAGES} apt-transport-https ca-certificates" + fi + + # shellcheck disable=SC2086,SC2090 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + # amd64 is just a part of repository URI, 32-bit pkgs are hosted under the same location + SALTSTACK_DEBIAN_URL="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/debian/${DEBIAN_RELEASE}/${__REPO_ARCH}/${ONEDIR_REV}/" + echo "$__REPO_ARCH_DEB $SALTSTACK_DEBIAN_URL $DEBIAN_CODENAME main" > "/etc/apt/sources.list.d/salt.list" + + __apt_key_fetch "${SALTSTACK_DEBIAN_URL}salt-archive-keyring.gpg" || return 1 + + __wait_for_apt apt-get update || return 1 +} + install_debian_deps() { if [ $_START_DAEMONS -eq $BS_FALSE ]; then echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." @@ -3450,6 +3640,59 @@ install_debian_deps() { return 0 } +install_debian_onedir_deps() { + if [ $_START_DAEMONS -eq $BS_FALSE ]; then + echowarn "Not starting daemons on Debian based distributions is not working mostly because starting them is the default behaviour." + fi + + # No user interaction, libc6 restart services for example + export DEBIAN_FRONTEND=noninteractive + + __wait_for_apt apt-get update || return 1 + + if [ "${_UPGRADE_SYS}" -eq $BS_TRUE ]; then + # Try to update GPG keys first if allowed + if [ "${_INSECURE_DL}" -eq $BS_TRUE ]; then + if [ "$DISTRO_MAJOR_VERSION" -ge 10 ]; then + __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && apt-get update || return 1 + else + __apt_get_install_noinput --allow-unauthenticated debian-archive-keyring && + apt-key update && apt-get update || return 1 + fi + fi + + __apt_get_upgrade_noinput || return 1 + fi + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + PY_PKG_VER=3 + else + PY_PKG_VER="" + fi + + # Additionally install procps and pciutils which allows for Docker bootstraps. See 366#issuecomment-39666813 + __PACKAGES='procps pciutils' + + # YAML module is used for generating custom master/minion configs + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-yaml" + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + if [ "$_DISABLE_REPOS" -eq "$BS_FALSE" ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then + __check_dpkg_architecture || return 1 + __install_saltstack_debian_onedir_repository || return 1 + fi + + if [ "${_EXTRA_PACKAGES}" != "" ]; then + echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" + # shellcheck disable=SC2086 + __apt_get_install_noinput ${_EXTRA_PACKAGES} || return 1 + fi + + return 0 +} + install_debian_git_pre() { if ! __check_command_exists git; then __apt_get_install_noinput git || return 1 @@ -3726,6 +3969,28 @@ install_debian_9_git() { return 0 } +install_debian_onedir() { + __PACKAGES="" + + if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then + __PACKAGES="${__PACKAGES} salt-cloud" + fi + if [ "$_INSTALL_MASTER" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-master" + fi + if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-minion" + fi + if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-syndic" + fi + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + return 0 +} + install_debian_git_post() { for fname in api master minion syndic; do # Skip if not meant to be installed @@ -4117,9 +4382,13 @@ __install_epel_repository() { return 0 fi + # Download latest 'epel-next-release' package for the distro version directly + epel_next_repo_url="${HTTP_VAL}://dl.fedoraproject.org/pub/epel/epel-next-release-latest-${DISTRO_MAJOR_VERSION}.noarch.rpm" + # Download latest 'epel-release' package for the distro version directly epel_repo_url="${HTTP_VAL}://dl.fedoraproject.org/pub/epel/epel-release-latest-${DISTRO_MAJOR_VERSION}.noarch.rpm" - rpm -Uvh --force "$epel_repo_url" || return 1 + + yum -y install "${epel_next_repo_url}" "${epel_repo_url}" _EPEL_REPOS_INSTALLED=$BS_TRUE @@ -4143,6 +4412,8 @@ __install_saltstack_rhel_repository() { base_url="${HTTP_VAL}://${_REPO_URL}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/${repo_rev}/" if [ "${DISTRO_MAJOR_VERSION}" -eq 7 ]; then gpg_key="SALTSTACK-GPG-KEY.pub base/RPM-GPG-KEY-CentOS-7" + elif [ "${DISTRO_MAJOR_VERSION}" -ge 9 ]; then + gpg_key="SALTSTACK-GPG-KEY2.pub" else gpg_key="SALTSTACK-GPG-KEY.pub" fi @@ -4180,6 +4451,60 @@ _eof return 0 } +__install_saltstack_rhel_onedir_repository() { + if [ "$ITYPE" = "stable" ]; then + repo_rev="$ONEDIR_REV" + else + repo_rev="latest" + fi + + __PY_VERSION_REPO="yum" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + __PY_VERSION_REPO="py3" + fi + + # Avoid using '$releasever' variable for yum. + # Instead, this should work correctly on all RHEL variants. + base_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/${ONEDIR_REV}/" + if [ "${DISTRO_MAJOR_VERSION}" -eq 9 ]; then + gpg_key="SALTSTACK-GPG-KEY2.pub" + else + gpg_key="SALTSTACK-GPG-KEY.pub" + fi + + gpg_key_urls="" + for key in $gpg_key; do + gpg_key_urls=$(printf "${base_url}${key},%s" "$gpg_key_urls") + done + + repo_file="/etc/yum.repos.d/salt.repo" + + if [ ! -s "$repo_file" ] || [ "$_FORCE_OVERWRITE" -eq $BS_TRUE ]; then + cat <<_eof > "$repo_file" +[saltstack] +name=SaltStack ${repo_rev} Release Channel for RHEL/CentOS \$releasever +baseurl=${base_url} +skip_if_unavailable=True +gpgcheck=1 +gpgkey=${gpg_key_urls} +enabled=1 +enabled_metadata=1 +_eof + + fetch_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/${CPU_ARCH_L}/" + for key in $gpg_key; do + __rpm_import_gpg "${fetch_url}${key}" || return 1 + done + + yum clean metadata || return 1 + elif [ "$repo_rev" != "latest" ]; then + echowarn "salt.repo already exists, ignoring salt version argument." + echowarn "Use -F (forced overwrite) to install $repo_rev." + fi + + return 0 +} + install_centos_stable_deps() { if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then yum -y update || return 1 @@ -4484,6 +4809,101 @@ install_centos_git_post() { return 0 } +install_centos_onedir_deps() { + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + yum -y update || return 1 + fi + + if [ "$_DISABLE_REPOS" -eq "$BS_TRUE" ] && [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + echowarn "Detected -r or -R option while installing Salt packages for Python 3." + echowarn "Python 3 packages for older Salt releases requires the EPEL repository to be installed." + echowarn "Installing the EPEL repository automatically is disabled when using the -r or -R options." + fi + + if [ "$_DISABLE_REPOS" -eq "$BS_FALSE" ]; then + __install_epel_repository || return 1 + __install_saltstack_rhel_onedir_repository || return 1 + fi + + # If -R was passed, we need to configure custom repo url with rsync-ed packages + # Which is still handled in __install_saltstack_rhel_repository. This call has + # its own check in case -r was passed without -R. + if [ "$_CUSTOM_REPO_URL" != "null" ]; then + __install_saltstack_rhel_onedir_repository || return 1 + fi + + if [ "$DISTRO_MAJOR_VERSION" -ge 8 ]; then + __PACKAGES="dnf-utils chkconfig" + else + __PACKAGES="yum-utils chkconfig" + fi + + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 + + if [ "${_EXTRA_PACKAGES}" != "" ]; then + echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" + # shellcheck disable=SC2086 + __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 + fi + + + return 0 +} + +install_centos_onedir() { + __PACKAGES="" + + if [ "$_INSTALL_CLOUD" -eq $BS_TRUE ];then + __PACKAGES="${__PACKAGES} salt-cloud" + fi + if [ "$_INSTALL_MASTER" -eq $BS_TRUE ];then + __PACKAGES="${__PACKAGES} salt-master" + fi + if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-minion" + fi + if [ "$_INSTALL_SYNDIC" -eq $BS_TRUE ];then + __PACKAGES="${__PACKAGES} salt-syndic" + fi + + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 + + return 0 +} + +install_centos_onedir_post() { + SYSTEMD_RELOAD=$BS_FALSE + + for fname in api master minion syndic; do + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + # Skip if not meant to be installed + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + if [ -f /bin/systemctl ]; then + /bin/systemctl is-enabled salt-${fname}.service > /dev/null 2>&1 || ( + /bin/systemctl preset salt-${fname}.service > /dev/null 2>&1 && + /bin/systemctl enable salt-${fname}.service > /dev/null 2>&1 + ) + + SYSTEMD_RELOAD=$BS_TRUE + elif [ -f "/etc/init.d/salt-${fname}" ]; then + /sbin/chkconfig salt-${fname} on + fi + done + + if [ "$SYSTEMD_RELOAD" -eq $BS_TRUE ]; then + /bin/systemctl daemon-reload + fi + + return 0 +} + install_centos_restart_daemons() { [ $_START_DAEMONS -eq $BS_FALSE ] && return @@ -4583,6 +5003,11 @@ install_red_hat_linux_git_deps() { return 0 } +install_red_hat_linux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_red_hat_enterprise_stable_deps() { install_red_hat_linux_stable_deps || return 1 return 0 @@ -4593,6 +5018,11 @@ install_red_hat_enterprise_git_deps() { return 0 } +install_red_hat_enterprise_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 + return 0 +} + install_red_hat_enterprise_linux_stable_deps() { install_red_hat_linux_stable_deps || return 1 return 0 @@ -4603,6 +5033,11 @@ install_red_hat_enterprise_linux_git_deps() { return 0 } +install_red_hat_enterprise_linux_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 + return 0 +} + install_red_hat_enterprise_server_stable_deps() { install_red_hat_linux_stable_deps || return 1 return 0 @@ -4613,6 +5048,11 @@ install_red_hat_enterprise_server_git_deps() { return 0 } +install_red_hat_enterprise_server_onedir_deps() { + install_red_hat_linux_onedir_deps || return 1 + return 0 +} + install_red_hat_enterprise_workstation_stable_deps() { install_red_hat_linux_stable_deps || return 1 return 0 @@ -4623,6 +5063,11 @@ install_red_hat_enterprise_workstation_git_deps() { return 0 } +install_red_hat_enterprise_workstation_onedir_deps() { + install_red_hat_linux_timat_deps || return 1 + return 0 +} + install_red_hat_linux_stable() { install_centos_stable || return 1 return 0 @@ -4633,6 +5078,11 @@ install_red_hat_linux_git() { return 0 } +install_red_hat_linux_onedir() { + install_centos_onedir || return 1 + return 0 +} + install_red_hat_enterprise_stable() { install_red_hat_linux_stable || return 1 return 0 @@ -4643,6 +5093,11 @@ install_red_hat_enterprise_git() { return 0 } +install_red_hat_enterprise_onedir() { + install_red_hat_linux_onedir || return 1 + return 0 +} + install_red_hat_enterprise_linux_stable() { install_red_hat_linux_stable || return 1 return 0 @@ -4653,6 +5108,11 @@ install_red_hat_enterprise_linux_git() { return 0 } +install_red_hat_enterprise_linux_onedir() { + install_red_hat_linux_onedir || return 1 + return 0 +} + install_red_hat_enterprise_server_stable() { install_red_hat_linux_stable || return 1 return 0 @@ -4663,6 +5123,11 @@ install_red_hat_enterprise_server_git() { return 0 } +install_red_hat_enterprise_server_onedir() { + install_red_hat_linux_onedir || return 1 + return 0 +} + install_red_hat_enterprise_workstation_stable() { install_red_hat_linux_stable || return 1 return 0 @@ -4673,6 +5138,11 @@ install_red_hat_enterprise_workstation_git() { return 0 } +install_red_hat_enterprise_workstation_onedir() { + install_red_hat_linux_onedir || return 1 + return 0 +} + install_red_hat_linux_stable_post() { install_centos_stable_post || return 1 return 0 @@ -4826,6 +5296,11 @@ install_oracle_linux_git_deps() { return 0 } +install_oracle_linux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_oracle_linux_testing_deps() { install_centos_testing_deps || return 1 return 0 @@ -4841,6 +5316,11 @@ install_oracle_linux_git() { return 0 } +install_oracle_linux_onedir() { + install_centos_onedir || return 1 + return 0 +} + install_oracle_linux_testing() { install_centos_testing || return 1 return 0 @@ -4889,6 +5369,11 @@ install_almalinux_git_deps() { return 0 } +install_almalinux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_almalinux_testing_deps() { install_centos_testing_deps || return 1 return 0 @@ -4904,6 +5389,11 @@ install_almalinux_git() { return 0 } +install_almalinux_onedir() { + install_centos_onedir || return 1 + return 0 +} + install_almalinux_testing() { install_centos_testing || return 1 return 0 @@ -4952,6 +5442,11 @@ install_rocky_linux_git_deps() { return 0 } +install_rocky_linux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_rocky_linux_testing_deps() { install_centos_testing_deps || return 1 return 0 @@ -4962,6 +5457,11 @@ install_rocky_linux_stable() { return 0 } +install_rocky_linux_onedir() { + install_centos_onedir || return 1 + return 0 +} + install_rocky_linux_git() { install_centos_git || return 1 return 0 @@ -5015,6 +5515,11 @@ install_scientific_linux_git_deps() { return 0 } +install_scientific_linux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_scientific_linux_testing_deps() { install_centos_testing_deps || return 1 return 0 @@ -5030,6 +5535,11 @@ install_scientific_linux_git() { return 0 } +install_scientific_linux_onedir() { + install_centos_onedir || return 1 + return 0 +} + install_scientific_linux_testing() { install_centos_testing || return 1 return 0 @@ -5078,6 +5588,11 @@ install_cloud_linux_git_deps() { return 0 } +install_cloud_linux_onedir_deps() { + install_centos_onedir_deps || return 1 + return 0 +} + install_cloud_linux_testing_deps() { install_centos_testing_deps || return 1 return 0 @@ -5642,6 +6157,92 @@ _eof fi } +install_amazon_linux_ami_2_onedir_deps() { + # Shim to figure out if we're using old (rhel) or new (aws) rpms. + _USEAWS=$BS_FALSE + pkg_append="python" + + if [ "$ITYPE" = "onedir" ]; then + repo_rev="$ONEDIR_REV" + else + repo_rev="latest" + fi + + if echo $repo_rev | grep -E -q '^archive'; then + year=$(echo "$repo_rev" | cut -d '/' -f 2 | cut -c1-4) + else + year=$(echo "$repo_rev" | cut -c1-4) + fi + + # We need to install yum-utils before doing anything else when installing on + # Amazon Linux ECS-optimized images. See issue #974. + __yum_install_noinput yum-utils + + # Do upgrade early + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + yum -y update || return 1 + fi + + if [ $_DISABLE_REPOS -eq $BS_FALSE ] || [ "$_CUSTOM_REPO_URL" != "null" ]; then + __REPO_FILENAME="salt.repo" + __PY_VERSION_REPO="yum" + PY_PKG_VER="" + repo_label="saltstack-repo" + repo_name="SaltStack repo for Amazon Linux 2" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + __REPO_FILENAME="salt.repo" + __PY_VERSION_REPO="py3" + PY_PKG_VER=3 + repo_label="saltstack-py3-repo" + repo_name="SaltStack Python 3 repo for Amazon Linux 2" + fi + + base_url="$HTTP_VAL://${_REPO_URL}/${_ONEDIR_DIR}/${__PY_VERSION_REPO}/amazon/2/\$basearch/$repo_rev/" + gpg_key="${base_url}SALTSTACK-GPG-KEY.pub,${base_url}base/RPM-GPG-KEY-CentOS-7" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then + gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" + fi + + # This should prob be refactored to use __install_saltstack_rhel_repository() + # With args passed in to do the right thing. Reformatted to be more like the + # amazon linux yum file. + if [ ! -s "/etc/yum.repos.d/${__REPO_FILENAME}" ]; then + cat <<_eof > "/etc/yum.repos.d/${__REPO_FILENAME}" +[$repo_label] +name=$repo_name +failovermethod=priority +priority=10 +gpgcheck=1 +gpgkey=$gpg_key +baseurl=$base_url +_eof + fi + + fi + + if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then + # Package python-ordereddict-1.1-2.el6.noarch is obsoleted by python26-2.6.9-2.88.amzn1.x86_64 + # which is already installed + if [ -n "${PY_PKG_VER}" ] && [ "${PY_PKG_VER}" -eq 3 ]; then + __PACKAGES="${pkg_append}${PY_PKG_VER}-m2crypto ${pkg_append}${PY_PKG_VER}-pyyaml" + else + __PACKAGES="m2crypto PyYAML ${pkg_append}-futures" + fi + + __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-crypto ${pkg_append}${PY_PKG_VER}-jinja2 procps-ng" + __PACKAGES="${__PACKAGES} ${pkg_append}${PY_PKG_VER}-msgpack ${pkg_append}${PY_PKG_VER}-requests ${pkg_append}${PY_PKG_VER}-zmq" + + # shellcheck disable=SC2086 + __yum_install_noinput ${__PACKAGES} || return 1 + fi + + if [ "${_EXTRA_PACKAGES}" != "" ]; then + echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" + # shellcheck disable=SC2086 + __yum_install_noinput ${_EXTRA_PACKAGES} || return 1 + fi +} + install_amazon_linux_ami_stable() { install_centos_stable || return 1 return 0 @@ -5717,6 +6318,16 @@ install_amazon_linux_ami_2_check_services() { return 0 } +install_amazon_linux_ami_2_onedir() { + install_centos_stable || return 1 + return 0 +} + +install_amazon_linux_ami_2_onedir_post() { + install_centos_stable_post || return 1 + return 0 +} + # # Ended Amazon Linux AMI Install Functions # @@ -5983,15 +6594,15 @@ install_freebsd_git_deps() { if [ "${_POST_NEON_INSTALL}" -eq $BS_FALSE ]; then - SALT_DEPENDENCIES=$(/usr/local/sbin/pkg rquery %dn py38-salt) + SALT_DEPENDENCIES=$(/usr/local/sbin/pkg rquery %dn py39-salt) # shellcheck disable=SC2086 /usr/local/sbin/pkg install -y ${SALT_DEPENDENCIES} python || return 1 - /usr/local/sbin/pkg install -y py38-requests || return 1 - /usr/local/sbin/pkg install -y py38-tornado4 || return 1 + /usr/local/sbin/pkg install -y py39-requests || return 1 + /usr/local/sbin/pkg install -y py39-tornado4 || return 1 else - /usr/local/sbin/pkg install -y python py38-pip py38-setuptools libzmq4 libunwind || return 1 + /usr/local/sbin/pkg install -y python py39-pip py39-setuptools libzmq4 libunwind || return 1 fi echodebug "Adapting paths to FreeBSD" @@ -6037,7 +6648,7 @@ install_freebsd_stable() { # installing latest version of salt from FreeBSD CURRENT ports repo # # shellcheck disable=SC2086 - /usr/local/sbin/pkg install -y py38-salt || return 1 + /usr/local/sbin/pkg install -y py39-salt || return 1 return 0 } @@ -6463,6 +7074,8 @@ __set_suse_pkg_repo() { # Set distro repo variable if [ "${DISTRO_MAJOR_VERSION}" -gt 2015 ]; then DISTRO_REPO="openSUSE_Tumbleweed" + elif [ "${DISTRO_MAJOR_VERSION}" -eq 15 ] && [ "${DISTRO_MINOR_VERSION}" -ge 4 ]; then + DISTRO_REPO="${DISTRO_MAJOR_VERSION}.${DISTRO_MINOR_VERSION}" elif [ "${DISTRO_MAJOR_VERSION}" -ge 42 ] || [ "${DISTRO_MAJOR_VERSION}" -eq 15 ]; then DISTRO_REPO="openSUSE_Leap_${DISTRO_MAJOR_VERSION}.${DISTRO_MINOR_VERSION}" else @@ -6612,7 +7225,7 @@ install_opensuse_git_deps() { fi # Check for Tumbleweed elif [ "${DISTRO_MAJOR_VERSION}" -ge 20210101 ]; then - __PACKAGES="python3-pip" + __PACKAGES="python3-pip gcc-c++ python310-pyzmq-devel" else __PACKAGES="python-pip python-setuptools gcc" fi @@ -7916,6 +8529,39 @@ preseed_master() { # ####################################################################################################################### +####################################################################################################################### +# +# This function checks if all of the installed daemons are running or not. +# +daemons_running_onedir() { + [ "$_START_DAEMONS" -eq $BS_FALSE ] && return 0 + + FAILED_DAEMONS=0 + for fname in api master minion syndic; do + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + # Skip if not meant to be installed + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + salt_path="/opt/saltstack/salt/run/run ${fname}" + process_running=$(pgrep -f "${salt_path}") + if [ "${process_running}" = "" ]; then + echoerror "${salt_path} was not found running" + FAILED_DAEMONS=$((FAILED_DAEMONS + 1)) + fi + done + + return $FAILED_DAEMONS +} + +# +# Ended daemons running check function +# +####################################################################################################################### + ####################################################################################################################### # # This function checks if all of the installed daemons are running or not. @@ -8016,6 +8662,7 @@ echodebug "PRESEED_MASTER_FUNC=${PRESEED_MASTER_FUNC}" INSTALL_FUNC_NAMES="install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}_${ITYPE}" INSTALL_FUNC_NAMES="$INSTALL_FUNC_NAMES install_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}_${ITYPE}" INSTALL_FUNC_NAMES="$INSTALL_FUNC_NAMES install_${DISTRO_NAME_L}_${ITYPE}" +echodebug "INSTALL_FUNC_NAMES=${INSTALL_FUNC_NAMES}" INSTALL_FUNC="null" for FUNC_NAME in $(__strip_duplicates "$INSTALL_FUNC_NAMES"); do @@ -8067,6 +8714,7 @@ DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running_${DISTRO DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running_${DISTRO_NAME_L}${PREFIXED_DISTRO_MAJOR_VERSION}${PREFIXED_DISTRO_MINOR_VERSION}" DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running_${DISTRO_NAME_L}_${ITYPE}" DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running_${DISTRO_NAME_L}" +DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running_${ITYPE}" DAEMONS_RUNNING_FUNC_NAMES="$DAEMONS_RUNNING_FUNC_NAMES daemons_running" DAEMONS_RUNNING_FUNC="null" diff --git a/kitchen.vagrant.yml b/kitchen.bsd.yml similarity index 96% rename from kitchen.vagrant.yml rename to kitchen.bsd.yml index 1674a22..cd36e71 100644 --- a/kitchen.vagrant.yml +++ b/kitchen.bsd.yml @@ -27,9 +27,9 @@ provisioner: sudo: true platforms: - - name: freebsd-130 + - name: freebsd-131 driver: - box: bento/freebsd-13.0 + box: bento/freebsd-13.1 - name: freebsd-123 driver: box: bento/freebsd-12.3 diff --git a/kitchen.macos.yml b/kitchen.macos.yml index 1d89edb..dea3c21 100644 --- a/kitchen.macos.yml +++ b/kitchen.macos.yml @@ -19,6 +19,7 @@ platforms: - name: macos-1015 suites: +<<<<<<< HEAD - name: py3-stable-3002 provisioner: salt_version: 3002.8 @@ -26,6 +27,12 @@ suites: provisioner: salt_version: 3003.4 - name: py3-stable-3004 +======= + - name: stable-3003 + provisioner: + salt_version: 3003.4 + - name: stable-3004 +>>>>>>> origin/develop provisioner: salt_version: 3004.1 - name: latest diff --git a/kitchen.windows.yml b/kitchen.windows.yml index 0c5b882..e54b7f6 100644 --- a/kitchen.windows.yml +++ b/kitchen.windows.yml @@ -17,13 +17,10 @@ platforms: - name: windows-2019 suites: - - name: py3-stable-3002 - provisioner: - salt_version: 3002.8-1 - - name: py3-stable-3003 + - name: stable-3003 provisioner: salt_version: 3003.4-1 - - name: py3-stable-3004 + - name: stable-3004 provisioner: salt_version: 3004.1-1 - name: latest diff --git a/kitchen.yml b/kitchen.yml index 1196a7e..d449f8d 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -57,14 +57,11 @@ platforms: driver: image: debian:bullseye run_command: /lib/systemd/systemd - - name: fedora-34 + - name: fedora-35 driver: provision_command: &fedora_provision_command - dnf -y install procps-ng crypto-policies-scripts - update-crypto-policies --set LEGACY - - name: fedora-35 - driver: - provision_command: *fedora_provision_command - name: fedora-36 driver: provision_command: *fedora_provision_command @@ -84,7 +81,7 @@ platforms: - echo "PubkeyAcceptedAlgorithms +ssh-rsa" | tee -a /etc/ssh/sshd_config - name: opensuse-15 driver: - image: opensuse/leap:15.3 + image: opensuse/leap:15.4 provision_command: - &opensuse_provision_command_01 zypper --non-interactive install --auto-agree-with-licenses dbus-1 - &opensuse_provision_command_02 zypper --non-interactive install --auto-agree-with-licenses sudo openssh which curl systemd @@ -116,22 +113,14 @@ platforms: run_command: /lib/systemd/systemd suites: - - name: py3-git-3002 - provisioner: - salt_version: 3002 - salt_bootstrap_options: -x python3 -MPfq git %s - - name: py3-git-3003 + - name: git-3003 provisioner: salt_version: 3003 salt_bootstrap_options: -x python3 -MPfq git %s - - name: py3-git-3004 + - name: git-3004 provisioner: salt_version: 3004 salt_bootstrap_options: -x python3 -MPfq git %s - - name: py3-stable-3002-0 - provisioner: - salt_version: 3002 - salt_bootstrap_options: -x python3 -MP stable 3002.0 excludes: - opensuse-15 - opensuse-tumbleweed @@ -139,10 +128,10 @@ suites: - arch - gentoo - gentoo-systemd - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-stable-3003-0 + - name: stable-3003-0 provisioner: salt_version: 3003 salt_bootstrap_options: -x python3 -MP stable 3003.0 @@ -152,21 +141,17 @@ suites: - arch - gentoo - gentoo-systemd - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-stable-3002 - provisioner: - salt_version: 3002 - salt_bootstrap_options: -x python3 -MP stable %s excludes: - opensuse-15 - opensuse-tumbleweed - arch - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-stable-3003 + - name: stable-3003 provisioner: salt_version: 3003 salt_bootstrap_options: -x python3 -MP stable %s @@ -174,10 +159,10 @@ suites: - opensuse-15 - opensuse-tumbleweed - arch - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-stable-3004-0 + - name: stable-3004-0 provisioner: salt_version: 3004 salt_bootstrap_options: -x python3 -MP stable 3004.0 @@ -187,10 +172,10 @@ suites: - arch - gentoo - gentoo-systemd - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-stable-3004 + - name: stable-3004 provisioner: salt_version: 3004 salt_bootstrap_options: -x python3 -MP stable %s @@ -198,10 +183,10 @@ suites: - opensuse-15 - opensuse-tumbleweed - arch - - freebsd-130 + - freebsd-131 - freebsd-123 - openbsd-6 - - name: py3-git-master + - name: git-master provisioner: salt_version: master salt_bootstrap_options: -x python3 -MPfq -D git %s diff --git a/tests/conftest.py b/tests/conftest.py index 6c47deb..5e9429d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,7 +9,10 @@ log = logging.getLogger(__name__) @pytest.fixture(scope="session") def host(): - if os.environ.get("RUNNER_OS", "") == "macOS": + if ( + os.environ.get("RUNNER_OS", "") == "macOS" + and os.environ.get("KITCHEN_LOCAL_YAML", "") == "kitchen.macos.yml" + ): # Adjust the `PATH` so that the `salt-call` executable can be found os.environ["PATH"] = "/opt/salt/bin{}{}".format(os.pathsep, os.environ["PATH"]) return testinfra.get_host("local://", sudo=True) @@ -37,12 +40,7 @@ def host(): @pytest.fixture(scope="session") def target_python_version(): - target_python = os.environ["KITCHEN_SUITE"].split("-", 1)[0] - if target_python == "latest": - pytest.skip( - "Unable to get target python from {}".format(os.environ["KITCHEN_SUITE"]) - ) - return int(target_python.replace("py", "")) + return 3 @pytest.fixture(scope="session") diff --git a/tests/integration/test_installation.py b/tests/integration/test_installation.py index 30bc087..aacc7de 100644 --- a/tests/integration/test_installation.py +++ b/tests/integration/test_installation.py @@ -1,9 +1,6 @@ # -*- coding: utf-8 -*- -import json import os -import pytest import logging -import pprint from contextlib import nullcontext log = logging.getLogger(__name__)