Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Ansible als Python-Modulbibliothek

So verwenden Sie Ansible als Python-Modulbibliothek

不言
不言Original
2018-06-02 15:43:482072Durchsuche

ansible ist ein Python-Paket, eine vollständige Entpack- und Wiedergabesoftware. Die einzigen Anforderungen für den Client sind SSH und Python, und das Python-Simplejson-Paket ist unglaublich einfach. Der folgende Artikel stellt hauptsächlich Beispiele für die Verwendung von Ansible als Python-Modulbibliothek vor. Freunde in Not können darauf verweisen.

Vorwort

ansible ist ein neues automatisiertes Betriebs- und Wartungstool. Es wurde auf Basis von Python entwickelt und integriert viele Betriebs- und Wartungstools (Puppe). , cfengine, chef, func, fabric) realisiert es Funktionen wie die Batch-Systemkonfiguration, die Batch-Programmbereitstellung und die Batch-Ausführung von Befehlen. Ansible arbeitet modulbasiert und bietet keine Möglichkeit zur stapelweisen Bereitstellung. Was wirklich eine Batch-Bereitstellung bietet, ist das von Ansible ausgeführte Modul, und Ansible stellt nur ein Framework bereit.

Enthält hauptsächlich:

(1) Verbindungs-Plugins: verantwortlich für die Kommunikation mit dem überwachten Ende

(2) Host-Inventar: Der angegebene Betrieb; Host ist der in einer Konfigurationsdatei definierte Überwachungshost. (3) Verschiedene Module, Kernmodule, benutzerdefinierte Module um Funktionen wie das Aufzeichnen von Protokoll-E-Mails auszuführen;

(5) Playbook: Wenn das Skript mehrere Aufgaben ausführt, kann der Knoten bei Bedarf mehrere Aufgaben gleichzeitig ausführen.

Ansible ist ein sehr gutes Tool unter den Betriebs- und Wartungstools. Sie können die YML-Datei flexibel entsprechend Ihren Anforderungen konfigurieren, da keine Installation eines Clients erforderlich ist. Der Einstieg ist sehr einfach. In einigen Fällen müssen Sie möglicherweise Ansible als Bibliothekskomponente in Ihr eigenes Skript schreiben. Das heutige Skript zeigt, wie Ansible mit einem Python-Skript kombiniert wird ein Python-Skript. Lassen Sie uns schrittweise entfalten.


Schauen Sie sich das erste Beispiel an:

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json
 
# the fastest way to set up the inventory
 
# hosts list
hosts = ["10.11.12.66"]
# set up the inventory, if no group is defined then 'all' group is used by default
example_inventory = ansible.inventory.Inventory(hosts)
 
pm = ansible.runner.Runner(
 module_name = 'command',
 module_args = 'uname -a',
 timeout = 5,
 inventory = example_inventory,
 subset = 'all' # name of the hosts group 
 )
 
out = pm.run()
 
print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))
Dieses Beispiel zeigt, wie wir es machen Führen Sie Systembefehle über Ansible in einem Python-Skript aus. Schauen wir uns das zweite Beispiel an und verbinden es mit unserer YML-Datei.

Der Inhalt der einfachen YML-Datei lautet wie folgt:

- hosts: sample_group_name
 tasks:
 - name: just an uname
 command: uname -a

Das Python-Skript, das aufruft Das Spielbuch lautet wie folgt:

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json
 
### setting up the inventory
 
## first of all, set up a host (or more)
example_host = ansible.inventory.host.Host(
 name = '10.11.12.66',
 port = 22
 )
# with its variables to modify the playbook
example_host.set_variable( 'var', 'foo')
 
## secondly set up the group where the host(s) has to be added
example_group = ansible.inventory.group.Group(
 name = 'sample_group_name'
 )
example_group.add_host(example_host)
 
## the last step is set up the invetory itself
example_inventory = ansible.inventory.Inventory()
example_inventory.add_group(example_group)
example_inventory.subset('sample_group_name')
 
# setting callbacks
stats = callbacks.AggregateStats()
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
 
# creating the playbook instance to run, based on "test.yml" file
pb = ansible.playbook.PlayBook(
 playbook = "test.yml",
 stats = stats,
 callbacks = playbook_cb,
 runner_callbacks = runner_cb,
 inventory = example_inventory,
 check=True
 )
 
# running the playbook
pr = pb.run() 
 
# print the summary of results for each host
print json.dumps(pr, sort_keys=True, indent=4, separators=(',', ': '))

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Ansible als Python-Modulbibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn