KI für DevOps-Engineers – Teil 1: Die Grundlagen von DevOps-KI
DevOps ist ein entscheidender Erfolgsfaktor in der Softwareentwicklung, und wir sind definitiv alle auf die eine oder andere Weise auf KI gestoßen. Eine
Chef Automate stellt eine Plattform zur Verfügung, die es Entwicklern wie auch den Teams, die für Betrieb und Sicherheit zuständig sind, eine einheitliche Sicht auf die Applications und Infrastruktur Landschaft in einem Unternehmen zu bekommen. Chef Automate bietet hierzu auch die Möglichkeit multiple Datenzenren sowie auch Cloud Provider in diese Sicht einzubeziehen und so ein ganzheitliches Bild zu vermitteln.
Chef Automate bietet so zentral die Darstellung aber auch Analytik für Infrastruktur Automatisierung, die durch weitere Chef Technologien unterstützt wird. Chef Habitat wird hier für Paketierung und Automatisierung der Applikationen, Chef Infra für das Konfigurations Management verwendet und Chef Inspec findet Anwendung für die Sicherheits und Konformitäts Automatisierung. So ist Chef Automate messbar in der Lage die Geschwindigkeit von Software Auslieferungen als auch Effizienz zu unterstützen und dabei das Riskio zu minimieren.
Für die ersten Schritte wird im folgenden Vagrant verwendet um eine lokale Test-Installation von Chef Automate zu erstellen. Dies bedarf im Hintergrund einer Virtualisierung wie Virtualbox oder VMWare Fusion. Am einfachsten ist es hier einfach Virtualbox zu verwenden, da diese simpel zu installieren und zudem mit keinerlei Kosten verbunden ist. In diesen ersten Schritten werden auch nur die Kompatibilitätssicherung und Visualisierung beleuchtet.
Um die Installation zu starten bedarf es nur dieser Vagrantdatei, die mit dem Namen Vagrantfile abgespeichert werden muss.
1$tokenscript = <<-SCRIPT
2cat > data-collector-token.toml <<EOF
3[auth_n.v1.sys.service]
4a1_data_collector_token = "KGN0YhXlXhQwhFxTnXLTPhfObKs="
5EOF
6./chef-automate config patch data-collector-token.toml
7SCRIPT
8
9$mlsascript = <<-SCRIPT
10 if [ "$RESPONSE" == "YES" ]
11 then
12 ARGS='--accept-terms-and-mlsa'
13 else
14 echo 'You must say YES to continue'
15 exit 1
16 fi
17 sudo ./chef-automate deploy $ARGS
18SCRIPT
19
20class MLSA
21 def to_s
22 print "I agree to the Terms of Service and the Master License and Services Agreement (YES/NO): \n"
23 STDIN.gets.chomp
24 end
25end
26
27Vagrant.configure(2) do |config|
28 config.vm.provider "virtualbox" do |v|
29 v.memory = 4096
30 v.cpus = 4
31 end
32
33 config.vm.box = "bento/ubuntu-20.04"
34 config.vm.synced_folder ".", "/opt/a2-testing", create: true
35 config.vm.hostname = 'automate.192.168.33.199.xip.io'
36 config.vm.network 'private_network', ip: '192.168.33.199'
37 config.vm.provision "shell", inline: "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y unzip"
38 config.vm.provision "shell", inline: "sysctl -w vm.max_map_count=262144"
39 config.vm.provision "shell", inline: "sysctl -w vm.dirty_expire_centisecs=20000"
40 config.vm.provision "shell", inline: "echo 192.168.33.199 automate.192.168.33.199.xip.io | sudo tee -a /etc/hosts"
41 config.vm.provision "shell", inline: "curl -s https://packages.chef.io/files/current/automate/latest/chef-automate_linux_amd64.zip | gunzip - > chef-automate && chmod +x chef-automate"
42 config.vm.provision "shell", env: {"RESPONSE" => MLSA.new}, inline: $mlsascript
43 config.vm.provision "shell", inline: $tokenscript
44 config.vm.provision "shell", inline: "DEBIAN_FRONTEND=noninteractive apt-get install docker -y"
45 config.vm.provision "shell", inline: "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -"
46 config.vm.provision "shell", inline: "add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable'"
47 config.vm.provision "shell", inline: "apt-get update"
48 config.vm.provision "shell", inline: "apt-cache policy docker-ce"
49 config.vm.provision "shell", inline: "DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce"
50 config.vm.provision "shell", inline: "apt-get clean"
51 config.vm.provision "shell", inline: "usermod -a -G docker vagrant"
52 config.vm.provision "shell", inline: "echo 'Server is up. Please log in at https://automate.192.168.33.199.xip.io/'"
53 config.vm.provision "shell", inline: "echo 'credentials are in the automate-credentials.toml file. log in using vagrant ssh'"
54
55end
Danach muss man in einem Terminal in genau dem oberen Verzeichnis den folgenden Befehl eingeben
1vagrant up
Dieser Befehl sollte innerhalb von ein paar Minuten - ein wenig Abhänging von der Geschwindigkeit der Internetverbindung - eine virtuelle Maschine starten, auf der dann Chef Automate installiert ist. Während der Installation kommt jedoch auch eine Abfrage, ob man Terms of Services sowie die Zustimmung von Chef bzw Chef Automate annimmt. Damit wir nicht mit Hostnamen und DNS Fehlerquellen entstehen lassen, bedienen wir uns einfach dem Service xip.io. Hiermit kann man nun einfach per Browser auf folgenden URL zugreifen https://automate.192.168.33.199.xip.io Beim ersten Zugriff wird man hier noch eine Warnung bekommen, dass die Verbindung nicht sicher ist, da es sich hier um kein offiziell gültiges SSL Zertifikat handelt.
Um sich in der Installation anmelden zu können, muss man erst noch die initialen Administrator Zugangsdaten auslesen. Bei einer realen Installation sollte man diese dann auch sogleich ändern und entsprechend in einem sicheren Ort dokumentieren.
1$ vagrant ssh
2$ sudo cat automate-credentials.toml
3url = "https://automate.192.168.33.199.xip.io"
4username = "admin"
5password = "3b52f84b09507413397b4b9381ec25be"
Bei dem folgenden Dialog über die Lizenz kann man mit der Trial License durchwegs für 60 Tage dann Chef Automate austesten.
{:height="50%" width="50%"} Lizenz Dialog
Bei Chef bedeutet der Begriff node jegliches System, das mit Chef verwaltet wird. Chef Automate erlaubt es uns nun den Status dieser nodes zu monitoren und zu visualisieren. Zum Beispiel kann man hier also Chef Inspec benutzen um die nodes auf Konformität zu scannen und das Ergebnis in Chef Automate visualisieren.
Aktuell findet man nach der Installation unter Infrastructure - Client runs sowie unter Compliance - Reports noch jeweils leere Berichtsseiten vor.
Chef Infra runs
Chef Compliance Reports
Dies wollen wir aber nun ändern und einfach ganz simple Profile anwenden um Ergebnisse zu generieren. Wir werden hierzu Docker verwenden, wo 2 vorgefertige Images ablaufen werden. Die folgenden Befehle lassen sich entweder auf der lokalen Maschine oder der virtuellen Chef Automate ausführen. Um das in Chef Automate zu machen, loggen wir uns in die VM mittels folgendem Befehl ein
1vagrant ssh
Anschließend kann man das folgende Docker Image ausführen:
1docker run learnchef/compliance-loader-fail
Die Ausgaben des Containers lassen wir hier nun erstmal beiseite und widmen uns jedoch dem, was in Chef Automate nun passiert ist. Chef Infra generiert einige Log Meldungen und danach scannt Chef InSpec die node gegen ein paar simple Konformitätsprofile und speichert das Ergebnis in Chef Automate ab.
In Chef Automate finden wir nun in Compliance - Reports das Ergebnis unseres aktuellen Scans.
Compliance reports
Wenn wir nun die Ansicht von der Übersicht auf die 1 Nodes umschalten, finden wir die aktuelle node gelistet
Compliance failed report
Wir finden hier nun die Zusammenfassung des Konformitätsscans mit all seinen Tests. Wenn wir nun auf den fehlerhaften Test package-02: Do not install Telnet Server gehen und auf der rechten Seite auf den + Knopf drücken, kommen wir zur folgenden Ansicht
Compliance failed detail view
Dieser Test kommt mit dem Docker Image innerhalb des Profils mit. Das Profil umfasst mehrere Tests die im weiteren controls genannt werden und in Chef Inspec geschrieben sind. Da Chef Inspec test legedlich Code sind und die Regeln eindeutig, können sie von jedem im Team verstanden werden und auch automatisiert getestet werden. Um dies zu verdeutlichen kann man hier nun auch auf den Source Knopf drücken und bekommt den Code dargestellt:
Compliance Test Source
controls lassen sich mit profiles in Pakete gruppieren und so für eine gewisse Menge an nodes ( zB Webserver, Datenbankserver, ... ) wieder verwenden und es können so spezifische profiles für die jeweilige Menge gestaltet werden. profiles lassen sich in Chef Automate bzw Chef Infra Server, welcher dank Chef Habitat in einem Deploymentschritt installiert werden kann, speichern, verwalten und verteilen.
Mit Ende 2019 erreichte Chef Automate 1 das Ende seines Lebenszyklus und wird somit auch nicht länger unterstützt. Die aktuelle Chef Automate 2 Implementierung unterscheidet sich architektonisch und technisch zur Vorgängerversion.
Sollten diese Features in der aktuellen Chef Automate 1 aktiv sein, man die Migration aber dennoch durchführen will, muss man die Migration mit folgenden Flags starten:
Sollte das aktuelle Chef Automate 1 bereits einen externen Elasticsearch Cluster verwenden, so bedarf es eines manuellen Eingriffs auf diesen Cluster. Hierfür sollte man den Customer Support kontaktieren, damit dieser die Schritte prüft und dann umsetzt.
Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.
Hier kontaktieren