diff --git a/CHANGELOG b/CHANGELOG index e68993b..ebb20d9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +* Mon Oct 5 2020 Matiss Treinis - 1.1.3 +- Fix build compatibility with libssh +- Fix OSX build + * Thu Aug 6 2020 Matiss Treinis - 1.1.2 - Add support for .kafeignore files. diff --git a/README.md b/README.md index d8049f6..8f612c1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -Kafe (`/ka'fe:/`) is an open source scriptable systems automation toolkit. It provides a basic set of features to interact -with local and remote systems over SSH. Kafe is well suited for application deployment and similar +Kafe (`/ka'fe:/`) is an open source scriptable systems automation toolkit. It provides a basic set of features to interact +with local and remote systems over SSH. Kafe is well suited for application deployment and similar remote systems administration tasks. ## Installation @@ -16,10 +16,10 @@ Binary builds are available for: You should be able to use these binary packages for any derivative distributions. For example, Elementary OS 5.1 users can use Ubuntu 18.04 packages, since Elementary OS 5.1 is based on Ubuntu 18.04. -**macOS is officially supported**, but binary builds are not provided. See bellow how to compile -Kafe from source - building Kafe on macOS is fairly trivial. +**macOS is officially supported** - Kafe can be installed compiling from source (see bellow) or using +[homebrew vendor tap](https://github.com/libkafe/homebrew-kafe). -1 - EL7 does not ship with Lua 5.3. We currently use +1 - EL7 does not ship with Lua 5.3. We currently use [Cheese](http://www.nosuchhost.net/~cheese/fedora/packages/epel-7/x86_64/cheese-release.html) repository to obtain Lua 5.3 on EL7. @@ -33,7 +33,7 @@ You can also build the sources locally using `CMake`. See bellow for instruction ## Writing Kafe scripts -You can declare your server inventory and automation tasks in Kafe scripts. Kafe scripts are written in +You can declare your server inventory and automation tasks in Kafe scripts. Kafe scripts are written in [Lua](https://www.lua.org) programming language. Kafe CLI looks for a file named `kafe.lua` in current working directory to execute the tasks from. @@ -62,8 +62,8 @@ name a few. Each inventory item can have one or more roles and environment. All remote servers in Kafe must be placed in inventory. Inventory is a list of remote servers with associated roles and environments. Each server can have one or more roles and can be present in one or more environments. -Each inventory line uniquely combines remote server address, one role, and one environment. To add the same -remote server to multiple roles and environments duplicate the inventory definition line. +Each inventory line uniquely combines remote server address, one role, and one environment. To add the same +remote server to multiple roles and environments duplicate the inventory definition line. #### Execution of tasks @@ -76,7 +76,7 @@ much larger investment in writing the automation tasks. Example bellow aims to demonstrate how to deploy a simple web software application to a remote host. Remember that although Kafe can be used to deploy software, it is designed to be purpose agnostic - you can use it for -all kinds of remote automation tasks since you can run raw shell commands, make uploads and downloads, etc. +all kinds of remote automation tasks since you can run raw shell commands, make uploads and downloads, etc. ```lua -- Include the API @@ -190,7 +190,7 @@ Kafe is using SSH for remote command execution and file uploads. It will attempt SSH keys, as well as GSSAPI-WITH-MIC and password based authentication to authenticate to remote hosts. If no SSH agent is present, you can set the passphrase to be used to decrypt any encrypted private keys using -environment variable `KAFE_SSH_PKEY_PASS`. You can set password to be used for password based authentication using +environment variable `KAFE_SSH_PKEY_PASS`. You can set password to be used for password based authentication using environment variable named `KAFE_SSH_USER_PASS`. **IMPORTANT:** Kafe will not automatically add remote keys to known hosts nor will it provide a way to do so interactively. @@ -209,7 +209,7 @@ ALL = 0, TRACE = 1, DEBUG = 2, INFO = 3, SUCCESS = 4, WARNING = 5, ERROR = 6, NO ## Kafe and libkafe -Kafe is written entirely in C++ - it is distributed as a native binary (kafe-cli) and a shared library (libkafe) +Kafe is written entirely in C++ - it is distributed as a native binary (kafe-cli) and a shared library (libkafe) with C++ development headers made available for embedding (libkafe-dev). ## Operating system support @@ -217,7 +217,7 @@ with C++ development headers made available for embedding (libkafe-dev). Kafe should work with any UNIX-like operating system, provided all external dependencies are met. Binary packages are provided for: -- **CentOS** and **RHEL** versions 7, 8 +- **CentOS** and **RHEL** versions 7, 8 - **Fedora** versions 31, 32, 33 - **Ubuntu** versions 18.04, 19.10, 20.04 - **Debian** versions 9, 10, 11 @@ -232,7 +232,7 @@ fine on older versions of macOS, but no testing has been done on them. If you ar to latest macOS version, you should still try to install Kafe from sources. It will most likely work just fine provided all external dependencies are met. -If you would like to contribute your distribution to the above list, you can implement a build for it. +If you would like to contribute your distribution to the above list, you can implement a build for it. Just follow the samples already present in [dist](./dist) folder. Any contributions adding support for new distributions must contain all current non-EOL distribution versions, including RC versions, if any. @@ -278,13 +278,13 @@ of CentOS 7, where third party repository is required to install and use Kafe. ### Building from source -To build Kafe from the source, you will need C++ and C compiler, CMake (version 3.11.4 or newer), Make and following +To build Kafe from the source, you will need C++ and C compiler, CMake (version 3.11.4 or newer), Make and following development libraries: -- liblua version 5.3 or newer (up to version 5.4) +- liblua version 5.3 or newer (up to version 5.4) - libcurl (reserved for future APIs) -- libarchive -- libssh +- libarchive +- libssh - libgit2 (reserved for future APIs) Kafe is built and tested using Clang toolchain - version 7 or higher, depending on build environment, @@ -304,7 +304,7 @@ To install dependencies using Homebrew, use this command: `brew install llvm lua libssh libgit2 curl libarchive` -To build +To build 1. Clone the source from `git@github.com:libkafe/kafe.git`; 2. Optionally, check out the desired version tag to build from GIT; 3. Execute [build-dist-macos.sh](./build-dist-macos.sh) file found at the root of the cloned sources. @@ -345,10 +345,10 @@ outside the realm of my own personal use. [Hemp](https://github.com/Addvilz/hemp) was another tool I wrote prior to Kafe for use in production to automate deployment and remote automation. This tool was based on now unmaintained 3rd party remote automation library and was deprecated due to lack of support for Python 3 and breaking changes from upstream library vendor. Unfortunately, Hemp was and still -is being used in a number of production projects and many production systems rely on it being functional and maintained, +is being used in a number of production projects and many production systems rely on it being functional and maintained, something that is no longer viable. -I created Kafe to replace both of these tools. Kafe is designed to be as minimal and straightforward as possible. +I created Kafe to replace both of these tools. Kafe is designed to be as minimal and straightforward as possible. I wanted to create an automation tool with strong backwards compatibility guarantees, meaning that once written, automation tasks should work with minimal or no changes years to come. diff --git a/build-dist.sh b/build-dist.sh index 299f070..58308e3 100755 --- a/build-dist.sh +++ b/build-dist.sh @@ -136,4 +136,4 @@ docker run -it --rm -v `pwd`:/kafe kafe/fedora:33-build mkdir -p build-artifact/fedora-33/ cp build/fedora/33/kafe-cli-*.rpm build-artifact/fedora-33/ cp build/fedora/33/libkafe-*.rpm build-artifact/fedora-33/ -for f in build-artifact/fedora-33/*; do mv -v "$f" $(echo "$f" | sed "s/\.rpm/\.f33\.rpm/"); done \ No newline at end of file +for f in build-artifact/fedora-33/*; do mv -v "$f" $(echo "$f" | sed "s/\.rpm/\.f33\.rpm/"); done diff --git a/dist/fedora/33/Dockerfile b/dist/fedora/33/Dockerfile index 0bc3b30..c27d7c1 100644 --- a/dist/fedora/33/Dockerfile +++ b/dist/fedora/33/Dockerfile @@ -13,7 +13,7 @@ RUN yum -y update && \ libssh-devel \ libgit2-devel -ENV CC /usr/bin/clang-10 -ENV CXX /usr/bin/clang++-10 +ENV CC /usr/bin/clang-11 +ENV CXX /usr/bin/clang++-11 -CMD /kafe/dist/fedora/33/build-dist.sh \ No newline at end of file +CMD /kafe/dist/fedora/33/build-dist.sh diff --git a/publish.sh b/publish.sh index dd824d8..1f2fcc2 100755 --- a/publish.sh +++ b/publish.sh @@ -1,53 +1,53 @@ #!/usr/bin/env bash # EL -cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/kafe-cli-1.1.2-1.x86_64.el7.rpm -cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/libkafe-1.1.2-1.x86_64.el7.rpm -cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/libkafe-devel-1.1.2-1.x86_64.el7.rpm +cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/kafe-cli-1.1.3-1.x86_64.el7.rpm +cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/libkafe-1.1.3-1.x86_64.el7.rpm +cloudsmith push rpm kafe/libkafe/el/7 build-artifact/centos-7/libkafe-devel-1.1.3-1.x86_64.el7.rpm -cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/kafe-cli-1.1.2-1.x86_64.el8.rpm -cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/libkafe-1.1.2-1.x86_64.el8.rpm -cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/libkafe-devel-1.1.2-1.x86_64.el8.rpm +cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/kafe-cli-1.1.3-1.x86_64.el8.rpm +cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/libkafe-1.1.3-1.x86_64.el8.rpm +cloudsmith push rpm kafe/libkafe/el/8 build-artifact/centos-8/libkafe-devel-1.1.3-1.x86_64.el8.rpm # Debian -cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/kafe-cli_1.1.2_amd64.deb9.deb -cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/libkafe_1.1.2_amd64.deb9.deb -cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/libkafe-dev_1.1.2_amd64.deb9.deb +cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/kafe-cli_1.1.3_amd64.deb9.deb +cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/libkafe_1.1.3_amd64.deb9.deb +cloudsmith push deb kafe/libkafe/debian/stretch build-artifact/debian-9/libkafe-dev_1.1.3_amd64.deb9.deb -cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/kafe-cli_1.1.2_amd64.deb10.deb -cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/libkafe_1.1.2_amd64.deb10.deb -cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/libkafe-dev_1.1.2_amd64.deb10.deb +cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/kafe-cli_1.1.3_amd64.deb10.deb +cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/libkafe_1.1.3_amd64.deb10.deb +cloudsmith push deb kafe/libkafe/debian/buster build-artifact/debian-10/libkafe-dev_1.1.3_amd64.deb10.deb -cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/kafe-cli_1.1.2_amd64.deb11.deb -cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/libkafe_1.1.2_amd64.deb11.deb -cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/libkafe-dev_1.1.2_amd64.deb11.deb +cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/kafe-cli_1.1.3_amd64.deb11.deb +cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/libkafe_1.1.3_amd64.deb11.deb +cloudsmith push deb kafe/libkafe/debian/bullseye build-artifact/debian-11/libkafe-dev_1.1.3_amd64.deb11.deb # Ubuntu -cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/kafe-cli_1.1.2_amd64.ubu1804.deb -cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/libkafe_1.1.2_amd64.ubu1804.deb -cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/libkafe-dev_1.1.2_amd64.ubu1804.deb +cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/kafe-cli_1.1.3_amd64.ubu1804.deb +cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/libkafe_1.1.3_amd64.ubu1804.deb +cloudsmith push deb kafe/libkafe/ubuntu/bionic build-artifact/ubuntu-1804/libkafe-dev_1.1.3_amd64.ubu1804.deb -cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/kafe-cli_1.1.2_amd64.ubu1910.deb -cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/libkafe_1.1.2_amd64.ubu1910.deb -cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/libkafe-dev_1.1.2_amd64.ubu1910.deb +cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/kafe-cli_1.1.3_amd64.ubu1910.deb +cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/libkafe_1.1.3_amd64.ubu1910.deb +cloudsmith push deb kafe/libkafe/ubuntu/eoan build-artifact/ubuntu-1910/libkafe-dev_1.1.3_amd64.ubu1910.deb -cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/kafe-cli_1.1.2_amd64.ubu2004.deb -cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/libkafe_1.1.2_amd64.ubu2004.deb -cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/libkafe-dev_1.1.2_amd64.ubu2004.deb +cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/kafe-cli_1.1.3_amd64.ubu2004.deb +cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/libkafe_1.1.3_amd64.ubu2004.deb +cloudsmith push deb kafe/libkafe/ubuntu/focal build-artifact/ubuntu-2004/libkafe-dev_1.1.3_amd64.ubu2004.deb -cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/kafe-cli_1.1.2_amd64.ubu2010.deb -cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/libkafe_1.1.2_amd64.ubu2010.deb -cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/libkafe-dev_1.1.2_amd64.ubu2010.deb +cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/kafe-cli_1.1.3_amd64.ubu2010.deb +cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/libkafe_1.1.3_amd64.ubu2010.deb +cloudsmith push deb kafe/libkafe/ubuntu/groovy build-artifact/ubuntu-2010/libkafe-dev_1.1.3_amd64.ubu2010.deb # Fedora -cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/kafe-cli-1.1.2-1.x86_64.f31.rpm -cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/libkafe-1.1.2-1.x86_64.f31.rpm -cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/libkafe-devel-1.1.2-1.x86_64.f31.rpm +cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/kafe-cli-1.1.3-1.x86_64.f31.rpm +cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/libkafe-1.1.3-1.x86_64.f31.rpm +cloudsmith push rpm kafe/libkafe/fedora/31 build-artifact/fedora-31/libkafe-devel-1.1.3-1.x86_64.f31.rpm -cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/kafe-cli-1.1.2-1.x86_64.f32.rpm -cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/libkafe-1.1.2-1.x86_64.f32.rpm -cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/libkafe-devel-1.1.2-1.x86_64.f32.rpm +cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/kafe-cli-1.1.3-1.x86_64.f32.rpm +cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/libkafe-1.1.3-1.x86_64.f32.rpm +cloudsmith push rpm kafe/libkafe/fedora/32 build-artifact/fedora-32/libkafe-devel-1.1.3-1.x86_64.f32.rpm -cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/kafe-cli-1.1.2-1.x86_64.f33.rpm -cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/libkafe-1.1.2-1.x86_64.f33.rpm -cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/libkafe-devel-1.1.2-1.x86_64.f33.rpm +cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/kafe-cli-1.1.3-1.x86_64.f33.rpm +cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/libkafe-1.1.3-1.x86_64.f33.rpm +cloudsmith push rpm kafe/libkafe/fedora/33 build-artifact/fedora-33/libkafe-devel-1.1.3-1.x86_64.f33.rpm