A RedHat-related Blog for Our Partners
Header

Thema unseres vergangenen Avnet Red Hat Stammtisch am 17.11. war IoT. Ziel des Workshops war den Teilnehmern (für die meisten ein Erstkontakt mit der Materie) zu zeigen mit welch einfachen Mitteln und Wissen kleine IoT Projekte zu realisieren sind.

Als Plattform wurde der ESP8266 Chip eingesetzt. Die Teilnehmer waren aufgefordert ein IoT-Projekt mit zur Verfügung gestellten Sensoren (Temperatur, Feuchtigkeit, GPS, Gyro) zu entwickeln und die Daten per HTTP Post auf einen Webserver zu laden, der die Daten in einer MongoDB speichert. Anschliessend wurden die Daten aus der Datenbank ausgelesen und als Graphik auf einem Webserver dargestellt. Alle Online Resourcen liefen auf der Red Hat Openshift Plattform.

Erste Aufgabe war es die Entwicklungsumgebung (wir wählten Arduino) auf den Rechnern zu installieren und mit dem ESP8266 Entwicklungsboard zu verbinden.

img_20161121_131715Anschliessend wurden die ESP8266 und die Sensoren auf den Breadboards verkabelt und mit den entsprechenden Software Libraries eingebunden.

sensorscables

Die Arduino-Plattform stellt die meisten Sketches fix und fertig zur Verfügung und somit sind die Sensoren schnell in das Projekt eingebunden.

Die nächste Herausforderung war die durch die Sensoren gesammelten Daten via HTTP POST auf den bereitgestellten Webserver mit MongoDB hochzuladen.

