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.
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=(',', ': '))
- 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!