Ich habe einige Beispiele zur Verwendung der ansible Python-API gelesen. Einige Beispiele basieren auf einigen vorhandenen lokalen Dateien, z. B. inventory, group_vars. http://docs.ansible.com/ansible/latest/dev_guide/developing_api.html#python-api-2-0ansible Python-API zum Einrichten von VARs ohne lokale YML-Dateien
Jetzt versuche ich, alle Daten von einem Python-Code ohne andere lokale Dateien einzurichten. Für InventoryManager
benutze ich unten Beispiel. https://gist.github.com/cbwest3/cb4e9ac16261595a82f8b4ab54629bac
Für VariableManager
ist jedes Beispiel, dass ich einrichten können, um es zu meinem group_vars/windows.yml
äquivalent zu machen? (die für meine windows
Gruppe Maschinen setzt winrm
Verbindung zu verwenden.)
ansible_user: MY_USER
ansible_password: MY_SECRET
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore
Update:
I VariableManager
hat set_host_variable
Methode gefunden, die mir erlauben, Variablen zu setzen für alle meine Fenster wie Gastgeber:
for host in self.inventory._inventory.hosts.values():
for group in host.groups:
if group.name == 'windows':
self.vars_manager.set_host_variable(host, 'ansible_user', r'MY_USER')
self.vars_manager.set_host_variable(host, 'ansible_password', r'MY_SECRET')
self.vars_manager.set_host_variable(host, 'ansible_port', '5985')
self.vars_manager.set_host_variable(host, 'ansible_connection', 'winrm')
self.vars_manager.set_host_variable(host, 'ansible_winrm_transport', 'ntlm')
self.vars_manager.set_host_variable(host, 'ansible_winrm_server_cert_validation', 'ignore')
Ich kann keinen besseren Weg finden, dies jetzt zu tun.
Verwenden extra_vars vielleicht eine gute Idee. Wie: variable_manager.extra_vars = {'ansible_user': 'MY_USER', 'ansible_password': 'MY_SECRET'} – felixc
@felixc, ich habe versucht, auf diese Weise Vars für alle Hosts zu setzen (es ist nützlich, danke). für meinen Fall möchte ich nur vars für die 'windows' Gruppe setzen. – CSJ