ctop (#139)
rolle einzeln submodule entfernt Co-authored-by: Michael Grote <michael.grote@posteo.de> Reviewed-on: mg/ansible#139 Co-Authored-By: mg <mg@noreply.git.mgrote.net> Co-Committed-By: mg <mg@noreply.git.mgrote.net>
This commit is contained in:
parent
a0b88b4aee
commit
ec33333916
42 changed files with 2189 additions and 1 deletions
|
@ -1 +0,0 @@
|
||||||
Subproject commit 92f20ce81c42388295bd62afc0e3d04ab398e3c0
|
|
27
roles/gantsign.ctop/.editorconfig
Normal file
27
roles/gantsign.ctop/.editorconfig
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# EditorConfig: http://EditorConfig.org
|
||||||
|
|
||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# Defaults for all editor files
|
||||||
|
[*]
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
# YAML is fussy about indenting and charset
|
||||||
|
[*.yml]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
continuation_indent_size = unset
|
||||||
|
charset = utf-8
|
||||||
|
|
||||||
|
# Markdown is fussy about indenting
|
||||||
|
[*.md]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
# Jinja2 template files
|
||||||
|
[*.j2]
|
||||||
|
end_of_line = lf
|
47
roles/gantsign.ctop/.gitattributes
vendored
Normal file
47
roles/gantsign.ctop/.gitattributes
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Explicitly declare text files you want to always be normalized and converted
|
||||||
|
# to native line endings on checkout.
|
||||||
|
LICENSE text
|
||||||
|
.editorconfig text
|
||||||
|
.gitattributes text
|
||||||
|
.gitignore text
|
||||||
|
.yamllint text
|
||||||
|
*.cfg text
|
||||||
|
*.css text
|
||||||
|
*.htm text
|
||||||
|
*.html text
|
||||||
|
*.js text
|
||||||
|
*.json text
|
||||||
|
*.less text
|
||||||
|
*.md text
|
||||||
|
*.py text
|
||||||
|
*.scss text
|
||||||
|
*.ts text
|
||||||
|
*.txt text
|
||||||
|
*.xhtml text
|
||||||
|
*.xml text
|
||||||
|
*.yaml text
|
||||||
|
*.yml text
|
||||||
|
|
||||||
|
# Declare files that will always have CRLF line endings on checkout.
|
||||||
|
*.bat text eol=crlf
|
||||||
|
*.cmd text eol=crlf
|
||||||
|
|
||||||
|
# Declare files that will always have LF line endings on checkout.
|
||||||
|
*.conf eol=lf
|
||||||
|
*.desktop eol=lf
|
||||||
|
*.j2 eol=lf
|
||||||
|
*.service eol=lf
|
||||||
|
*.sh text eol=lf
|
||||||
|
|
||||||
|
# Denote all files that are truly binary and should not be modified.
|
||||||
|
*.eot binary
|
||||||
|
*.gif binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.jpg binary
|
||||||
|
*.png binary
|
||||||
|
*.tff binary
|
||||||
|
*.woff binary
|
81
roles/gantsign.ctop/.github/workflows/ci.yml
vendored
Normal file
81
roles/gantsign.ctop/.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
MOLECULEW_USE_SYSTEM: 'true'
|
||||||
|
PY_COLORS: '1'
|
||||||
|
ANSIBLE_FORCE_COLOR: '1'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: Molecule test
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
ansible-version:
|
||||||
|
- '2.9.1'
|
||||||
|
molecule-scenario:
|
||||||
|
- centos
|
||||||
|
- debian_max
|
||||||
|
- debian_min
|
||||||
|
- ubuntu_max
|
||||||
|
- opensuse
|
||||||
|
- fedora
|
||||||
|
include:
|
||||||
|
- ansible-version: '2.8.16'
|
||||||
|
molecule-scenario: ubuntu_min
|
||||||
|
|
||||||
|
env:
|
||||||
|
MOLECULEW_ANSIBLE: ${{ matrix.ansible-version }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.6'
|
||||||
|
|
||||||
|
- name: Cache Molecule
|
||||||
|
id: molecule-cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.moleculew
|
||||||
|
key: Ansible-${{ matrix.ansible-version }}-${{ hashFiles('.moleculew/**') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
if: steps.molecule-cache.outputs.cache-hit != 'true'
|
||||||
|
run: ./moleculew wrapper-install
|
||||||
|
|
||||||
|
- name: Dependency versions
|
||||||
|
run: ./moleculew wrapper-versions
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
if: '!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository'
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Molecule test
|
||||||
|
run: ./moleculew test --scenario-name=${{ matrix.molecule-scenario }}
|
||||||
|
|
||||||
|
- name: Compact cache
|
||||||
|
if: steps.molecule-cache.outputs.cache-hit != 'true'
|
||||||
|
run: find ~/.moleculew -name '__pycache__' -exec rm -rf {} +
|
||||||
|
|
||||||
|
test-all:
|
||||||
|
if: ${{ always() }}
|
||||||
|
name: Test (matrix)
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
needs: test
|
||||||
|
steps:
|
||||||
|
- name: Check test matrix status
|
||||||
|
run: "[[ '${{ needs.test.result }}' == 'success' ]] || exit 1"
|
29
roles/gantsign.ctop/.github/workflows/release.yml
vendored
Normal file
29
roles/gantsign.ctop/.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
name: Release
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.6'
|
||||||
|
|
||||||
|
- name: Install Ansible
|
||||||
|
run: pip3 install --no-compile ansible-base
|
||||||
|
|
||||||
|
- name: Trigger a new import on Galaxy
|
||||||
|
run: >-
|
||||||
|
ansible-galaxy role import
|
||||||
|
--api-key ${{ secrets.GALAXY_API_KEY }}
|
||||||
|
${GITHUB_REPOSITORY%%/*} ${GITHUB_REPOSITORY#*/}
|
297
roles/gantsign.ctop/.gitignore
vendored
Normal file
297
roles/gantsign.ctop/.gitignore
vendored
Normal file
|
@ -0,0 +1,297 @@
|
||||||
|
# Created by https://www.gitignore.io/api/windows,linux,osx,vim,emacs,intellij,eclipse,visualstudiocode,ansible
|
||||||
|
|
||||||
|
### Ansible ###
|
||||||
|
*.retry
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
|
||||||
|
.metadata
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
.recommenders
|
||||||
|
|
||||||
|
# External tool builders
|
||||||
|
.externalToolBuilders/
|
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations"
|
||||||
|
*.launch
|
||||||
|
|
||||||
|
# PyDev specific (Python IDE for Eclipse)
|
||||||
|
*.pydevproject
|
||||||
|
|
||||||
|
# CDT-specific (C/C++ Development Tooling)
|
||||||
|
.cproject
|
||||||
|
|
||||||
|
# CDT- autotools
|
||||||
|
.autotools
|
||||||
|
|
||||||
|
# Java annotation processor (APT)
|
||||||
|
.factorypath
|
||||||
|
|
||||||
|
# PDT-specific (PHP Development Tools)
|
||||||
|
.buildpath
|
||||||
|
|
||||||
|
# sbteclipse plugin
|
||||||
|
.target
|
||||||
|
|
||||||
|
# Tern plugin
|
||||||
|
.tern-project
|
||||||
|
|
||||||
|
# TeXlipse plugin
|
||||||
|
.texlipse
|
||||||
|
|
||||||
|
# STS (Spring Tool Suite)
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
# Code Recommenders
|
||||||
|
.recommenders/
|
||||||
|
|
||||||
|
# Annotation Processing
|
||||||
|
.apt_generated/
|
||||||
|
|
||||||
|
# Scala IDE specific (Scala & Java development for Eclipse)
|
||||||
|
.cache-main
|
||||||
|
.scala_dependencies
|
||||||
|
.worksheet
|
||||||
|
|
||||||
|
### Eclipse Patch ###
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
||||||
|
|
||||||
|
# Annotation Processing
|
||||||
|
.apt_generated
|
||||||
|
|
||||||
|
### Emacs ###
|
||||||
|
# -*- mode: gitignore; -*-
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
/.emacs.desktop
|
||||||
|
/.emacs.desktop.lock
|
||||||
|
*.elc
|
||||||
|
auto-save-list
|
||||||
|
tramp
|
||||||
|
.\#*
|
||||||
|
|
||||||
|
# Org-mode
|
||||||
|
.org-id-locations
|
||||||
|
*_archive
|
||||||
|
|
||||||
|
# flymake-mode
|
||||||
|
*_flymake.*
|
||||||
|
|
||||||
|
# eshell files
|
||||||
|
/eshell/history
|
||||||
|
/eshell/lastdir
|
||||||
|
|
||||||
|
# elpa packages
|
||||||
|
/elpa/
|
||||||
|
|
||||||
|
# reftex files
|
||||||
|
*.rel
|
||||||
|
|
||||||
|
# AUCTeX auto folder
|
||||||
|
/auto/
|
||||||
|
|
||||||
|
# cask packages
|
||||||
|
.cask/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# Flycheck
|
||||||
|
flycheck_*.el
|
||||||
|
|
||||||
|
# server auth directory
|
||||||
|
/server/
|
||||||
|
|
||||||
|
# projectiles files
|
||||||
|
.projectile
|
||||||
|
|
||||||
|
# directory configuration
|
||||||
|
.dir-locals.el
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
# *.iml
|
||||||
|
# modules.xml
|
||||||
|
# .idea/misc.xml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# Sonarlint plugin
|
||||||
|
.idea/sonarlint
|
||||||
|
|
||||||
|
### Linux ###
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed
|
||||||
|
.nfs*
|
||||||
|
|
||||||
|
### OSX ###
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
### Vim ###
|
||||||
|
# Swap
|
||||||
|
[._]*.s[a-v][a-z]
|
||||||
|
[._]*.sw[a-p]
|
||||||
|
[._]s[a-rt-v][a-z]
|
||||||
|
[._]ss[a-gi-z]
|
||||||
|
[._]sw[a-p]
|
||||||
|
|
||||||
|
# Session
|
||||||
|
Session.vim
|
||||||
|
|
||||||
|
# Temporary
|
||||||
|
.netrwhist
|
||||||
|
# Auto-generated tag files
|
||||||
|
tags
|
||||||
|
# Persistent undo
|
||||||
|
[._]*.un~
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/windows,linux,osx,vim,emacs,intellij,eclipse,visualstudiocode,ansible
|
||||||
|
|
||||||
|
####################
|
||||||
|
### Custom rules ###
|
||||||
|
####################
|
||||||
|
|
||||||
|
### Molecule ###
|
||||||
|
|
||||||
|
__pycache__
|
||||||
|
.cache
|
||||||
|
.molecule
|
1
roles/gantsign.ctop/.moleculew/ansible_lint_version
Normal file
1
roles/gantsign.ctop/.moleculew/ansible_lint_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
4.3.5
|
1
roles/gantsign.ctop/.moleculew/ansible_version
Normal file
1
roles/gantsign.ctop/.moleculew/ansible_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
2.9.1
|
1
roles/gantsign.ctop/.moleculew/docker_lib_version
Normal file
1
roles/gantsign.ctop/.moleculew/docker_lib_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
4.3.1
|
1
roles/gantsign.ctop/.moleculew/flake8_version
Normal file
1
roles/gantsign.ctop/.moleculew/flake8_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.8.4
|
1
roles/gantsign.ctop/.moleculew/molecule_version
Normal file
1
roles/gantsign.ctop/.moleculew/molecule_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.0.8
|
1
roles/gantsign.ctop/.moleculew/python_version
Normal file
1
roles/gantsign.ctop/.moleculew/python_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.6.7
|
1
roles/gantsign.ctop/.moleculew/testinfra_version
Normal file
1
roles/gantsign.ctop/.moleculew/testinfra_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
5.3.1
|
1
roles/gantsign.ctop/.moleculew/yamllint_version
Normal file
1
roles/gantsign.ctop/.moleculew/yamllint_version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1.25.0
|
33
roles/gantsign.ctop/.yamllint
Normal file
33
roles/gantsign.ctop/.yamllint
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
# Based on ansible-lint config
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
braces:
|
||||||
|
max-spaces-inside: 1
|
||||||
|
level: error
|
||||||
|
brackets:
|
||||||
|
max-spaces-inside: 1
|
||||||
|
level: error
|
||||||
|
colons:
|
||||||
|
max-spaces-after: -1
|
||||||
|
level: error
|
||||||
|
commas:
|
||||||
|
max-spaces-after: -1
|
||||||
|
level: error
|
||||||
|
comments: disable
|
||||||
|
comments-indentation: disable
|
||||||
|
document-start: disable
|
||||||
|
empty-lines:
|
||||||
|
max: 3
|
||||||
|
level: error
|
||||||
|
hyphens:
|
||||||
|
level: error
|
||||||
|
indentation: disable
|
||||||
|
key-duplicates: enable
|
||||||
|
line-length: disable
|
||||||
|
new-line-at-end-of-file: disable
|
||||||
|
new-lines:
|
||||||
|
type: unix
|
||||||
|
trailing-spaces: disable
|
||||||
|
truthy: disable
|
21
roles/gantsign.ctop/LICENSE
Normal file
21
roles/gantsign.ctop/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 GantSign Ltd.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
156
roles/gantsign.ctop/README.md
Normal file
156
roles/gantsign.ctop/README.md
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
Ansible Role: ctop
|
||||||
|
==================
|
||||||
|
|
||||||
|
[![Tests](https://github.com/gantsign/ansible_role_ctop/workflows/Tests/badge.svg)](https://github.com/gantsign/ansible_role_ctop/actions?query=workflow%3ATests)
|
||||||
|
[![Ansible Galaxy](https://img.shields.io/badge/ansible--galaxy-gantsign.ctop-blue.svg)](https://galaxy.ansible.com/gantsign/ctop)
|
||||||
|
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/gantsign/ansible_role_ctop/master/LICENSE)
|
||||||
|
|
||||||
|
Role to download and install [ctop](https://ctop.sh) the top-like interface for
|
||||||
|
container metrics. View CPU, RAM and network I/O for your Docker containers at
|
||||||
|
a glance from your terminal.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Ansible >= 2.8
|
||||||
|
|
||||||
|
* Linux Distribution
|
||||||
|
|
||||||
|
* Debian Family
|
||||||
|
|
||||||
|
* Debian
|
||||||
|
|
||||||
|
* Jessie (8)
|
||||||
|
* Stretch (9)
|
||||||
|
|
||||||
|
* Ubuntu
|
||||||
|
|
||||||
|
* Xenial (16.04)
|
||||||
|
* Bionic (18.04)
|
||||||
|
|
||||||
|
* RedHat Family
|
||||||
|
|
||||||
|
* CentOS
|
||||||
|
|
||||||
|
* 7
|
||||||
|
|
||||||
|
* Fedora
|
||||||
|
|
||||||
|
* 31
|
||||||
|
|
||||||
|
* SUSE Family
|
||||||
|
|
||||||
|
* openSUSE
|
||||||
|
|
||||||
|
* 15.1
|
||||||
|
|
||||||
|
* Note: other versions are likely to work but have not been tested.
|
||||||
|
|
||||||
|
* Docker (already installed)
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The following variables will change the behavior of this role (default values
|
||||||
|
are shown below):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# ctop version number
|
||||||
|
ctop_version: '0.7.6'
|
||||||
|
|
||||||
|
# SHA256 sum for the ctop redistributable
|
||||||
|
ctop_redis_sha256sum: 'c5f8da250ec733084fb3891f2f8d04a49ffd25e81af59079216f2e6bb35fd983'
|
||||||
|
|
||||||
|
# Directory to store files downloaded for ctop
|
||||||
|
ctop_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: servers
|
||||||
|
roles:
|
||||||
|
- role: gantsign.ctop
|
||||||
|
```
|
||||||
|
|
||||||
|
Tab Completion for Zsh
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
### Using Ansible
|
||||||
|
|
||||||
|
We recommend using the
|
||||||
|
[gantsign.antigen](https://galaxy.ansible.com/gantsign/antigen) role to enable
|
||||||
|
tab completion for ctop (this must be configured for each user).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: servers
|
||||||
|
roles:
|
||||||
|
- role: gantsign.ctop
|
||||||
|
|
||||||
|
- role: gantsign.antigen
|
||||||
|
users:
|
||||||
|
- username: example
|
||||||
|
antigen_bundles:
|
||||||
|
- name: ctop
|
||||||
|
url: gantsign/zsh-plugins
|
||||||
|
location: ctop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using Antigen
|
||||||
|
|
||||||
|
If you prefer to use [Antigen](https://github.com/zsh-users/antigen) directly
|
||||||
|
add the following to your Antigen configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
antigen bundle gantsign/zsh-plugins ctop
|
||||||
|
```
|
||||||
|
|
||||||
|
More Roles From GantSign
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
You can find more roles from GantSign on
|
||||||
|
[Ansible Galaxy](https://galaxy.ansible.com/gantsign).
|
||||||
|
|
||||||
|
Development & Testing
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This project uses [Molecule](http://molecule.readthedocs.io/) to aid in the
|
||||||
|
development and testing; the role is unit tested using
|
||||||
|
[Testinfra](http://testinfra.readthedocs.io/) and
|
||||||
|
[pytest](http://docs.pytest.org/).
|
||||||
|
|
||||||
|
To develop or test you'll need to have installed the following:
|
||||||
|
|
||||||
|
* Linux (e.g. [Ubuntu](http://www.ubuntu.com/))
|
||||||
|
* [Docker](https://www.docker.com/)
|
||||||
|
* [Python](https://www.python.org/) (including python-pip)
|
||||||
|
* [Ansible](https://www.ansible.com/)
|
||||||
|
* [Molecule](http://molecule.readthedocs.io/)
|
||||||
|
|
||||||
|
Because the above can be tricky to install, this project includes
|
||||||
|
[Molecule Wrapper](https://github.com/gantsign/molecule-wrapper). Molecule
|
||||||
|
Wrapper is a shell script that installs Molecule and it's dependencies (apart
|
||||||
|
from Linux) and then executes Molecule with the command you pass it.
|
||||||
|
|
||||||
|
To test this role using Molecule Wrapper run the following command from the
|
||||||
|
project root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./moleculew test
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: some of the dependencies need `sudo` permission to install.
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|
||||||
|
Author Information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
John Freeman
|
||||||
|
|
||||||
|
GantSign Ltd.
|
||||||
|
Company No. 06109112 (registered in England)
|
9
roles/gantsign.ctop/defaults/main.yml
Normal file
9
roles/gantsign.ctop/defaults/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
# ctop version number
|
||||||
|
ctop_version: '0.7.6'
|
||||||
|
|
||||||
|
# SHA256 sum for the ctop redistributable
|
||||||
|
ctop_redis_sha256sum: 'c5f8da250ec733084fb3891f2f8d04a49ffd25e81af59079216f2e6bb35fd983'
|
||||||
|
|
||||||
|
# Directory to store files downloaded for ctop
|
||||||
|
ctop_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
|
2
roles/gantsign.ctop/handlers/main.yml
Normal file
2
roles/gantsign.ctop/handlers/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# handlers file for ansible_role_ctop
|
31
roles/gantsign.ctop/meta/main.yml
Normal file
31
roles/gantsign.ctop/meta/main.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: John Freeman
|
||||||
|
role_name: ctop
|
||||||
|
description: Ansible role for downloading and installing ctop.
|
||||||
|
company: GantSign Ltd.
|
||||||
|
license: MIT
|
||||||
|
min_ansible_version: 2.8
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- 7
|
||||||
|
- name: Fedora
|
||||||
|
versions:
|
||||||
|
- 31
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- xenial
|
||||||
|
- bionic
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- jessie
|
||||||
|
- stretch
|
||||||
|
- name: opensuse
|
||||||
|
versions:
|
||||||
|
- 15.1
|
||||||
|
galaxy_tags:
|
||||||
|
- ctop
|
||||||
|
- docker
|
||||||
|
- development
|
||||||
|
dependencies: []
|
22
roles/gantsign.ctop/molecule/centos/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/centos/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
26
roles/gantsign.ctop/molecule/centos/molecule.yml
Normal file
26
roles/gantsign.ctop/molecule/centos/molecule.yml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_centos
|
||||||
|
image: centos:7
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/debian_max/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/debian_max/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
29
roles/gantsign.ctop/molecule/debian_max/molecule.yml
Normal file
29
roles/gantsign.ctop/molecule/debian_max/molecule.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_debian_max
|
||||||
|
image: debian:9
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: debian_max
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/debian_min/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/debian_min/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
29
roles/gantsign.ctop/molecule/debian_min/molecule.yml
Normal file
29
roles/gantsign.ctop/molecule/debian_min/molecule.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_debian_min
|
||||||
|
image: debian:8
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: debian_min
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/default/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/default/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
5
roles/gantsign.ctop/molecule/default/converge.yml
Normal file
5
roles/gantsign.ctop/molecule/default/converge.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: ansible_role_ctop
|
22
roles/gantsign.ctop/molecule/default/molecule.yml
Normal file
22
roles/gantsign.ctop/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_default
|
||||||
|
image: ubuntu:18.04
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
22
roles/gantsign.ctop/molecule/default/tests/conftest.py
Normal file
22
roles/gantsign.ctop/molecule/default/tests/conftest.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
"""PyTest Fixtures."""
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_runtest_setup(item):
|
||||||
|
"""Run tests only when under molecule with testinfra installed."""
|
||||||
|
try:
|
||||||
|
import testinfra
|
||||||
|
except ImportError:
|
||||||
|
pytest.skip("Test requires testinfra", allow_module_level=True)
|
||||||
|
if "MOLECULE_INVENTORY_FILE" in os.environ:
|
||||||
|
pytest.testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
|
os.environ["MOLECULE_INVENTORY_FILE"]
|
||||||
|
).get_hosts("all")
|
||||||
|
else:
|
||||||
|
pytest.skip(
|
||||||
|
"Test should run only from inside molecule.",
|
||||||
|
allow_module_level=True)
|
23
roles/gantsign.ctop/molecule/default/tests/test_role.py
Normal file
23
roles/gantsign.ctop/molecule/default/tests/test_role.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def test_dir(host):
|
||||||
|
dir = host.file('/usr/local/bin')
|
||||||
|
assert dir.exists
|
||||||
|
assert dir.is_directory
|
||||||
|
assert dir.user == 'root'
|
||||||
|
assert dir.group == 'root'
|
||||||
|
|
||||||
|
|
||||||
|
def test_file(host):
|
||||||
|
installed_file = host.file('/usr/local/bin/ctop')
|
||||||
|
assert installed_file.exists
|
||||||
|
assert installed_file.is_file
|
||||||
|
assert installed_file.user == 'root'
|
||||||
|
assert installed_file.group == 'root'
|
||||||
|
|
||||||
|
|
||||||
|
def test_version(host):
|
||||||
|
version = host.check_output('ctop -v')
|
||||||
|
pattern = 'ctop version [0-9\\.]+'
|
||||||
|
assert re.search(pattern, version)
|
22
roles/gantsign.ctop/molecule/fedora/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/fedora/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
26
roles/gantsign.ctop/molecule/fedora/molecule.yml
Normal file
26
roles/gantsign.ctop/molecule/fedora/molecule.yml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_fedora
|
||||||
|
image: fedora:31
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/opensuse/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/opensuse/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
26
roles/gantsign.ctop/molecule/opensuse/molecule.yml
Normal file
26
roles/gantsign.ctop/molecule/opensuse/molecule.yml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_opensuse
|
||||||
|
image: opensuse/leap:15.1
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/ubuntu_max/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/ubuntu_max/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
29
roles/gantsign.ctop/molecule/ubuntu_max/molecule.yml
Normal file
29
roles/gantsign.ctop/molecule/ubuntu_max/molecule.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_ubuntu_max
|
||||||
|
image: ubuntu:18.04
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: ubuntu_max
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
22
roles/gantsign.ctop/molecule/ubuntu_min/INSTALL.rst
Normal file
22
roles/gantsign.ctop/molecule/ubuntu_min/INSTALL.rst
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
29
roles/gantsign.ctop/molecule/ubuntu_min/molecule.yml
Normal file
29
roles/gantsign.ctop/molecule/ubuntu_min/molecule.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint
|
||||||
|
flake8
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ansible_role_ctop_ubuntu_min
|
||||||
|
image: ubuntu:16.04
|
||||||
|
dockerfile: ../default/Dockerfile.j2
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
playbooks:
|
||||||
|
converge: ../default/converge.yml
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: ubuntu_min
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
directory: ../default/tests
|
957
roles/gantsign.ctop/moleculew
Normal file
957
roles/gantsign.ctop/moleculew
Normal file
|
@ -0,0 +1,957 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018 GantSign Ltd.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
# Molecule Wrapper the wrapper script for Molecule
|
||||||
|
# https://github.com/gantsign/molecule-wrapper
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
WRAPPER_VERSION=1.1.0
|
||||||
|
|
||||||
|
VERSION_DIR='.moleculew'
|
||||||
|
PYTHON_VERSION_FILE="$VERSION_DIR/python_version"
|
||||||
|
ANSIBLE_VERSION_FILE="$VERSION_DIR/ansible_version"
|
||||||
|
DOCKER_LIB_VERSION_FILE="$VERSION_DIR/docker_lib_version"
|
||||||
|
MOLECULE_VERSION_FILE="$VERSION_DIR/molecule_version"
|
||||||
|
YAMLLINT_VERSION_FILE="$VERSION_DIR/yamllint_version"
|
||||||
|
ANSIBLE_LINT_VERSION_FILE="$VERSION_DIR/ansible_lint_version"
|
||||||
|
FLAKE8_VERSION_FILE="$VERSION_DIR/flake8_version"
|
||||||
|
TESTINFRA_VERSION_FILE="$VERSION_DIR/testinfra_version"
|
||||||
|
|
||||||
|
BUILD_DEPENDENCIES_INSTALLLED=false
|
||||||
|
PYENV_INSTALLED=false
|
||||||
|
|
||||||
|
ANSIBLE_VERSION=''
|
||||||
|
DOCKER_LIB_VERSION=''
|
||||||
|
MOLECULE_VERSION=''
|
||||||
|
PYTHON_VERSION=''
|
||||||
|
YAMLLINT_VERSION=''
|
||||||
|
ANSIBLE_LINT_VERSION=''
|
||||||
|
FLAKE8_VERSION=''
|
||||||
|
TESTINFRA_VERSION=''
|
||||||
|
USE_SYSTEM_DEPENDENCIES=false
|
||||||
|
|
||||||
|
PRE_ARGS=()
|
||||||
|
MOLECULE_CMD=''
|
||||||
|
POST_ARGS=()
|
||||||
|
|
||||||
|
export PATH="$HOME/.pyenv/bin:$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
hr() {
|
||||||
|
for ((i = 1; i <= 80; i++)); do
|
||||||
|
printf '*'
|
||||||
|
done
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
banner() {
|
||||||
|
hr
|
||||||
|
echo "$1"
|
||||||
|
hr
|
||||||
|
}
|
||||||
|
|
||||||
|
run_as_root() {
|
||||||
|
if [[ $EUID -eq 0 ]]; then
|
||||||
|
"$@"
|
||||||
|
elif [ -x "$(command -v sudo)" ]; then
|
||||||
|
sudo "$@"
|
||||||
|
else
|
||||||
|
echo "Error: sudo is not installed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
build_dependencies_present() {
|
||||||
|
if [[ $BUILD_DEPENDENCIES_INSTALLLED == true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if [[ $USE_SYSTEM_DEPENDENCIES == true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# https://github.com/pyenv/pyenv/wiki/common-build-problems
|
||||||
|
if [[ -x "$(command -v apt-get)" ]]; then
|
||||||
|
banner 'Installing build dependencies'
|
||||||
|
|
||||||
|
run_as_root apt-get update
|
||||||
|
run_as_root apt-get install --assume-yes \
|
||||||
|
make build-essential libssl-dev zlib1g-dev libbz2-dev \
|
||||||
|
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
|
||||||
|
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
|
||||||
|
git jq
|
||||||
|
echo ''
|
||||||
|
elif [[ -x "$(command -v dnf)" ]]; then
|
||||||
|
banner 'Installing build dependencies'
|
||||||
|
|
||||||
|
run_as_root dnf install \
|
||||||
|
zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
|
||||||
|
openssl-devel xz xz-devel libffi-devel \
|
||||||
|
git curl jq
|
||||||
|
echo ''
|
||||||
|
elif [[ -x "$(command -v yum)" ]]; then
|
||||||
|
banner 'Installing build dependencies'
|
||||||
|
|
||||||
|
run_as_root yum install \
|
||||||
|
zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
|
||||||
|
openssl-devel xz xz-devel libffi-devel \
|
||||||
|
git curl jq
|
||||||
|
echo ''
|
||||||
|
elif [[ -x "$(command -v zypper)" ]]; then
|
||||||
|
banner 'Installing build dependencies'
|
||||||
|
|
||||||
|
run_as_root zypper install \
|
||||||
|
zlib-devel bzip2 libbz2-devel readline-devel sqlite3 sqlite3-devel \
|
||||||
|
libopenssl-devel xz xz-devel \
|
||||||
|
git curl jq
|
||||||
|
echo ''
|
||||||
|
fi
|
||||||
|
BUILD_DEPENDENCIES_INSTALLLED=true
|
||||||
|
}
|
||||||
|
|
||||||
|
pyenv_present() {
|
||||||
|
if [[ $PYENV_INSTALLED == true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if [[ $USE_SYSTEM_DEPENDENCIES == true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if [[ -x "$(command -v pyenv)" ]]; then
|
||||||
|
PYENV_INSTALLED=true
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_dependencies_present
|
||||||
|
|
||||||
|
banner "Installing pyenv for user $USER"
|
||||||
|
bash <(curl --location https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer)
|
||||||
|
echo ''
|
||||||
|
PYENV_INSTALLED=true
|
||||||
|
}
|
||||||
|
|
||||||
|
query_latest_python_version() {
|
||||||
|
pyenv_present
|
||||||
|
|
||||||
|
PYTHON_VERSION="$(~/.pyenv/plugins/python-build/bin/python-build --definitions | grep --color=never '^3\.' | grep --invert-match '\-dev$' | tail -1)"
|
||||||
|
}
|
||||||
|
|
||||||
|
query_latest_package_version() {
|
||||||
|
if [[ ! -x "$(command -v curl)" ]]; then
|
||||||
|
build_dependencies_present
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v jq)" ]]; then
|
||||||
|
build_dependencies_present
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v curl)" ]]; then
|
||||||
|
echo 'Error: curl is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v jq)" ]]; then
|
||||||
|
echo 'Error: jq is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local version
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
version=$(curl --fail --silent --show-error --location "https://pypi.org/pypi/$2/json" | jq --raw-output '.info.version')
|
||||||
|
|
||||||
|
eval "$1=\"\$version\""
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_present() {
|
||||||
|
if [[ -x "$(command -v docker)" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if [[ $USE_SYSTEM_DEPENDENCIES == true ]]; then
|
||||||
|
echo 'Error: docker is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_dependencies_present
|
||||||
|
|
||||||
|
banner 'Installing Docker'
|
||||||
|
sh <(curl --fail --silent --show-error --location https://get.docker.com)
|
||||||
|
run_as_root usermod --append --groups docker "$USER"
|
||||||
|
banner "User '$USER' has been added to the 'docker' group. Logout/restart and log back in for changes to take effect."
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
python_present() {
|
||||||
|
if [[ $PYTHON_VERSION == system ]]; then
|
||||||
|
if [[ ! -x "$(command -v python3)" ]] &&
|
||||||
|
[[ ! -x "$(command -v python)" ]]; then
|
||||||
|
echo 'Error: python is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v pip3)" ]] &&
|
||||||
|
[[ ! -x "$(command -v pip)" ]]; then
|
||||||
|
echo 'Error: pip is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PYTHON_EXE="$(command -v python3 || command -v python)"
|
||||||
|
else
|
||||||
|
if [[ ! -x "$(command -v git)" ]]; then
|
||||||
|
echo 'Error: git is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
pyenv_present
|
||||||
|
|
||||||
|
export PYENV_VERSION="$PYTHON_VERSION"
|
||||||
|
if [[ ! -d "$HOME/.pyenv/versions/$PYTHON_VERSION" ]]; then
|
||||||
|
build_dependencies_present
|
||||||
|
|
||||||
|
banner "Making Python version $PYTHON_VERSION available using pyenv"
|
||||||
|
pyenv install "$PYTHON_VERSION"
|
||||||
|
echo ''
|
||||||
|
fi
|
||||||
|
eval "$(pyenv init -)"
|
||||||
|
PYTHON_EXE="$(pyenv which python)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
virtualenv_presant() {
|
||||||
|
if [[ ! -x "$(command -v virtualenv)" ]]; then
|
||||||
|
banner "Installing virtualenv for user $USER"
|
||||||
|
"$PYTHON_EXE" -m pip install --user virtualenv
|
||||||
|
echo ''
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_ansible() {
|
||||||
|
banner "Installing Ansible $ANSIBLE_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
pip install "ansible==$ANSIBLE_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_docker_lib() {
|
||||||
|
banner "Installing Python Docker $DOCKER_LIB_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
pip install "docker==$DOCKER_LIB_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_molecule() {
|
||||||
|
banner "Installing Molecule $MOLECULE_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
|
||||||
|
pip install "molecule==$MOLECULE_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_yamllint() {
|
||||||
|
banner "Installing YamlLint $YAMLLINT_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
|
||||||
|
pip install "yamllint==$YAMLLINT_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_ansible_lint() {
|
||||||
|
banner "Installing Anssible Lint $ANSIBLE_LINT_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
|
||||||
|
pip install "ansible-lint==$ANSIBLE_LINT_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_flake8() {
|
||||||
|
banner "Installing Flake8 $FLAKE8_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
|
||||||
|
pip install "flake8==$FLAKE8_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
install_testinfra() {
|
||||||
|
banner "Installing Testinfra $TESTINFRA_VERSION into virtualenv $VIRTUAL_ENV"
|
||||||
|
|
||||||
|
pip install "testinfra==$TESTINFRA_VERSION"
|
||||||
|
echo ''
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_clean() {
|
||||||
|
local MOLECULE_WRAPPER_HOME="$HOME/.moleculew"
|
||||||
|
read -r -p "Delete ${MOLECULE_WRAPPER_HOME} (y/n)? " yn
|
||||||
|
case $yn in
|
||||||
|
[Yy]|YES|yes|Yes)
|
||||||
|
rm -rf "$MOLECULE_WRAPPER_HOME";
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_upgrade() {
|
||||||
|
curl --fail --silent --show-error --location --output moleculew.new \
|
||||||
|
'https://raw.githubusercontent.com/gantsign/molecule-wrapper/master/moleculew' \
|
||||||
|
&& chmod 'u+x' moleculew.new \
|
||||||
|
&& mv --force moleculew.new moleculew
|
||||||
|
|
||||||
|
local NEW_VERSION
|
||||||
|
NEW_VERSION="$(./moleculew wrapper-version)"
|
||||||
|
if [ "$WRAPPER_VERSION" != "$NEW_VERSION" ]; then
|
||||||
|
echo "Upgraded wrapper from version $WRAPPER_VERSION to $NEW_VERSION"
|
||||||
|
else
|
||||||
|
echo "You are already using the latest version"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_version() {
|
||||||
|
echo "$WRAPPER_VERSION"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
print_versions() {
|
||||||
|
echo "Python: $PYTHON_VERSION"
|
||||||
|
echo "Ansible: $ANSIBLE_VERSION"
|
||||||
|
echo "Python Docker library: $DOCKER_LIB_VERSION"
|
||||||
|
echo "Molecule: $MOLECULE_VERSION"
|
||||||
|
echo "YamlLint: $YAMLLINT_VERSION"
|
||||||
|
echo "Ansible Lint: $ANSIBLE_LINT_VERSION"
|
||||||
|
echo "Flake8: $FLAKE8_VERSION"
|
||||||
|
echo "Testinfra: $TESTINFRA_VERSION"
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_versions() {
|
||||||
|
detemine_versions
|
||||||
|
|
||||||
|
print_versions
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_freeze() {
|
||||||
|
detemine_versions
|
||||||
|
|
||||||
|
banner 'Freezing versions'
|
||||||
|
|
||||||
|
mkdir -p "$VERSION_DIR"
|
||||||
|
|
||||||
|
echo "$PYTHON_VERSION" > "$PYTHON_VERSION_FILE"
|
||||||
|
echo "$ANSIBLE_VERSION" > "$ANSIBLE_VERSION_FILE"
|
||||||
|
echo "$DOCKER_LIB_VERSION" > "$DOCKER_LIB_VERSION_FILE"
|
||||||
|
echo "$MOLECULE_VERSION" > "$MOLECULE_VERSION_FILE"
|
||||||
|
echo "$YAMLLINT_VERSION" > "$YAMLLINT_VERSION_FILE"
|
||||||
|
echo "$ANSIBLE_LINT_VERSION" > "$ANSIBLE_LINT_VERSION_FILE"
|
||||||
|
echo "$FLAKE8_VERSION" > "$FLAKE8_VERSION_FILE"
|
||||||
|
echo "$TESTINFRA_VERSION" > "$TESTINFRA_VERSION_FILE"
|
||||||
|
|
||||||
|
print_versions
|
||||||
|
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_unfreeze() {
|
||||||
|
banner 'Un-freezing versions'
|
||||||
|
|
||||||
|
if [[ -f "$PYTHON_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$PYTHON_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$ANSIBLE_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$ANSIBLE_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$DOCKER_LIB_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$DOCKER_LIB_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$MOLECULE_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$MOLECULE_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$YAMLLINT_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$YAMLLINT_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$ANSIBLE_LINT_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$ANSIBLE_LINT_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$FLAKE8_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$FLAKE8_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
if [[ -f "$TESTINFRA_VERSION_FILE" ]]; then
|
||||||
|
rm --verbose "$TESTINFRA_VERSION_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_upgrade_versions() {
|
||||||
|
detemine_versions
|
||||||
|
|
||||||
|
banner 'Upgrading versions'
|
||||||
|
|
||||||
|
local CURRENT_PYTHON_VERSION="$PYTHON_VERSION"
|
||||||
|
local CURRENT_ANSIBLE_VERSION="$ANSIBLE_VERSION"
|
||||||
|
local CURRENT_DOCKER_LIB_VERSION="$DOCKER_LIB_VERSION"
|
||||||
|
local CURRENT_MOLECULE_VERSION="$MOLECULE_VERSION"
|
||||||
|
local CURRENT_YAMLLINT_VERSION="$YAMLLINT_VERSION"
|
||||||
|
local CURRENT_ANSIBLE_LINT_VERSION="$ANSIBLE_LINT_VERSION"
|
||||||
|
local CURRENT_FLAKE8_VERSION="$FLAKE8_VERSION"
|
||||||
|
local CURRENT_TESTINFRA_VERSION="$TESTINFRA_VERSION"
|
||||||
|
|
||||||
|
query_latest_python_version
|
||||||
|
query_latest_package_version ANSIBLE_VERSION ansible
|
||||||
|
query_latest_package_version DOCKER_LIB_VERSION docker
|
||||||
|
query_latest_package_version MOLECULE_VERSION molecule
|
||||||
|
query_latest_package_version YAMLLINT_VERSION yamllint
|
||||||
|
query_latest_package_version ANSIBLE_LINT_VERSION ansible-lint
|
||||||
|
query_latest_package_version FLAKE8_VERSION flake8
|
||||||
|
query_latest_package_version TESTINFRA_VERSION testinfra
|
||||||
|
echo ''
|
||||||
|
|
||||||
|
echo 'New versions:'
|
||||||
|
if [[ "$CURRENT_PYTHON_VERSION" == "$PYTHON_VERSION" ]]; then
|
||||||
|
echo "Python: $CURRENT_PYTHON_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Python: $CURRENT_PYTHON_VERSION -> $PYTHON_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_ANSIBLE_VERSION" == "$ANSIBLE_VERSION" ]]; then
|
||||||
|
echo "Ansible: $CURRENT_ANSIBLE_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Ansible: $CURRENT_ANSIBLE_VERSION -> $ANSIBLE_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_DOCKER_LIB_VERSION" == "$DOCKER_LIB_VERSION" ]]; then
|
||||||
|
echo "Python Docker library: $CURRENT_DOCKER_LIB_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Python Docker library: $CURRENT_DOCKER_LIB_VERSION -> $DOCKER_LIB_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_MOLECULE_VERSION" == "$MOLECULE_VERSION" ]]; then
|
||||||
|
echo "Molecule: $CURRENT_MOLECULE_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Molecule: $CURRENT_MOLECULE_VERSION -> $MOLECULE_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_YAMLLINT_VERSION" == "$YAMLLINT_VERSION" ]]; then
|
||||||
|
echo "YamlLint: $CURRENT_YAMLLINT_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "YamlLint: $CURRENT_YAMLLINT_VERSION -> $YAMLLINT_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_ANSIBLE_LINT_VERSION" == "$ANSIBLE_LINT_VERSION" ]]; then
|
||||||
|
echo "Ansible Lint: $CURRENT_ANSIBLE_LINT_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Ansible Lint: $CURRENT_ANSIBLE_LINT_VERSION -> $ANSIBLE_LINT_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_FLAKE8_VERSION" == "$FLAKE8_VERSION" ]]; then
|
||||||
|
echo "Flake8: $CURRENT_FLAKE8_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Flake8: $CURRENT_FLAKE8_VERSION -> $FLAKE8_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_TESTINFRA_VERSION" == "$TESTINFRA_VERSION" ]]; then
|
||||||
|
echo "Testinfra: $CURRENT_TESTINFRA_VERSION (no change)"
|
||||||
|
else
|
||||||
|
echo "Testinfra: $CURRENT_TESTINFRA_VERSION -> $TESTINFRA_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
|
||||||
|
wrapper_freeze
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_help() {
|
||||||
|
activate_virtualenv
|
||||||
|
|
||||||
|
molecule --help
|
||||||
|
|
||||||
|
echo "
|
||||||
|
Molecule Wrapper
|
||||||
|
|
||||||
|
Additional options:
|
||||||
|
--ansible VERSION Use the specified version of Ansible
|
||||||
|
--docker-lib VERSION Use the specified version of the Python Docker
|
||||||
|
library
|
||||||
|
--molecule VERSION Use the specified version of Molecule
|
||||||
|
--python VERSION Use the specified version of Python
|
||||||
|
--yamllint VERSION Use the specified version of YamlLint
|
||||||
|
--ansible-lint VERSION Use the specified version of Ansible Lint
|
||||||
|
--flake8 VERSION Use the specified version of Flake8
|
||||||
|
--testinfra VERSION Use the specified version of Testinfra
|
||||||
|
--use-system-dependencies Use system dependencies
|
||||||
|
|
||||||
|
Additional commands:
|
||||||
|
wrapper-clean Removes all the wrapper virtual environments
|
||||||
|
wrapper-freeze Freezes the dependency versions being used
|
||||||
|
wrapper-unfreeze Un-freezes the dependency versions
|
||||||
|
wrapper-upgrade Upgrades the Molecule Wrapper to the latest version
|
||||||
|
wrapper-upgrade-versions Upgrades any frozen dependency versions
|
||||||
|
wrapper-version Displays the current version of Molecule Wrapper
|
||||||
|
"
|
||||||
|
}
|
||||||
|
|
||||||
|
query_package_versions() {
|
||||||
|
local package_name="$1"
|
||||||
|
local min_version="$2"
|
||||||
|
|
||||||
|
if [[ ! -x "$(command -v curl)" ]]; then
|
||||||
|
build_dependencies_present > /dev/null
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v jq)" ]]; then
|
||||||
|
build_dependencies_present > /dev/null
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v curl)" ]]; then
|
||||||
|
echo 'Error: curl is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v jq)" ]]; then
|
||||||
|
echo 'Error: jq is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -x "$(command -v sort)" ]]; then
|
||||||
|
echo 'Error: sort is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $(curl --fail --silent --show-error \
|
||||||
|
--location "https://pypi.org/pypi/$package_name/json" \
|
||||||
|
| jq --raw-output ".releases | keys | .[], \"$min_version.\"" \
|
||||||
|
| grep --invert-match '[a-zA-Z]' \
|
||||||
|
| sort --version-sort --reverse) ; do
|
||||||
|
if [[ "$i" == "$min_version." ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "$i"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_ansible() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'ansible' '2.8'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_docker_lib() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'docker' '3.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_molecule() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'molecule' '3.0.6'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_python() {
|
||||||
|
if [[ ! -x "$(command -v sort)" ]]; then
|
||||||
|
echo 'Error: sort is not installed.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
pyenv_present > /dev/null
|
||||||
|
|
||||||
|
local min_version='3.6'
|
||||||
|
|
||||||
|
echo 'latest'
|
||||||
|
|
||||||
|
for i in $( (echo "$min_version." && \
|
||||||
|
~/.pyenv/plugins/python-build/bin/python-build --definitions) \
|
||||||
|
| grep --color=never '^[0-9]' \
|
||||||
|
| grep --invert-match '\-dev$' \
|
||||||
|
| sort --version-sort --reverse) ; do
|
||||||
|
if [[ "$i" == "$min_version." ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "$i"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_yamllint() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'yamllint' '1.24.2'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_ansible_lint() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'ansible_lint' '4.2.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_flake8() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'flake8' '3.8.3'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_testinfra() {
|
||||||
|
echo 'latest'
|
||||||
|
query_package_versions 'testinfra' '5.2.2'
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_options_scenario() {
|
||||||
|
(
|
||||||
|
cd molecule > /dev/null &&
|
||||||
|
for d in *; do
|
||||||
|
if [ -d "$d" ]; then
|
||||||
|
echo "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper_virtualenv() {
|
||||||
|
activate_virtualenv > /dev/null
|
||||||
|
echo "$VIRTUAL_ENV"
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_args() {
|
||||||
|
set +e
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
key="$1"
|
||||||
|
|
||||||
|
case $key in
|
||||||
|
--python=*)
|
||||||
|
PYTHON_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--python)
|
||||||
|
shift
|
||||||
|
PYTHON_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ansible=*)
|
||||||
|
ANSIBLE_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ansible)
|
||||||
|
shift
|
||||||
|
ANSIBLE_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--docker-lib=*)
|
||||||
|
DOCKER_LIB_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--docker-lib)
|
||||||
|
shift
|
||||||
|
DOCKER_LIB_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--molecule=*)
|
||||||
|
MOLECULE_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--molecule)
|
||||||
|
shift
|
||||||
|
MOLECULE_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--yamllint=*)
|
||||||
|
YAMLLINT_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--yamllint)
|
||||||
|
shift
|
||||||
|
YAMLLINT_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ansible-lint=*)
|
||||||
|
ANSIBLE_LINT_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ansible-lint)
|
||||||
|
shift
|
||||||
|
ANSIBLE_LINT_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--flake8=*)
|
||||||
|
FLAKE8_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--flake8)
|
||||||
|
shift
|
||||||
|
FLAKE8_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--testinfra)
|
||||||
|
shift
|
||||||
|
TESTINFRA_VERSION="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--testinfra=*)
|
||||||
|
TESTINFRA_VERSION="${1#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--use-system-dependencies)
|
||||||
|
USE_SYSTEM_DEPENDENCIES=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--help)
|
||||||
|
MOLECULE_CMD='wrapper-help'
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
wrapper-*)
|
||||||
|
MOLECULE_CMD="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
check|converge|create|dependency|destroy|idempotence|init|lint|list|login|matrix|prepare|side-effect|syntax|test|verify)
|
||||||
|
if [[ "$MOLECULE_CMD" != '' ]]; then
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
MOLECULE_CMD="$1"
|
||||||
|
shift
|
||||||
|
for arg in "$@"; do
|
||||||
|
POST_ARGS+=("$arg")
|
||||||
|
done
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PRE_ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
set -e
|
||||||
|
}
|
||||||
|
|
||||||
|
detemine_versions() {
|
||||||
|
if [[ $USE_SYSTEM_DEPENDENCIES == false ]]; then
|
||||||
|
USE_SYSTEM_DEPENDENCIES="$MOLECULEW_USE_SYSTEM"
|
||||||
|
fi
|
||||||
|
if [[ $PYTHON_VERSION == '' ]]; then
|
||||||
|
PYTHON_VERSION="$MOLECULEW_PYTHON"
|
||||||
|
fi
|
||||||
|
if [[ $ANSIBLE_VERSION == '' ]]; then
|
||||||
|
ANSIBLE_VERSION="$MOLECULEW_ANSIBLE"
|
||||||
|
fi
|
||||||
|
if [[ $DOCKER_LIB_VERSION == '' ]]; then
|
||||||
|
DOCKER_LIB_VERSION="$MOLECULEW_DOCKER_LIB"
|
||||||
|
fi
|
||||||
|
if [[ $MOLECULE_VERSION == '' ]]; then
|
||||||
|
MOLECULE_VERSION="$MOLECULEW_MOLECULE"
|
||||||
|
fi
|
||||||
|
if [[ $YAMLLINT_VERSION == '' ]]; then
|
||||||
|
YAMLLINT_VERSION="$MOLECULEW_YAMLLINT"
|
||||||
|
fi
|
||||||
|
if [[ $ANSIBLE_LINT_VERSION == '' ]]; then
|
||||||
|
ANSIBLE_LINT_VERSION="$MOLECULEW_ANSIBLE_LINT"
|
||||||
|
fi
|
||||||
|
if [[ $FLAKE8_VERSION == '' ]]; then
|
||||||
|
FLAKE8_VERSION="$MOLECULEW_FLAKE8"
|
||||||
|
fi
|
||||||
|
if [[ $TESTINFRA_VERSION == '' ]]; then
|
||||||
|
TESTINFRA_VERSION="$MOLECULEW_TESTINFRA"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $USE_SYSTEM_DEPENDENCIES == true ]]; then
|
||||||
|
if [[ $PYTHON_VERSION != '' ]]; then
|
||||||
|
echo "Error: --python and --use-system-dependencies cannot be used together" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PYTHON_VERSION=system
|
||||||
|
elif [[ $PYTHON_VERSION == '' ]] || [[ $PYTHON_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $PYTHON_VERSION_FILE ]]; then
|
||||||
|
PYTHON_VERSION=$(<"$PYTHON_VERSION_FILE")
|
||||||
|
fi
|
||||||
|
if [[ $PYTHON_VERSION == '' ]]; then
|
||||||
|
query_latest_python_version
|
||||||
|
fi
|
||||||
|
elif [[ $PYTHON_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_python_version
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $ANSIBLE_VERSION == '' ]] || [[ $ANSIBLE_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $ANSIBLE_VERSION_FILE ]]; then
|
||||||
|
ANSIBLE_VERSION=$(<"$ANSIBLE_VERSION_FILE")
|
||||||
|
fi
|
||||||
|
if [[ $ANSIBLE_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version ANSIBLE_VERSION ansible
|
||||||
|
fi
|
||||||
|
elif [[ $ANSIBLE_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version ANSIBLE_VERSION ansible
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $DOCKER_LIB_VERSION == '' ]] || [[ $DOCKER_LIB_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $DOCKER_LIB_VERSION_FILE ]]; then
|
||||||
|
DOCKER_LIB_VERSION=$(<"$DOCKER_LIB_VERSION_FILE")
|
||||||
|
fi
|
||||||
|
if [[ $DOCKER_LIB_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version DOCKER_LIB_VERSION docker
|
||||||
|
fi
|
||||||
|
elif [[ $DOCKER_LIB_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version DOCKER_LIB_VERSION docker
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $MOLECULE_VERSION == '' ]] || [[ $MOLECULE_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $MOLECULE_VERSION_FILE ]]; then
|
||||||
|
MOLECULE_VERSION=$(<$MOLECULE_VERSION_FILE)
|
||||||
|
fi
|
||||||
|
if [[ $MOLECULE_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version MOLECULE_VERSION molecule
|
||||||
|
fi
|
||||||
|
elif [[ $MOLECULE_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version MOLECULE_VERSION molecule
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $YAMLLINT_VERSION == '' ]] || [[ $YAMLLINT_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $YAMLLINT_VERSION_FILE ]]; then
|
||||||
|
YAMLLINT_VERSION=$(<$YAMLLINT_VERSION_FILE)
|
||||||
|
fi
|
||||||
|
if [[ $YAMLLINT_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version YAMLLINT_VERSION yamllint
|
||||||
|
fi
|
||||||
|
elif [[ $YAMLLINT_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version YAMLLINT_VERSION yamllint
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $ANSIBLE_LINT_VERSION == '' ]] || [[ $ANSIBLE_LINT_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $ANSIBLE_LINT_VERSION_FILE ]]; then
|
||||||
|
ANSIBLE_LINT_VERSION=$(<$ANSIBLE_LINT_VERSION_FILE)
|
||||||
|
fi
|
||||||
|
if [[ $ANSIBLE_LINT_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version ANSIBLE_LINT_VERSION ansible-lint
|
||||||
|
fi
|
||||||
|
elif [[ $ANSIBLE_LINT_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version ANSIBLE_LINT_VERSION ansible-lint
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $FLAKE8_VERSION == '' ]] || [[ $FLAKE8_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $FLAKE8_VERSION_FILE ]]; then
|
||||||
|
FLAKE8_VERSION=$(<$FLAKE8_VERSION_FILE)
|
||||||
|
fi
|
||||||
|
if [[ $FLAKE8_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version FLAKE8_VERSION flake8
|
||||||
|
fi
|
||||||
|
elif [[ $FLAKE8_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version FLAKE8_VERSION flake8
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $TESTINFRA_VERSION == '' ]] || [[ $TESTINFRA_VERSION == 'default' ]]; then
|
||||||
|
if [[ -f $TESTINFRA_VERSION_FILE ]]; then
|
||||||
|
TESTINFRA_VERSION=$(<$TESTINFRA_VERSION_FILE)
|
||||||
|
fi
|
||||||
|
if [[ $TESTINFRA_VERSION == '' ]]; then
|
||||||
|
query_latest_package_version TESTINFRA_VERSION testinfra
|
||||||
|
fi
|
||||||
|
elif [[ $TESTINFRA_VERSION == 'latest' ]]; then
|
||||||
|
query_latest_package_version TESTINFRA_VERSION testinfra
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
activate_virtualenv() {
|
||||||
|
detemine_versions
|
||||||
|
|
||||||
|
MOLECULE_WRAPPER_ENV="$HOME/.moleculew/ml-${MOLECULE_VERSION}_an-${ANSIBLE_VERSION}_py-${PYTHON_VERSION}_dk-${DOCKER_LIB_VERSION}_yl-${YAMLLINT_VERSION}_al-${ANSIBLE_LINT_VERSION}_f8-${FLAKE8_VERSION}_ti-${TESTINFRA_VERSION}"
|
||||||
|
|
||||||
|
if [ ! -f "$MOLECULE_WRAPPER_ENV/bin/activate" ]; then
|
||||||
|
|
||||||
|
build_dependencies_present
|
||||||
|
|
||||||
|
docker_present
|
||||||
|
|
||||||
|
python_present
|
||||||
|
|
||||||
|
virtualenv_presant
|
||||||
|
|
||||||
|
banner "Initializing virtualenv $MOLECULE_WRAPPER_ENV"
|
||||||
|
virtualenv "--python=$PYTHON_EXE" "$MOLECULE_WRAPPER_ENV"
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "$MOLECULE_WRAPPER_ENV/bin/activate"
|
||||||
|
echo ''
|
||||||
|
|
||||||
|
install_ansible
|
||||||
|
|
||||||
|
install_docker_lib
|
||||||
|
|
||||||
|
install_molecule
|
||||||
|
|
||||||
|
install_yamllint
|
||||||
|
|
||||||
|
install_ansible_lint
|
||||||
|
|
||||||
|
install_flake8
|
||||||
|
|
||||||
|
install_testinfra
|
||||||
|
else
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "$MOLECULE_WRAPPER_ENV/bin/activate"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_args "$@"
|
||||||
|
|
||||||
|
case $MOLECULE_CMD in
|
||||||
|
wrapper-clean)
|
||||||
|
wrapper_clean
|
||||||
|
;;
|
||||||
|
wrapper-freeze)
|
||||||
|
wrapper_freeze
|
||||||
|
;;
|
||||||
|
wrapper-help)
|
||||||
|
wrapper_help
|
||||||
|
;;
|
||||||
|
wrapper-install)
|
||||||
|
activate_virtualenv
|
||||||
|
;;
|
||||||
|
wrapper-options-ansible)
|
||||||
|
wrapper_options_ansible
|
||||||
|
;;
|
||||||
|
wrapper-options-docker-lib)
|
||||||
|
wrapper_options_docker_lib
|
||||||
|
;;
|
||||||
|
wrapper-options-molecule)
|
||||||
|
wrapper_options_molecule
|
||||||
|
;;
|
||||||
|
wrapper-options-python)
|
||||||
|
wrapper_options_python
|
||||||
|
;;
|
||||||
|
wrapper-options-yamllint)
|
||||||
|
wrapper_options_yamllint
|
||||||
|
;;
|
||||||
|
wrapper-options-ansible-lint)
|
||||||
|
wrapper_options_ansible_lint
|
||||||
|
;;
|
||||||
|
wrapper-options-flake8)
|
||||||
|
wrapper_options_flake8
|
||||||
|
;;
|
||||||
|
wrapper-options-testinfra)
|
||||||
|
wrapper_options_testinfra
|
||||||
|
;;
|
||||||
|
wrapper-options-scenario)
|
||||||
|
wrapper_options_scenario
|
||||||
|
;;
|
||||||
|
wrapper-unfreeze)
|
||||||
|
wrapper_unfreeze
|
||||||
|
;;
|
||||||
|
wrapper-upgrade)
|
||||||
|
wrapper_upgrade
|
||||||
|
;;
|
||||||
|
wrapper-upgrade-versions)
|
||||||
|
wrapper_upgrade_versions
|
||||||
|
;;
|
||||||
|
wrapper-version)
|
||||||
|
wrapper_version
|
||||||
|
;;
|
||||||
|
wrapper-versions)
|
||||||
|
wrapper_versions
|
||||||
|
;;
|
||||||
|
wrapper-virtualenv)
|
||||||
|
wrapper_virtualenv
|
||||||
|
;;
|
||||||
|
wrapper-*)
|
||||||
|
echo "Unsupported command: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
activate_virtualenv
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
exec molecule "${PRE_ARGS[@]}" $MOLECULE_CMD "${POST_ARGS[@]}"
|
||||||
|
;;
|
||||||
|
esac
|
31
roles/gantsign.ctop/tasks/main.yml
Normal file
31
roles/gantsign.ctop/tasks/main.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
---
|
||||||
|
- name: create download directory
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
mode: 'u=rwx,go=rx'
|
||||||
|
dest: '{{ ctop_download_dir }}'
|
||||||
|
|
||||||
|
- name: download ctop
|
||||||
|
get_url:
|
||||||
|
url: '{{ ctop_mirror }}/{{ ctop_redis_filename }}'
|
||||||
|
dest: '{{ ctop_download_dir }}/{{ ctop_redis_filename }}'
|
||||||
|
checksum: 'sha256:{{ ctop_redis_sha256sum }}'
|
||||||
|
mode: 'u=rw,go=r'
|
||||||
|
|
||||||
|
- name: create the ctop installation dir
|
||||||
|
become: yes
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 'u=rwx,go=rx'
|
||||||
|
dest: '{{ ctop_install_dir }}'
|
||||||
|
|
||||||
|
- name: install ctop
|
||||||
|
become: yes
|
||||||
|
copy:
|
||||||
|
src: '{{ ctop_download_dir }}/{{ ctop_redis_filename }}'
|
||||||
|
remote_src: yes
|
||||||
|
dest: '{{ ctop_install_path }}'
|
||||||
|
force: yes
|
||||||
|
mode: 'u=rwx,go=rx'
|
18
roles/gantsign.ctop/vars/main.yml
Normal file
18
roles/gantsign.ctop/vars/main.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
# Dir where ctop should be installed
|
||||||
|
ctop_install_dir: '/usr/local/bin'
|
||||||
|
|
||||||
|
# Path where ctop should be installed
|
||||||
|
ctop_install_path: '{{ ctop_install_dir }}/ctop'
|
||||||
|
|
||||||
|
# Mirror to download the ctop from
|
||||||
|
ctop_mirror: 'https://github.com/bcicen/ctop/releases/download/{{ ctop_version }}'
|
||||||
|
|
||||||
|
# The OS of the ctop redistributable
|
||||||
|
ctop_os: 'linux'
|
||||||
|
|
||||||
|
# The CPU architecture of the ctop redistributable
|
||||||
|
ctop_architecture: 'amd64'
|
||||||
|
|
||||||
|
# File name of the ctop redistributable file
|
||||||
|
ctop_redis_filename: 'ctop-{{ ctop_version }}-{{ ctop_os }}-{{ ctop_architecture }}'
|
Loading…
Reference in a new issue