You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Erwin Müller 30059a6786 Merge branch 'release/v0.10' 2 years ago
sscontrol-app-main Refactor types. 3 years ago
sscontrol-app-main-pax-test Refactor types. 3 years ago
sscontrol-app-parent Add Felix integration test using pax exam. 3 years ago
sscontrol-osgi-collectd-script-centos Add kubernetes server mock 2 years ago
sscontrol-osgi-collectd-script-collectd-5-7 Add kubernetes server mock 2 years ago
sscontrol-osgi-collectd-script-debian Add kubernetes server mock 2 years ago
sscontrol-osgi-collectd-service Rework host properties service. 2 years ago
sscontrol-osgi-command-copy Fix local tests 2 years ago
sscontrol-osgi-command-facts Rename command shell to different package. 3 years ago
sscontrol-osgi-command-fetch Rename command shell to different package. 3 years ago
sscontrol-osgi-command-replace Rename command shell to different package. 3 years ago
sscontrol-osgi-command-shell Rename command shell to different package. 3 years ago
sscontrol-osgi-command-shell-linux-openssh Fix compile error 2 years ago
sscontrol-osgi-command-shell-openssh See #4031 Fix facts. 2 years ago
sscontrol-osgi-command-template Refactor types. 3 years ago
sscontrol-osgi-debug Refactor types. 3 years ago
sscontrol-osgi-docker-script-debian See #4013: Log rotation for docker logs 2 years ago
sscontrol-osgi-docker-script-systemd Update license headers. 2 years ago
sscontrol-osgi-docker-service Update license headers. 2 years ago
sscontrol-osgi-etcd-script-debian See #4031 Fix k8s 2 years ago
sscontrol-osgi-etcd-script-upstream Add host on which to check flanneld 2 years ago
sscontrol-osgi-etcd-service Fix missing SshHost 2 years ago
sscontrol-osgi-fail2ban-script-0-9 Rework fail2ban 2 years ago
sscontrol-osgi-fail2ban-script-debian Add 3rd node. 2 years ago
sscontrol-osgi-fail2ban-service Rework fail2ban 2 years ago
sscontrol-osgi-flannel-docker-script-debian Update flannel to v0.9.1 2 years ago
sscontrol-osgi-flannel-docker-script-upstream Put nodes targets list in shared utils. 2 years ago
sscontrol-osgi-flannel-docker-service Open ports between nodes 2 years ago
sscontrol-osgi-groovy-parser Test etcd cluster 2 years ago
sscontrol-osgi-groovy-script Implement restore 2 years ago
sscontrol-osgi-groovy-types Refactor types. 3 years ago
sscontrol-osgi-hostname-script-debian Fix tests. 2 years ago
sscontrol-osgi-hostname-script-systemd Fix hostname 2 years ago
sscontrol-osgi-hostname-service Rework host properties service. 2 years ago
sscontrol-osgi-hosts-script-linux Install master on test server. 2 years ago
sscontrol-osgi-hosts-service Install master on test server. 2 years ago
sscontrol-osgi-inline Fix modules to install. 3 years ago
sscontrol-osgi-inline-linux Move replace implementation to openssh because circular dependency 3 years ago
sscontrol-osgi-k8s-backup-client Add dry-run option. 2 years ago
sscontrol-osgi-k8s-backup-script-linux See #4031 Fix dependency. 2 years ago
sscontrol-osgi-k8s-backup-service Implement backup. 2 years ago
sscontrol-osgi-k8s-base-script-upstream-debian See #4031 Fix export namespace. 2 years ago
sscontrol-osgi-k8s-base-script-upstream-linux See #4031 Fix bundle namespace. 2 years ago
sscontrol-osgi-k8s-base-service Update license headers. 2 years ago
sscontrol-osgi-k8s-cluster-script-linux See #4031 Remove not supported test. 2 years ago
sscontrol-osgi-k8s-cluster-service See #4031 Fix test. 2 years ago
sscontrol-osgi-k8s-from-repository-script-linux See #4031 Fix dependencies. 2 years ago
sscontrol-osgi-k8s-from-repository-service Fix cluster for service. 2 years ago
sscontrol-osgi-k8s-glusterfs-heketi-script-debian See #4031 Fix dependencies. 2 years ago
sscontrol-osgi-k8s-glusterfs-heketi-service See #4031 Fix test. 2 years ago
sscontrol-osgi-k8s-kubectl-linux Implement restore 2 years ago
sscontrol-osgi-k8s-master-script-debian See #4031 Fix export namespace. 2 years ago
sscontrol-osgi-k8s-master-service Fix test. 2 years ago
sscontrol-osgi-k8s-node-script-debian See #4031 Fix export namespace. 2 years ago
sscontrol-osgi-k8s-node-service See #4007 Add cluster join. 2 years ago
sscontrol-osgi-k8s-restore-script-linux Add dry-run option. 2 years ago
sscontrol-osgi-k8s-restore-service Add dry-run option. 2 years ago
sscontrol-osgi-parent Fix dependency conflict. 2 years ago
sscontrol-osgi-registry-docker-script-linux Rework from-repository for Linux. 2 years ago
sscontrol-osgi-registry-docker-service Update registry-docker for Debian Stretch 2 years ago
sscontrol-osgi-repo-git-script-debian Update repo-git for Debian Stretch 2 years ago
sscontrol-osgi-repo-git-service From-repository service 2 years ago
sscontrol-osgi-rkt-script-deb Fix rkt debian package 2 years ago
sscontrol-osgi-rkt-script-debian Update rkt to v1.29.0 2 years ago
sscontrol-osgi-rkt-service Update rkt 2 years ago
sscontrol-osgi-scr-parent See #4031 Removed not supported icinga2 2 years ago
sscontrol-osgi-script-runner Rename ssh, fix tests. 2 years ago
sscontrol-osgi-script-runner-test Rework fail2ban 2 years ago
sscontrol-osgi-services-properties Rework host properties service. 2 years ago
sscontrol-osgi-services-repository Add dry-run option. 2 years ago
sscontrol-osgi-shell-linux Rename ssh, fix tests. 2 years ago
sscontrol-osgi-shell-service See #4031 Fix dependency. 2 years ago
sscontrol-osgi-shell-test Add dry-run option. 2 years ago
sscontrol-osgi-ssh-script-linux Fix test 2 years ago
sscontrol-osgi-ssh-service Test etcd cluster 2 years ago
sscontrol-osgi-sshd-script-debian See #4031 Fix namespace. 2 years ago
sscontrol-osgi-sshd-script-openssh See #4031 Fix bundle namespace. 2 years ago
sscontrol-osgi-sshd-service Update license headers. 2 years ago
sscontrol-osgi-types-app Refactor types. 3 years ago
sscontrol-osgi-types-cluster Feature #4006 Use cluster with from-repository. 2 years ago
sscontrol-osgi-types-host Add kubernetes server mock 2 years ago
sscontrol-osgi-types-misc Configure feature 3 years ago
sscontrol-osgi-types-parser Refactor types. 3 years ago
sscontrol-osgi-types-registry Rework convert to URI. 3 years ago
sscontrol-osgi-types-repo Update license headers 3 years ago
sscontrol-osgi-types-run Refactor types. 3 years ago
sscontrol-osgi-types-ssh Update license headers. 2 years ago
sscontrol-osgi-utils-centos Fix compile errors 2 years ago
sscontrol-osgi-utils-debian See #4007 Use debian utils to install kubeadm. 2 years ago
sscontrol-osgi-utils-st-base64renderer Add url and uri base64 2 years ago
sscontrol-osgi-utils-st-durationrenderer Update license headers. 2 years ago
sscontrol-osgi-utils-st-miscrenderers Rework etcd 2 years ago
sscontrol-osgi-utils-system-mappings Fix system selection. 2 years ago
sscontrol-osgi-utils-systemd Delay start of etcd 2 years ago
sscontrol-osgi-utils-tls Rework kubectl. 3 years ago
sscontrol-osgi-utils-ufw-linux See #4031 Removed not supported icinga2 2 years ago
sscontrol-osgi-zimbra-script-centos Rework Zimbra 2 years ago
sscontrol-osgi-zimbra-service Rework host properties service. 2 years ago
test Add script parser. 4 years ago
.gitignore Check for unset targets. 3 years ago
LICENSE-2.0.txt Add globalpom-groovy parent. 4 years ago
README.md Restore ddescription of the project. 4 years ago
header.txt Add globalpom-groovy parent. 4 years ago
pom.xml Fix modules to install. 3 years ago

