Verfahren von der Umgebungskonstruktion bis zum Betriebstest von testinfra, einem von Python erstellten Testwerkzeug für die Serverumgebung

Erstellt die Umgebung der Python-Infrastruktur-Testbibliothek Testinfra

Hintergrund

Interne Servertests scheinen manuell durchgeführt zu werden, daher möchte ich einen Automatisierungsmechanismus einführen, um die Effizienz zu verbessern. An meinem vorherigen Arbeitsplatz habe ich versucht, Ruby's Serverspec und Infrataster als Servertest-Tools zu verwenden, aber ich wollte sie mit Pythons Konfigurationsmanagement-Tools wie Ansible und Fabric vereinheitlichen. Als ich nachgeschlagen habe, habe ich ein Testwerkzeug namens Testinfra gefunden. Sogar auf der offiziellen Website wurde Testinfra als Tool wie Ruby's Serverspec geschrieben, also habe ich versucht, es zu verwenden. Dieses Mal habe ich das Verfahren des Einführungsteils vom Umgebungsbau bis zum Betriebstest beschrieben.

1. Installationsverfahren

1-1. Voraussetzungen

Die folgende Umgebung wird erstellt

  1. pip ist installiert
  2. Es müssen mindestens zwei Server vorhanden sein, die über SSH verbunden werden können

1-2. Fluss

  1. Installieren Sie testinfra
  2. SSH-Verbindungseinstellungen (Client-Seite)
  3. SSH-Verbindungseinstellung (Serverseite)
  4. Erstellen Sie einen Testcode
  5. Testcode ausführen (lokaler Host)
  6. Ausführung des Testcodes (Remote-Host)

2. Vorgehensweise

2-1. Installation von testinfra

$ pip install testinfra

2-2. SSH-Verbindungseinstellung (clientseitig)

  1. Erstellen Sie einen privaten und einen öffentlichen Schlüssel
$ cd $HOME/.ssh
$ ssh-keygen -t rsa -f test_server
  1. Übertragen Sie den öffentlichen Schlüssel mit scp auf den Zielserver für die Remoteverbindung
$ scp test_server.pub [email protected]:/var/tmp/
  1. Versuchen Sie nach Abschluss von Schritt 2 von "3. SSH-Verbindungseinstellung (Serverseite)" die SSH-Verbindung zur Schlüsselauthentifizierung.
$ ssh -i $HOME/.ssh/test_server [email protected]
  1. Erstellen Sie ssh_config
$ vi $HOME/.ssh/ssh_config

Hier lautet der Hostname des Remote-Servers "redmine".

Host redmine
  HostName     192.168.1.31
  Port         22
  User         permit
  IdentityFile ~/.ssh/test_server

2-3. SSH-Verbindungseinstellung (Serverseite)

  1. Erstellen Sie ein Konto für die SSH-Verbindung Diesmal habe ich einen "Erlaubnis" -Nutzer erstellt
$ useradd -m permit -G wheel
$ passwd permit
  1. Schreiben Sie den öffentlichen Schlüssel des Clients in autorisierte Schlüssel
$ mkdir $HOME/.ssh
$ mv /var/tmp/test_server.pub $HOME/.ssh/
$ cd $HOME/.ssh/
$ cat test_server.pub >> authorized_keys
$ chmod 600 authorized_keys
$ rm test_server.pub

2-4 Testcode erstellen

  1. Erstellen Sie einen Testcode
$ vi test.py

Beispiel für einen Testcode

def test_passwd_file(File):
    passwd = File("/etc/passwd")
    assert passwd.contains("root")
    assert passwd.user == "root"
    assert passwd.group == "root"
    assert passwd.mode == 0o644

2-5 Ausführung des Testcodes (lokaler Host)

  1. Testlauf des lokalen Hosts
$ testinfra -v test.py
  1. Bestätigung des Ausführungsergebnisses
=================================== test session starts ====================================
platform linux2 -- Python 2.7.9, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- /usr/local/bin/python2.7
cachedir: .cache
rootdir: /root, inifile: 
plugins: testinfra-1.4.2, pep8-1.0.6
collected 1 items 

test.py::test_passwd_file[local] PASSED

================================== pytest-warning summary ==================================
WP1 None Modules are already imported so can not be re-written: testinfra
======================= 1 passed, 1 pytest-warnings in 0.03 seconds ========================

2-6. Ausführung des Testcodes (Remote-Host)

  1. Testlauf des Remote-Hosts
$ testinfra test.py --connection=ssh --hosts=permit@redmine --ssh-config=/root/.ssh/ssh_config
  1. Bestätigung des Ausführungsergebnisses
