All Projects → DomainDrivenArchitecture → dda-serverspec-crate

DomainDrivenArchitecture / dda-serverspec-crate

Licence: Apache-2.0 license
A crate for testing multiple server nodes against a given spec. Test can be executed local, remote against servers or you may even use remote tested servers as probes.

Programming Languages

clojure
4091 projects
python
139335 projects - #7 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to dda-serverspec-crate

dda-pallet
dda-pallet is a DevOps system for cloud image provisioning, test driven DevOps and continuous server configuration. dda-pallet allows to build your own abstraction layer very easily as pure data to data transformation while providing a stable low level API. It is modular, testable and well-prepared for the handling of configuration data.
Stars: ✭ 22 (+69.23%)
Mutual labels:  pallet, dda-pallet
Jsrsasign
The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES JSON Web Signature/Token in pure JavaScript.
Stars: ✭ 2,760 (+21130.77%)
Mutual labels:  certificate
Sslfie
Generate self-signed x.509 certificates for use with SSL/TLS
Stars: ✭ 169 (+1200%)
Mutual labels:  certificate
A December Of Algorithms 2019
A December of Algorithms is a small collection of algorithms to implement this December. Finish it all to get a certificate. 🎄
Stars: ✭ 192 (+1376.92%)
Mutual labels:  certificate
Nginx Proxy Automation
Automated docker nginx proxy integrated with letsencrypt.
Stars: ✭ 2,302 (+17607.69%)
Mutual labels:  certificate
Ssl exporter
Exports Prometheus metrics for SSL certificates
Stars: ✭ 211 (+1523.08%)
Mutual labels:  certificate
Mutual Tls Ssl
🔐 Tutorial of setting up Security for your API with one way authentication with TLS/SSL and mutual mutual authentication for a java based web server and a client with both Spring Boot. Different clients are provided such as Apache HttpClient, OkHttp, Spring RestTemplate, Spring WebFlux WebClient Jetty and Netty, the old and the new JDK HttpClient, the old and the new Jersey Client, Google HttpClient, Unirest, Retrofit, Feign, Methanol, vertx, Scala client Finagle, Featherbed, Dispatch Reboot, AsyncHttpClient, Sttp, Akka, Requests Scala, Http4s Blaze, Kotlin client Fuel, http4k, Kohttp and ktor. Also other server examples are available such as jersey with grizzly. Also gRPC examples are included
Stars: ✭ 163 (+1153.85%)
Mutual labels:  certificate
Websockify
Websockify is a WebSocket to TCP proxy/bridge. This allows a browser to connect to any application/server/service.
Stars: ✭ 2,942 (+22530.77%)
Mutual labels:  certificate
Routinator
An RPKI Validator written in Rust
Stars: ✭ 215 (+1553.85%)
Mutual labels:  certificate
Acme Plugin
🔏 ACME protocol plugin for Ruby on Rails applications
Stars: ✭ 190 (+1361.54%)
Mutual labels:  certificate
Pspki
PowerShell PKI Module
Stars: ✭ 189 (+1353.85%)
Mutual labels:  certificate
Google Mobile Web Specialist Certification Guide
If you are looking for becoming a Mobile Web Specialist by Google, this guide will be your best friend in your journey
Stars: ✭ 183 (+1307.69%)
Mutual labels:  certificate
Bubbly
Better SSL in Nginx in 10 minutes. Configuration files and setup scripts for Certbot.
Stars: ✭ 213 (+1538.46%)
Mutual labels:  certificate
Lhttps
Create https for local development environment or localhost.
Stars: ✭ 172 (+1223.08%)
Mutual labels:  certificate
Acme Nginx
python acme client for nginx
Stars: ✭ 248 (+1807.69%)
Mutual labels:  certificate
Aws Csa Notes 2018
My AWS Certified Solutions Architect Associate Study Notes!
Stars: ✭ 167 (+1184.62%)
Mutual labels:  certificate
Certificatecamera
证件相机-证件拍照及裁剪
Stars: ✭ 187 (+1338.46%)
Mutual labels:  certificate
Putty Cac
Windows Secure Shell Client With Support For Smart Cards & Certificates
Stars: ✭ 192 (+1376.92%)
Mutual labels:  certificate
aws-developer-associate-certificate
Note to pass the AWS Developer Associate Exam
Stars: ✭ 53 (+307.69%)
Mutual labels:  certificate
Check ssl cert
check_ssl_cert is a shell script (that can be used as a Nagios plugin) to check the CA and validity of an X.509 certificate
Stars: ✭ 248 (+1807.69%)
Mutual labels:  certificate

dda-serverspec-crate

