2017-12-20 1 views
0

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.

+0

Verwenden extra_vars vielleicht eine gute Idee. Wie: variable_manager.extra_vars = {'ansible_user': 'MY_USER', 'ansible_password': 'MY_SECRET'} – felixc

+0

@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

Antwort

1

Mit Ihrem InventoryData Versuch:

data.add_group('windows') 
data.set_variable('windows','ansible_connection','winrm') 
data.add_host('host1', group='windows') 
data.add_host('host2', group='windows') 
Verwandte Themen