README.md

RoboBee - Simple Server Control

Introduction

RoboBee overview.

Idea

The idea to create a new server configuration tool was born out of a simple concideration, the configuration of each new server is always the same for the same stack, and the stack is always similar, i.e. web server, database server, email server, DNS server. So, I asked myself, what if I could just tell the computer to install and configure me the stack on the server, without for me to actually have any knowledge how to configure it. The user should be able to tell the computer to just install and setup, for example, a web-server without to have the actual knowledge how to do it. All the knowledge how to install and configure the server should be contained in the application that is installing and configures the server.

Expert Knowledge

RoboBee will contain expert knowledge to install and configure the server with the needed services and applications. The expert knowledge will contain best practices in regards to security and it will updated regularly to fix bugs and to react to new security issues. To ensure a constant flow of updated expert knowledge, the OSGi technology will be used for RoboBee. OSGi container allows for seamlessly updates of the modules that contain the expert knowledge from a central repository.

OSGi Container

There are multiple OSGi container implementations (Apache Felix, Equinox OSGi, Knopflerfish, etc.) and RoboBee will be able to run on those, but also it will provide its own container, Karaf. Based on the Karaf container, RoboBee can be installed on a GNU/Linux server just as any other application and run as a service in the background. The communication between RoboBee and the user is done via a SSH connection and the OSGi console.