=================================== test session starts ====================================
platform linux2 -- Python 2.7.9, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- /usr/local/bin/python2.7
cachedir: .cache
rootdir: /root, inifile: 
plugins: testinfra-1.4.2, pep8-1.0.6
collected 1 items 

test.py::test_passwd_file[ssh://redmine] PASSED

================================== pytest-warning summary ==================================
WP1 None Modules are already imported so can not be re-written: testinfra
======================= 1 passed, 1 pytest-warnings in 0.66 seconds ========================

3. Referenz

Recommended Posts

Verfahren von der Umgebungskonstruktion bis zum Betriebstest von testinfra, einem von Python erstellten Testwerkzeug für die Serverumgebung
Verfahren zum Konvertieren einer Python-Datei in eine Exe aus der Ubunts-Umgebungskonstruktion
Impressionen von Touch, einem von Python erstellten Datenvisualisierungstool
Vorgehensweise von der AWS CDK (Python) -Entwicklung bis zur AWS-Ressourcenkonstruktion * Für Anfänger
Senden Sie eine Nachricht von Slack an einen Python-Server
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Ich habe gerade ein Tool erstellt, mit dem Daten mithilfe der GUI-Operation einfach als Diagramm angezeigt werden können
Aufbau der Python-Entwicklungsumgebung 2020 [Von der Python-Installation bis zur Einführung in die Poesie]
Fügen Sie eine Funktion hinzu, um dem Wetter heute mitzuteilen, dass der Bot locker ist (hergestellt von Python).
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
Zusammenfassung vom Erstellen von Python 3.4. * Von der Quelle zum Erstellen einer wissenschaftlichen Computerumgebung
Ich möchte viele Prozesse von Python aus starten
Ich habe ein Tool erstellt, um eine Wortwolke aus Wikipedia zu erstellen
Konstruktionsverfahren für die Anaconda3-Python-Umgebung
Vorgehensweise für die Ajax-Kommunikation von HTML zu JSON auf dem API-Server
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
[Python] So erstellen Sie eine Tabelle aus einer Liste (grundlegende Operation zum Erstellen von Tabellen / Ändern des Matrixnamens)
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Umgebungskonstruktion von Python2 & 3 (OSX)
Erstellen und testen Sie eine CI-Umgebung für mehrere Versionen von Python
Vom Aufbau einer Python-Umgebung für unerfahrene Personen bis zur Hello-Welt
Von der Installation von Ansible bis zum Erstellen einer Python-Umgebung in der virtuellen Umgebung von Vagrant
Bereiten Sie eine verteilte Lasttestumgebung mit dem Python-Lasttest-Tool Locust vor
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Umgebungskonstruktion von Python und OpenCV
[Django] Memorandum of Environment Construction Procedure
Erstellen einer Umgebung für Python3.8 auf einem Mac
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
Verhalten von Python3 durch Sakuras Server
Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
Erstellen Sie einen Postfix-Mailserver, starten Sie den durch den Mailempfang ausgelösten Python-Code und senden Sie die Mail an Slack (lokale Umgebungsversion)
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Erstellen Sie mit Mecab aus Python3 ein Tool, das Furigana automatisch mit HTML schüttelt
Migration von Python2 zu Python3 (Python2 wird als virtuelle Umgebung neu erstellt und existiert gleichzeitig)
Versuchen Sie ernsthaft, eine Vim-Testumgebung einzurichten (für Python).
Von der Re-Environment-Konstruktion von Python bis zur grafischen Zeichnung (auf Visual Studio-Code)
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Konstruktionsverfahren für die Python (Anaconda) -Entwicklungsumgebung (SpringToolsSuites) _2020.4
Konstruktionsverfahren für die Python-Projektumgebung (für Windows)
[Python] Straße zu Schlangen (1) Umgebungskonstruktion
Ich möchte eine Python-Umgebung erstellen
Verfahren zur Erstellung der Umgebung: Ubuntu + Apache2 + Python + Pyramid
Konstruktionsverfahren für Python-Entwicklungsserver (AWS + Anaconda)
Fügen Sie VSCode eine virtuelle Python-Umgebung hinzu
Ein Lehrbuch für Anfänger von Python-Anfängern
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
Umgebungskonstruktionsverfahren zum Betrieb von Chrome ohne Installation von Python unter Windows (unter Verwendung von Selen)
Ich habe eine Bibliothek zum Betreiben des AWS CloudFormation-Stacks über CUI (Python Fabric) erstellt.
Ich habe ein Tool erstellt, um Slack über Connpass-Ereignisse zu informieren, und es zu Terraform gemacht
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert