Lassen Sie mich Ihnen kurz zeigen, wie Sie den Windows-Server von Ansible aus unter Ubuntu verbinden.
Um die folgenden Schritte ausführen zu können, müssen auf beiden Systemen Python 3.x und Ansible installiert sein. Sie können den folgenden Artikeln folgen, wenn Sie Hilfe benötigen.
Wie installiere und konfiguriere ich Ansible unter Ubuntu?
Wie installiere ich Ansible unter Windows?
Unten sind die Details der beiden Server, die ich verwende:
- Ansible-Controller – 192.168.0.108
- Windows-Server – 192.168.0.102
Inhaltsverzeichnis
Schritt 1: Ansible Windows-Benutzer erstellen
Erstellen Sie einen neuen Benutzer für die Einrichtung der Ansible-Windows-Verbindung.
- Öffnen Sie die Computerverwaltung auf Ihrem Windows-System und gehen Sie zu Lokale Benutzer und Gruppen.
- Klicken Sie mit der rechten Maustaste auf Benutzer und erstellen Sie einen neuen Benutzer.
- Aktivieren Sie das Kontrollkästchen „Passwort läuft nie ab“ und klicken Sie auf „Erstellen“.
- Klicken Sie nun unter den verfügbaren Gruppen mit der rechten Maustaste auf die Gruppe Administratoren und klicken Sie auf Eigenschaften.
- Klicken Sie auf Hinzufügen und geben Sie ansible in Objektnamen ein.
- Klicken Sie auf die Option Namen überprüfen und dann auf OK.
Jetzt ist ein ansibler Benutzer auf einem Windows-Rechner bereit.
Schritt 2: Bibliotheken und WinRM einrichten
Gehen Sie zu Ihrem Ansible-Controller-Computer, aktualisieren Sie ihn und installieren Sie die unten genannten Bibliotheken.
[email protected]:~$ sudo apt-get update [email protected]:~$ sudo apt-get install gcc python-dev [email protected]:~$ sudo apt install python3-pip
WinRM steht für Windows Remote Management. Es ermöglicht Ihnen, Verwaltungsaufgaben auf entfernten Windows-Systemen durchzuführen. Wir werden python3-winrm installieren, einen Python-Client, der verwendet wird, um eine Verbindung zum Windows-System herzustellen.
[email protected]:~$ sudo apt-get install python3-winrm Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: gyp libc-ares2 libhttp-parser2.8 libjs-async libjs-inherits libjs-is-typedarray libjs-node-uuid libuv1 libuv1-dev node-abbrev node-ajv node-ansi node-ansi-color-table node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-async node-validate-npm-package-license node-wcwidth.js node-which node-which-module node-wide-align node-wrap-ansi node-wrappy node-y18n node-yallist node-yargs node-yargs-parser nodejs nodejs-doc Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-xmltodict The following NEW packages will be installed: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-winrm python3-xmltodict 0 upgraded, 6 newly installed, 0 to remove and 231 not upgraded. Need to get 84.8 kB of archives. After this operation, 442 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-kerberos amd64 1.1.14-1build1 [16.8 kB] Get:2 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-ntlm-auth all 1.1.0-1 [19.6 kB] Get:3 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-kerberos all 0.11.0-2 [10.1 kB] Get:4 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-ntlm all 1.1.0-1 [6,004 B] Get:5 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-xmltodict all 0.11.0-2 [10.6 kB] Get:6 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-winrm all 0.3.0-2 [21.7 kB] Fetched 84.8 kB in 1s (70.3 kB/s) Selecting previously unselected package python3-kerberos. (Reading database ... 244430 files and directories currently installed.) Preparing to unpack .../0-python3-kerberos_1.1.14-1build1_amd64.deb ... Unpacking python3-kerberos (1.1.14-1build1) ... Selecting previously unselected package python3-ntlm-auth. Selecting previously unselected package python3-xmltodict. Preparing to unpack .../4-python3-xmltodict_0.11.0-2_all.deb ... Unpacking python3-xmltodict (0.11.0-2) ... Selecting previously unselected package python3-winrm. Preparing to unpack .../5-python3-winrm_0.3.0-2_all.deb ... Unpacking python3-winrm (0.3.0-2) ... Setting up python3-kerberos (1.1.14-1build1) ... Setting up python3-winrm (0.3.0-2) ...
Schritt 3: Aktualisieren Sie die Ansible Inventory-Datei
Jetzt werde ich die Ansible-Hosts-Datei mit der IP-Adresse des Windows-Systems bearbeiten. Jetzt weiß Ansible also, welches Windows-System es verbinden muss.
[email protected]:~$ sudo gedit /etc/ansible/hosts [win] 192.168.0.102
Schritt 4: Aktualisieren Sie die Ansible-Gruppenvariablen
Erstellen Sie ein Verzeichnis zum Einfügen von Variablen, die zum Herstellen einer Verbindung mit dem Windows-System erforderlich sind.
[email protected]:~$ mkdir /etc/ansible/group_vars [email protected]:~$ sudo chmod -R 777 /etc/ansible/
Erstellen Sie eine Datei win.yaml und fügen Sie die Benutzerdetails, die Sie im ersten Schritt erstellt haben, und einige weitere Variablen ein, die für die Verbindung mit dem Windows-System erforderlich sind.
[email protected]:~$ gedit /etc/ansible/group_vars/win.yaml
--- ansible_user: ansible ansible_password: ansible ansible_connection: winrm ansible_winrm_server_cert_validation: ignore ansible_winrm_transport: basic ansible_winrm_port: 5985 ansible_python_interpreter: C:UserswdzwdzAppDataLocalProgramsPythonPython37python
Schritt 5: Konfigurieren Sie die zu verwaltenden Windows-Server
Öffnen Sie Ihre Windows Power Shell und aktualisieren Sie sie. Auf dem Windows-Computer müssen Powershell 3.0 und .NET Framework 4.0 vorhanden sein.
PS C:WINDOWSsystem32> $url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1" PS C:WINDOWSsystem32> $file = "$env:tempUpgrade-PowerShell.ps1" PS C:WINDOWSsystem32> $username = "ansible" PS C:WINDOWSsystem32> $password = "ansible" PS C:WINDOWSsystem32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) PS C:WINDOWSsystem32> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force PS C:WINDOWSsystem32> &$file -Version 5.1 -Username $username -Password $password -Verbose
Um WinRM auf einem Windows-System mit Ansible zu konfigurieren, wurde von Ansible ein Remote-Konfigurationsskript bereitgestellt. Führen Sie das Skript in der PowerShell aus.
PS C:WINDOWSsystem32> $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" PS C:WINDOWSsystem32> $file = "$env:tempConfigureRemotingForAnsible.ps1" PS C:WINDOWSsystem32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) PS C:WINDOWSsystem32> powershell.exe -ExecutionPolicy ByPass -File $file PS C:WINDOWSsystem32> winrm enumerate winrm/config/Listener Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 127.0.0.1, 169.254.8.240, 169.254.36.9, 169.254.102.217, 169.254.215.170, 192.168.0.102, ::1, fe80::3131:c6d7:9ef5:8f0%7, fe80::51b7:9134:550d:d7aa%22, fe80::88f1:1229:e1dd:2409%16, fe80::99cf:5796:4f8e:f5c1%15, fe80::fd77:c19d:e0f2:66d9%9 Listener Address = * Transport = HTTPS Port = 5986 Hostname = DESKTOP-2L8QMI6 Enabled = true URLPrefix = wsman CertificateThumbprint = C83B3FC8B274D0B650F0FD647DC7AC129BBE3FA0 ListeningOn = 127.0.0.1, 169.254.8.240, 169.254.36.9, 169.254.102.217, 169.254.215.170, 192.168.0.102, ::1, fe80::3131:c6d7:9ef5:8f0%7, fe80::51b7:9134:550d:d7aa%22, fe80::88f1:1229:e1dd:2409%16, fe80::99cf:5796:4f8e:f5c1%15, fe80::fd77:c19d:e0f2:66d9%9
Legen Sie winrm fest, um HTTP-Verkehr zuzulassen.
PS C:WINDOWSsystem32> winrm set winrm/config/service '@{AllowUnencrypted="true"}' Service RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD) MaxConcurrentOperations = 4294967295 MaxConcurrentOperationsPerUser = 1500 EnumerationTimeoutms = 240000 MaxConnections = 300 MaxPacketRetrievalTimeSeconds = 120 AllowUnencrypted = true Auth Basic = true Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed DefaultPorts HTTP = 5985 HTTPS = 5986 IPv4Filter = * IPv6Filter = * EnableCompatibilityHttpListener = false EnableCompatibilityHttpsListener = false CertificateThumbprint AllowRemoteAccess = true
Setzen Sie die Authentifizierung in wirm auf basic.
PS C:WINDOWSsystem32> winrm set winrm/config/service/auth '@{Basic="true"}' Auth Basic = true Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed
Schritt 6: Testen Sie die Konnektivität zum Windows-Server
Jetzt sind alle Schritte an der Maschine erledigt. Gehen Sie zum Ansible-Controller-Computer und pingen Sie den Windows-Servercomputer mit dem Win_ping-Ansible-Modul.
[email protected]:~$ ansible win -m win_ping 192.168.0.102 | SUCCESS => { "changed": false, "ping": "pong" }
Die Erfolgsmeldung zeigt, dass die Verbindung hergestellt wurde. Jetzt ist das Windows-System bereit, von Ansible aus verwaltet zu werden, das auf Ubuntu läuft.