Domain Specific Language

The user is expected to write simple scripts in a domain specific language (DSL) based on Groovy that communicate the wishes of the user to RoboBee. A syntax must be followed that groups the server services into categories, like web server, DNS server, mail server, etc. and also have application categories like Wordpress, Drupal, Postfix, MySQL, etc. The user is assumed to have only very basic knowledge of those services and applications, for example, the user should know that the MySQL database server have an administration user, provides databases and have users that have permissions to create tables in those databases. But this kind of knowledge is not expert knowledge and is expected from the user to have. Expert knowledge in this case would be how to install the MySQL server, configure the server, create databases and users on the server and grant the users permissions to those databases.

Vision of the Solution

Vision Statement

The RoboBee (aka Simple Server Control) is about to fully configure a server by defined profiles and script files using a domain specific language (DSL). The goal of the project is to follow high level user specifications to install and configure specific services on the server. RoboBee will follow the “Ask, don’t tell”, the “Convention over configuration” and the “Principle of least knowledge” philosophies and principles.

“Ask, don’t tell”,

the user is expected to ask the different RoboBee services to install and configure the server. The services will install and configure the server according to the wishes of the user and will not expect from the user to know how to do it.

“Convention over configuration”,

the user is expected to follow the convention set from RoboBee to reduce the amount of needed configuration. Basically, to follow configuration file name conventions, and to follow protected configuration of the server.

“Principle of least knowledge”,

the user is not expected to have any expert knowledge of how to install or configure the server, all expoert knowledge is contained in RoboBee.

Major Features

F1-a. Install Server Services,

installs server services on the server. Server services are usually DNS server to resolve DNS names (Bind, MaraDns), Httpd server to serve websites (Apache, Tomcat), proxy server for caching (Nginx, Squid), firewall to block harmful packages, MTA (Postfix, Exim, qmail), MDA (Dovecot, Courier), etc.

F1-b. Configures Server Services,

configures server services on the server according to the whishes to the user. The manually edited configuration will be preserved as far as possible.

F2-a. Installs Applications,

installs server applications that are run on the server. Applications are usually run on already installed and configured server services like Apache or Tomcat. Those are, for example, Wordpress, Drupal, Squirrelmail, Roundcube, Redmine, JIRA, etc.

F2-b. Installs Applications,

configures the applications on the server according to the whishes to the user. The manually edited configuration will be preserved as far as possible.

F3. Profiles,

the system dependent configuration is stored in profiles and can be selected without the need to modify the script files. Different systems have different commands to configure the server (SysVInit, upstart, systemd, etc.) and have different paths of the commands and configuration files.

Dependencies

D1. Java,

the underlying technology of the project.

D2. OSGi,

the underlying technology of the project. RoboBee is seperate the different services in bundles that can be started and updated at run-time.

D3. Groovy,

the framework to parse the domain specific language of the script files.

D4. StringTemplate,

the framework to create service configuration files.

Related Projects

Puppet,

is a configuration management for systems automation and uses Json data structures in manifests files, but also uses a declarative domain specific language (DSL) based on Ruby. It is developed by Puppet Labs

Chef,

“[is a] configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration “recipes”. Chef is used to streamline the task of configuring and maintaining a company’s servers, and can integrate with cloud-based platforms such as Internap, Amazon EC2, Google Cloud Platform, OpenStack, SoftLayer, Microsoft Azure and Rackspace to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems, with features and pricing for the respective ranges.”

https://en.wikipedia.org/wiki/Chef_(software)

CFEngine,

“is an open source configuration management system, written by Mark Burgess. Its primary function is to provide automated configuration and maintenance of large-scale computer systems, including the unified management of servers, desktops, consumer and industrial devices, embedded networked devices, mobile smartphones, and tablet computers.”

https://en.wikipedia.org/wiki/CFEngine

Salt,

“SaltStack platform or Salt is a Python-based open source configuration management software and remote execution engine. Supporting the “Infrastructure as Code” approach to deployment and cloud management.”

https://en.wikipedia.org/wiki/Salt_(software)

Ansible,

“a free-software platform for configuring and managing computers, combines multi-node software deployment, ad hoc task execution, and configuration management. It manages nodes (which must have Python 2.4 or later installed on them) over SSH or over PowerShell. Modules work over JSON and standard output and can be written in any programming language. The system uses YAML to express reusable descriptions of systems.”

https://en.wikipedia.org/wiki/Ansible_(software)

License

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.