Skip to content

Commit

Permalink
Release
Browse files Browse the repository at this point in the history
  • Loading branch information
Addvilz committed Oct 5, 2020
1 parent 0e1b7a2 commit 1c4dec8
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 60 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
* Mon Oct 5 2020 Matiss Treinis <mrtreinis@gmail.com> - 1.1.3
- Fix build compatibility with libssh
- Fix OSX build

* Thu Aug 6 2020 Matiss Treinis <mrtreinis@gmail.com> - 1.1.2
- Add support for .kafeignore files.

Expand Down
40 changes: 20 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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).

<sup>1</sup> - EL7 does not ship with Lua 5.3. We currently use
<sup>1</sup> - 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.

Expand All @@ -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.

Expand Down Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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.
Expand All @@ -209,15 +209,15 @@ 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

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
Expand All @@ -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.

Expand Down Expand Up @@ -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,
Expand All @@ -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.
Expand Down Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion build-dist.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
for f in build-artifact/fedora-33/*; do mv -v "$f" $(echo "$f" | sed "s/\.rpm/\.f33\.rpm/"); done
6 changes: 3 additions & 3 deletions dist/fedora/33/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
CMD /kafe/dist/fedora/33/build-dist.sh
72 changes: 36 additions & 36 deletions publish.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 1c4dec8

Please sign in to comment.