void post(String group, String sensor, String timestamp, String value)
{
  String postData = "{\"group\": \"" + group + "\", \"sensor\": \"" + sensor + "\", \"timestamp\": \"" + timestamp + "\", \"value\": \"" + value + "\"}";

  Serial.print("connecting to ");
  Serial.println(host);

  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

Auf dem Webserver lief das Python Eve Plugin, welches einerseits eine einfache und schnell zu implementierende REST-Funktionalität bietet und andererseits eine MongoDB, die die Daten speichert.

def worker_eve():
    app = Eve()
    app.run(host = '0.0.0.0', port=8080)

Ein weiteres Pythonscript auf dem REST-Server generiert aus den gespeicherten Daten die graphische Darstellung der gemessenen Werte.

def worker_makeimage():
    groups = ['a', 'b', 'c', 'd', 'e']
    mongohost = os.getenv('IOT_DB_SERVICE_HOST')

    client = MongoClient('mongodb://iot-db:iot-db@' + mongohost + ':27017/iot-db')
    db = client['iot-db']
    events = db['iot-db']

    while True:
        for group in groups:
            timestamps = []
            values = []

            for event in events.find({'group': group}):
                timestamp = event['_updated']
                timestamps.append(timestamp.strftime('%Y-%m-%d %H:%M'))
                value = event['value']
                values.append(float(value))

            plot(group, timestamps, values)
	time.sleep(60)

Hier der Temperaturverlauf während des Workshops:

group_a

Danke allen Teilnehmern und natürlich auch der Cloudwerkstatt und der IT&Tel, die die Openshift Plattform zur Verfügung gestellt haben.

Vagrant setup on RHEL7

November 21st, 2016 | Posted by Dorian in Avnet General | Technical News - (0 Comments)

Vagrant ist ein Toolset, dass es Entwicklern erlaubt schnell und einfach reproduzierbare und portierbare Umgebungen für Softwareentwicklung zu erstellen. Vagrant gibt es für die Betriebsystem Linux, OSX und Windwos und es unterstützt neben QEUM/KVM u.a. auch Vmware und Virtualbox.

Dieser Guide folgt dem Konzept welches unter


https://access.redhat.com/documentation/en/red-hat-container-development-kit/2.1/installation-guide/#installing_container_development_kit_on_red_hat_enterprise_linux

dargestellt wird. Als Virtualisierungplattform soll natürlich Qemu/KVM zum Einsatz kommen.

Installiert wird auf einem registrierten Red Hat System; hier die Schritte, die zur Registrierung notwendig sind und um die benötigten Repositories zu enablen.


# subscription-manager register --auto-attach --username=user --password=passwd
# subscription-manager repos --enable rhel-server-rhscl-7-rpms
# subscription-manager repos --enable rhel-7-server-optional-rpms

Nach der erfolgreichen Registrierung müssen die Repositories noch eingebunden werden. Für diese Demoinstallation werden die GPG-Checks disabled; was für den Produktionsbetrieb nicht zu empfehlen ist.


# yum-config-manager --add-repo=http://mirror.centos.org/centos-7/7/sclo/x86_64/sclo/
# echo "gpgcheck=0" >> \
/etc/yum.repos.d/mirror.centos.org_centos-7_7_sclo_x86_64_sclo_.repo

Mit dem nachfolgendem System werden die notwendigen Resourcen zur Virtualisierung installiert und anschliessend gestartet.


# yum groupinstall "Virtualization Host"
# systemctl start libvirtd
# systemctl enable libvirtd

Die Installation von Vagrant erfolgt mit:


# yum install sclo-vagrant1 sclo-vagrant1-vagrant-libvirt \
sclo-vagrant1-vagrant-libvirt-doc

Im Centos Repository sind die aktuellsten Versionen von Vagrant vorhanden. Diese sind auf Red Hat derzeit noch nicht supported. Somit erfolgt mit dem nächsten Schritt ein “downgrade” auf die supportete Version.


# yum downgrade sclo-vagrant1-vagrant-1.7.4

Zum Abschluss werden die Resourcen nochmals restartet und die notwendigen Berechtigungen angelegt, sprich jeder User, der das Tool verwenden will, muss in die Gruppe vagrant aufgenommen werden.


# systemctl restart libvirtd
# systemctl restart polkit
# usermod -a -G vagrant

logout / login as username


$ grep vagrant /etc/group
vagrant:x:978:joe
$ id
uid=1001(joe) gid=1001(joe) groups=1001(joe),978(vagrant)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ scl enable sclo-vagrant1 bash

Die Installation verlief erfolgreich, wenn der Aufruf des folgenden Kommandos ein Ergebnis liefert.


$ vagrant global-status
id name provider state directory
--------------------------------------------------------------------
There are no active Vagrant environments on this computer! Or,
you haven't destroyed and recreated Vagrant environments that were
started with an older version of Vagrant.

Nun können aus dem Repository https://atlas.hashicorp.com/boxes/search Konfigurationsfiles für virtuelle Maschinen heruntergeladen.

Das Wichtigste zu Linux-Container

November 18th, 2016 | Posted by SuzanHeim in Technical News - (0 Comments)

Es ist kein Geheimnis, dass Container zu den wichtigsten neueren IT-Trends zählen. Das Thema Linux-Container ist nicht mehr völlig neu, aber immer noch mit zahlreichen Unklarheiten verbunden. Daher hier einige Informationen zu Linux-Container:

  • Container sind in sich abgeschlossene Entitäten

Trotz ihres Namens sind Container nicht komplett in sich geschlossene Einheiten. Jedes Container-Gastsystem nutzt dasselbe Host-Betriebssystem und dessen Services. Das reduziert zwar den Overhead und verbessert die Performance, kann aber andererseits auch potenzielle Herausforderungen hinsichtlich Sicherheit oder Interoperabilität mit sich bringen.

  • Container ergänzen Virtualisierung

Container werden Virtualisierungslösungen keineswegs komplett ersetzen bzw. überflüssig machen, aber sie eignen sich für verschiedene Anwendungsszenarien.

Container-Lösungen sind ideal bei:
Infrastrukturen mit großer Anzahl von Applikationsinstanzen, von Cloud-nativen Microservices bis zu vorhandenen Legacy-Systemen und
Applikationen, die aus Komponenten bestehen und einer Microservices-Architektur folgen

  • Container sind universell portabel

Container können nicht unabhängig betrieben werden, sondern nur in Abhängigkeit vom Host-Betriebssystem-Kernel und den damit verbundenen Services. Um eine vollständige Portabilität gewährleisten zu können, muss eine integrierte Plattform für die Applikationsbereitstellung vorhanden sein, die auf offenen Standards basiert.

  • Container sind sicher

Bei zwei physischen Maschinen ist es möglich, diese vom Netzwerk zu isolieren; fällt eine aus oder wird sie mit einem Virus infiziert, bleibt das andere System geschützt. In einer Container-Umgebung hingegen wird der Betriebssystem-Kernel auf dem Host-System von allen Containern genutzt. Die damit einhergehenden Sicherheitsrisiken liegen auf der Hand. Daher empfehlen sich Container-Scanner zur einfachen Überprüfung von Container-Inhalten.

  • Container heißt Docker

Vielfach wird die Container-Technologie mit Docker gleichgesetzt. Das Docker-Format hat sich zwar inzwischen als der De-facto-Standard bei Linux-Containern im Markt weitgehend durchgesetzt, aber die Docker-Nutzung erfordert deutlich mehr, gerade im Hinblick auf Aspekte wie Sicherheit, Orchestrierung oder Management. Hier sind dann zusätzliche Lösungen wie Red Hat CloudForms unverzichtbar.

Was genau Container sind und wie sie verwendet werden erfahren Sie hier

Mit der neuesten Version der OpenShift Container Platform geht Red Hat einen weiteren Schritt in Richtung DevOps und Skalierbarkeit von Applikationen.

In der neuen Version wurden maßgebliche Verbesserung in der Automation des Entwicklungszyklus von Anwendungen, neue Continuous-Delivery-Pipelines auf Grundlage des Jenkins-Pipeline-Projekts sowie optimierte Dashboards für Entwickler bereitgestellt, welche eine einheitliche Sicht auf Pipelines von Anwendungen zeigen.

Ein weiteres neues Feature ist die Möglichkeit von Softwarebereitstellung im großen Maßstab. Eine Anwendung kann nun über beispielsweise 1000 Knoten innerhalb eines Clusters betrieben werden. Mit der neuen Version der OpenShift Container Platform ist es, neben der Möglichkeit der Unterstützung neuer Applikationen, auch möglich, Legacy-Anwendungen in Hybrid-Cloud-Umgebungen zu betreiben.

Red Hat OpenShift Container Platform 3.3 steht zum Download bereit.

In der neuesten Version hat Red Hat sein Produkt Cloud Suite (https://www.redhat.com/cms/managed-files/red-hat-cloud-suite-infographic-v2-1050×562.gif) um das Tool QuickStart Cloud Installer ergänzt.

Mit einer webbasierten Benutzeroberfläche besteht nun die Möglichkeit, in durchschnittlich weniger als vier Stunden eine vollständig vorkonfigurierte Private-Cloud Umgebung bereitzustellen.

Vorhandene Software wird hierbei nahtlos in den Red Hat Satellite Server integriert.

Der Red Hat QuickStart Cloud installer ist ab sofort innerhalb der Subskriptionen für Red Hat Cloud Suite und Red Hat Cloud Infrastructure verfügbar.

A little overview of storage protocols and where they will go in the future according to a Gartner survey (https://www.gartner.com/doc/reprints?id=1-3CQPTF5&ct=160726&st=sb)

 

storage_protocol_comparison

Block Storage

  • Snapshot Backups
  • Volume Replication
  • Volume Encryption through Dashboard

Compute

  • libosinfo: allows users to set the os_name image property to a valid short ID such as rhel7 or winxp to optimize guest performance
  • placement of sibling threads:
    • prefer – Default, prefers placing guest vCPUs on sibling threads where they are available. Host may or may not have SMT support.
    • isolate – Isolates threads placing guest vCPUs on different physical cores. On systems with SMT support ensures that no vCPUs from other guests are placed on those cores.
    • require – Requires the use of thread siblings. The host must have SMT support.

Image Service

  • Improved Image Signing and Trust
  • Volume Back End Upload/Download

Networking

  • Role-based Access Control (RBAC) for QoS policies
  • RBAC for External Networks
  • Purge a Project’s Networking: neutron purge command to delete all the neutron resources that once belonged to a particular project

Technolofy Previews

  • Google Cloud storage backup driver (Block Storage)
  • Manila: Shared File System Service
  • At-Rest Encryption (Object Storage)

RHEV

Red Hat Virtualization 4 ist die neueste Generation der hochperformanten Virtualisierungslösung auf Basis von offenen Standards und bietet neue und optimierte Funktionen

  • Leistungsstarker Hypervisor
    • Vereinfacht Installation von System-Packages und Treiber-Updates
    • Besserer Hardware-Support bei der Konfigurationmanagement-Integration
  • Neue offene API Management Plattform
    • Zentralisierung und Vereinfachung des Netzwerkmanagements
    • Kommunikation mit externen Systemen möglich
  • Erweitertes System-Dashboard
    • Liefert umfassenden Überblick über virtualisierte Ressourcen und Infrastrukturen
    • Probleme können leichter untersucht und beseitigt werden
  • Zusätzliche Automatisierungsfunktionen
    • Storage Image Uploader
    • Erweitere Live-Migartionsoptionen

RHEV Hypervisor

Weitere Informationen finden sie hier >

Mit Wirkung zum 20.Juli 2016 kündigt Red Hat die Verfügbarkeit von Ansible Tower 3, die neueste Version der agentenlosen Automatisierung, an.

In der neuen Version wartet Ansible u.a. mit den folgenden Features auf:

  • Optimiertes Interface für einfacheres Management von komplexen Umgebungen und höhere Produktivität.
  • Eine integrierte Benachrichtigungsfunktion mit der Möglichkeit, Benachrichtigungen zielgerichtet über verschiedene Kanäle wie z.B. Mail, IRC; HipChat und Slack zu verbreiten.
  • Eine einfachere Zuweisung von Befugnissen für rollenbasierte Zugriffskontrollen und einfacheres delegieren zwischen verschiedenen Usern und Teams.
  • Erweiterte Funktionen für Netzwerkmanagement.
  • Tiefere Integration mit weiteren Red Hat Produkten wie z.B. Cloudforms für das Management von hybriden Cloudumgebungen und Red Hat Satellite.

Python 3 in Redhat 7

July 20th, 2016 | Posted by Dorian in Technical News - (0 Comments)

Derzeit ist Python 2.7 immer noch Standard in Red Hat 7 und wird bis zum Ende des Red Hat 7 Live Cycles supported (30. Juni 2024).

Für einige Entwickler ist es aber interessant schon mit einer neueren Version (z.B. Python 3.4) zu testen. Ein Parallelbetrieb von beiden Varianten ist möglich und der Weg dorthin wird im Folgenden beschrieben.

In der RHSCL (Red Hat Software Collection Library) findet man die aktuelle Version, z.B.:

Einbinden der Software Collection Library

Aktivieren der yum-Repositories; die folgenden werden benötigt:

  • rhel-server-rhscl-7-rpms
  • rhel-server-rhscl-7-debug-rpms
  • rhel-server-rhscl-7-source-rpms
  • rhel-server-rhscl-7-eus-rpms
  • rhel-server-rhscl-7-eus-debug-rpms
  • rhel-server-rhscl-7-eus-source-rpms

for i in rhel-server-rhscl-7-rpms rhel-server-rhscl-7-debug-rpms rhel-server-rhscl-7-source-rpms rhel-server-rhscl-7-eus-rpms rhel-server-rhscl-7-eus-debug-rpms rhel-server-rhscl-7-eus-source-rpms
  do subscription-manager repos --enable $i
  done


check ob die Repositories aktiviert sind:

subscription-manager repos| grep -B 3 'Enabled:   1'

----- snip -----
Repo ID: rhel-server-rhscl-7-eus-source-rpms Repo Name: Red Hat Software Collections Source RPMs for Red Hat Enterprise Linux 7 RHEL 7 Server EUS Repo URL: https://cdn.redhat.com/content/eus/rhel/server/7/$releasever/$basearch/rhscl/1/source/SRPMS Enabled: 1 -- Repo ID: rhel-server-rhscl-7-eus-debug-rpms Repo Name: Red Hat Software Collections Debug RPMs for Red Hat Enterprise Linux 7 RHEL 7 Server EUS Repo URL: https://cdn.redhat.com/content/eus/rhel/server/7/$releasever/$basearch/rhscl/1/debug Enabled: 1 --
----- snip -----
yum search python yum -y install rh-python35

Aktivieren der Python 3 Umgebung

bash# scl enable rh-python35 bash
bash# python
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Testen mit beiden Versionen

scl enable python27 "python script.py"
scl enable python34 "python script.py"