Clojars Project Build Status

DeltaChat chat over e-mail | team@social.meissa-gmbh.de [email protected] | Website & Blog

Jump to

Compatibility
Features
Local-remote-testing
Usage Summary
Targets-config-example
Serverspec-config-example
Reference-Targets
Reference-Convention-API
Reference-Infra-API
License

Compatibility

dda-pallet is compatible with the following versions

  • pallet 0.9
  • clojure 1.10
  • (x)ubunutu 18.04 / 20.04

Features

The dda-serverspec-crate allows you to specify expected state for target-systems and test against their current state. dda-serverspec-crate provides tests for:

  • execution against localhost, remote hoste or multiple remote hosts.
  • files or folders presence / absence, plus specific FilePermissions/group/owner.
  • packages are installed / uninstalled
  • services listening to ip & port
  • validity of local certificate files
  • validity of certificates by https - maybe remote or localhost.
  • network connectivity to remote systems

Local-remote-testing

There are two modes of testing targets, either local or remote. Local tests are executed on the system the jar is running on. Local tests are executed by the current user.

ServerSpecLocalWhitebox

Remote tests are collection state (we name it facts) from target system on compare these facts against expectation on the system executing the dda-serverspec jar. Facts are collected via ssh & bash. Test utils, needed, can be installed by using the installation phase (use --install-dependencies on the command line).

ServerSpecRemoteWhitebox

Usage Summary

  1. Download the jar-file from the releases page of this repository (e.g. curl -L -o dda-serverspec-standalone.jar https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/releases/download/1.2.1/dda-serverspec-standalone.jar)
  2. Create the files serverspec.edn (Convention-Schema for all your tests) and target.edn (Schema for Targets to be provisioned) according to the reference and our example configurations. Please create them in the same folder where you've saved the jar-file. For more information about these files refer to the corresponding information below.
  3. Start testing:
java -jar dda-serverspec-standalone.jar --targets targets.edn serverspec.edn

If you want to test on your localhost you don't need a target config.

java -jar dda-serverspec-standalone.jar serverspec.edn

Configuration

The configuration consists of two files defining both WHERE to test and WHAT to test.

  • example-targets.edn: describes on which target system(s) the software will be installed
  • example-ide.edn: describes which software/packages will be installed

You can download examples of these configuration files from
example-targets.edn and
example-serverspec.edn respectively.

Targets config example

Example content of the file, example-targets.edn:

{:existing [{:node-name "test-vm1"          ; semantic name
             :node-ip "35.157.19.218"}      ; the ip4 address of the machine to be provisioned
            {:node-name "test-vm2"
             :node-ip "18.194.113.138"}]
 :provisioning-user
  {:login "initial"                         ; account used to provision
   :password {:plain "secure1234"}}}        ; optional password, if no ssh key is authorized

Serverspec config example

Example content of the file, example-serverspec.edn:

{:netstat [{:process-name "sshd" :port "11" :running? false}
           {:process-name "sshd" :port "22" :ip "0.0.0.0" :exp-proto "tcp"}
           {:process-name "sshd" :port "22" :ip "::" :exp-proto "tcp6"}
           {:process-name "dhclient" :port "68" :ip "0.0.0.0"}]
 :file [{:path "/root/.bashrc" :user "root"}
        {:path "/etc"}
        {:path "/absent" :exist? false}
        {:path "/root/.profile" :mod "644" :user "root" :group "root"}
        {:path "/etc/resolv.conf" :link-to "../run/resolvconf/resolv.conf"}]
 :netcat [{:host "www.google.com" :port 80}
          {:host "www.google.c" :port 80 :reachable? false}]
 :package [{:name "test" :installed? false}
           {:name "nano"}]
 :http [{:url "https://domaindrivenarchitecture.org"
         :expiration-days 15}]
 :iproute [{:ip "1.1.1.1" :via "172.17.0.1"}
           {:hostname "stackoverflow.com" :via "172.17.0.1"}]}

Watch log for debug reasons

In case any problems occur, you may want to have a look at the log-file: less logs/pallet.log

Reference

Some details about the architecture:

  • target: How targets can be specified
  • Convention-Level-API: The high level API with built-in conventions.
  • Infra-Level-API: If these conventions don't fit your needs, you can use our low-level API (infra) and easily realize your own conventions.

Targets

You can define provisioning targets using the targets-schema

Convention API

You can use our conventions as a starting point: see donvention reference

Infra API

Or you can build your own conventions using our low level infra API. We will keep this API backward compatible whenever possible: see infra reference

License

Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 meissa GmbH Published under apache2.0 license Pls. find licenses of our subcomponents here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].