Chef Automate - Erste Schritte


Bicycle

Was ist Chef Automate 2

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.

Erste Schritte

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.

Setup einer Chef Automate Test-Instanz

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

Konformitätsscan

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.

Änderungen zu Chef Automate 1

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.

  • Chef Manage Chef Automate 2 kann nicht wie Automate 1 als SAML Authentifizierungsproxy agieren
  • FIPS Chef Automate 2 unterstützt nicht den FIPS Modus
  • Disaster Recovery Chef Automate 2 kann aktuell nur mit einem Cold-Standby verwendet werden. Aktives Clustering wird nicht unterstützt
  • Kibana Dashboards Chef Automate 2 enthält keine Kibana Installation
  • SAML Konfigurations-Migration Chef Automate 2 unterstützt eine SAML Integration, aber dessen Konfiguration ist nicht kompatibel mit der Integration von Chef Automate 1. Nach einem Upgrade muss diese Konfiguration erst wieder erstellt weden.

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:

  • --skip-fips-check
  • --skip-disaster-recovery-check
  • --skip-saml-check

Externer Elasticsearch Cluster

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.

Zurück Unsere Trainings entdecken

Wir sind für Sie da

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