Rád bych vám stručně ukázal, jak se z Ansible běžícího na Ubuntu připojit k serveru Windows.
Pro úspěšné provedení následujících kroků je nutné mít na obou systémech nainstalovaný Python 3.x a Ansible. Pokud potřebujete pomoc s instalací, můžete se podívat na tyto návody:
Jak nainstalovat a nakonfigurovat Ansible na Ubuntu?
Jak nainstalovat Ansible na Windows?
Níže uvádím specifikace serverů, které používám:
- Ansible řídící server – 192.168.0.108
- Windows Server – 192.168.0.102
Krok 1: Vytvoření uživatele Ansible na Windows
Vytvořte nového uživatele pro nastavení komunikace s Ansible na Windows.
- Spusťte Správu počítače v systému Windows a přejděte do sekce Místní uživatelé a skupiny.
- Klikněte pravým tlačítkem na Uživatelé a vytvořte nového uživatele.
- Zaškrtněte možnost Heslo nikdy nevyprší a klikněte na Vytvořit.
- Nyní, v seznamu dostupných skupin, klikněte pravým tlačítkem na skupinu Administrators a vyberte Vlastnosti.
- Klikněte na Přidat a do pole Zadejte názvy objektů vložte ansible.
- Klikněte na možnost Zkontrolovat názvy a následně na OK.
Uživatel ansible je tímto připraven k použití na počítači s Windows.
Krok 2: Instalace potřebných knihoven a konfigurace WinRM
Na vašem řídícím serveru Ansible aktualizujte systém a nainstalujte potřebné knihovny:
[email protected]:~$ sudo apt-get update [email protected]:~$ sudo apt-get install gcc python3-dev [email protected]:~$ sudo apt install python3-pip
WinRM (Windows Remote Management) umožňuje provádět úkoly správy na vzdálených systémech Windows. Nainstalujeme python3-winrm, což je klient pro Python, který se používá pro komunikaci se systémy Windows.
[email protected]:~$ sudo apt-get install python3-winrm Reading package lists... Done Building dependency tree Reading state information... Done Následující balíky byly automaticky nainstalovány a již nejsou potřeba: 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 K jejich odstranění použijte 'sudo apt autoremove'. Následující balíky budou instalovány: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-xmltodict Následující NOVÉ balíky budou instalovány: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-winrm python3-xmltodict 0 aktualizováno, 6 nově instalováno, 0 k odstranění a 231 neaktualizováno. Je třeba získat 84,8 kB archivů. Po této operaci se použije dalších 442 kB diskového prostoru. Chcete pokračovat? [Y/n] Y Získat:1 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-kerberos amd64 1.1.14-1build1 [16,8 kB] Získat:2 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-ntlm-auth all 1.1.0-1 [19,6 kB] Získat:3 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-kerberos all 0.11.0-2 [10,1 kB] Získat:4 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-ntlm all 1.1.0-1 [6,004 B] Získat:5 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-xmltodict all 0.11.0-2 [10,6 kB] Získat:6 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-winrm all 0.3.0-2 [21,7 kB] Staženo 84,8 kB za 1 s (70,3 kB/s) Výběr předtím nevybraného balíku python3-kerberos. (Načítá se databáze ... 244430 souborů a adresářů aktuálně nainstalovaných.) Připravuje se rozbalení .../0-python3-kerberos_1.1.14-1build1_amd64.deb ... Rozbaluje se python3-kerberos (1.1.14-1build1) ... Výběr předtím nevybraného balíku python3-ntlm-auth. Výběr předtím nevybraného balíku python3-xmltodict. Připravuje se rozbalení .../4-python3-xmltodict_0.11.0-2_all.deb ... Rozbaluje se python3-xmltodict (0.11.0-2) ... Výběr předtím nevybraného balíku python3-winrm. Připravuje se rozbalení .../5-python3-winrm_0.3.0-2_all.deb ... Rozbaluje se python3-winrm (0.3.0-2) ... Nastavuje se python3-kerberos (1.1.14-1build1) ... Nastavuje se python3-winrm (0.3.0-2) ...
Krok 3: Aktualizace souboru inventáře Ansible
Nyní upravte soubor Ansible hosts a přidejte IP adresu vašeho systému Windows. Tímto způsobem Ansible pozná, ke kterému systému Windows se má připojit.
[email protected]:~$ sudo gedit /etc/ansible/hosts [win] 192.168.0.102
Krok 4: Aktualizace proměnných skupin Ansible
Vytvořte adresář pro uložení proměnných, které se používají pro připojení k systému Windows.
[email protected]:~$ mkdir /etc/ansible/group_vars [email protected]:~$ sudo chmod -R 777 /etc/ansible/
Vytvořte soubor win.yaml a vložte do něj údaje o uživateli, kterého jste vytvořili v prvním kroku, a další proměnné potřebné pro připojení k Windows.
[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:Usersetechblog.czAppDataLocalProgramsPythonPython37python
Krok 5: Konfigurace serveru Windows pro správu
Otevřete PowerShell v systému Windows a aktualizujte ho. Je nutné, aby na počítači s Windows byl PowerShell verze 3.0 a .NET Framework verze 4.0 nebo novější.
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
Pro konfiguraci WinRM v systému Windows s pomocí Ansible byl poskytnut konfigurační skript. Spusťte tento skript v prostředí PowerShell.
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
Nastavte WinRM tak, aby povoloval komunikaci přes HTTP.
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
Ve WinRM povolte základní ověřování.
PS C:WINDOWSsystem32> winrm set winrm/config/service/auth '@{Basic="true"}' Auth Basic = true Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed
Krok 6: Testování připojení k serveru Windows
Tímto jsou všechny kroky na serverech dokončeny. Nyní přejděte na řídící počítač Ansible a pošlete ping na server Windows pomocí modulu win_ping Ansible.
[email protected]:~$ ansible win -m win_ping 192.168.0.102 | SUCCESS => { "changed": false, "ping": "pong" }
Úspěšná odpověď potvrzuje, že spojení bylo navázáno. Nyní je systém Windows připraven ke vzdálené správě z Ansible, které běží na Ubuntu.