[[oktatas:linux:konfiguraciokezeles:ansible|< Ansible]] ====== Ansible Windowson ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2022 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Bevezetés ===== Adott egy teremnyi Windowsos számítógép. Szeretnék automatizálni a telepítésüket távolról. Szükséges szoftverek Windowsos célgépen: * Chocolatey * Python * WinRM beállítva (ez eleve létezik Windowson, csak be kell állítani) * pywinrm (Python modul) A teszteléskor a célgép egy Windows 10 volt, ahol futtattam az Ansible-t egy Debian 11. ===== Windowson ===== ==== Chocolatey ==== Telepíteni kell a Chocolatey szoftvert: * https://chocolatey.org/install A telepítés a PowerShellben egy parancs. A fenti weblapon megtaláljuk a parancsot, ami elég hosszú. A PowerShell parancs rendszergazdai kell legyen. Több információt talál a [[oktatas:operacios_rendszerek:windows:csomagkezeles#chocolatey|Chocolatey lapon]]. ==== Python ==== Rögtön használjuk a Chocolatey szoftvert a Python telepítésére, ha az még nincs a gépen: choco install python A choco program rendszergazdaként kell fusson, de szimpla cmd-ben is futhat. ==== Scriptek ==== Engedélyezni kell PowerShell scriptek futtatását az aktuális felhasználónak. PowerShellben, rendszergazdaként: Set-ExecutionPolicy Unrestricted -Scope CurrentUser Ellenőrzés: Get-ExecutionPolicy Ezt kell lássuk: Unrestricted ==== ConfigureRemotingForAnsible.ps1 ==== Letöltjük a következő scriptet és futtatjuk a WinRM beállításához: * https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 GitHubon a script: * https://github.com/AlbanAndrieu/ansible-windows/blob/master/files/ConfigureRemotingForAnsible.ps1 Futtatjuk **rendszergazdaként**, **PowerShellben**: .\ConfigureRemotingForAnsible.ps1 A PowerShell rendszergazdaként kell fusson. A Windows frissítés után előfordulhat, hogy újra kell futtatni. ==== pywinrm ==== A Windowson telepíteni kell továbbá pywinrm Python modult: pip install pywinrm ==== Felhasználó ==== Windowson szükség van egy jelszavas rendszergazda felhasználóra. Csak számokból álló jelszó nem megfelelő. ==== Tűzfal ==== Windowson engedélyezni kell a 5986 és 5985 portot. ===== Linuxon ===== A konfiguráció nem csak Linuxról indítható; itt most Linuxon kerül bemutatásra, hogyan készítünk egy konfigurációt. Ha nincs telepítve az Ansible, Debian GNU/Linuxon: apt install ansible Használathoz, linuxos gépen összeállítom az ansible fájlokat: feladat01/ |-ansible.cfg |-hosts `-win.yml A fájlok rendre a következők: * **ansible.cfg** - Itt van megadva mi az inventory fájl neve. * **hosts** - Az inventory fájlban van megadva mi a gépek elérése. * **win.yml** - A yaml fájlban van leírva milyen állapotot kell felvenni a gépeknek. Ha Windowsos gép címe 192.168.5.101, akkor az "inventory" fájl tartalma: [wingep] 192.168.5.101 ansible_connection=winrm ansible_user=testuser ansible_password=titok ansible_winrm_server_cert_validation=ignore Több IP cím is felsorolható egymás alatt. A [wingep] a szekció címe, tetszőleges névvel létrehozható. Egy playbook példa, ahol telepítésre kerül a Geany: --- - hosts: all remote_user: testuser tasks: - name: Geany telepítése win_chocolatey: name: geany state: present Egy ansible konfigurációs fájl, ahol megmondom, hol van az invertori fájl. Az inventori fájl esetünk be a "hosts": [defaults] inventory = hosts Az ansible-playbook parancs az ansible.cfg fájlban keresi a beállításokat. A hosts fájl helyett más fájl is használható. Futtatás: ansible-playbook win.yml ===== A hosts fájl változókkal ===== Így nem kell megadni soronként a gépekhez tartozó változókat. [gepek] 192.168.10.11 192.168.10.12 192.168.10.13 192.168.10.14 [gepek:vars] ansible_user=adminuser ansible_password=titok ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ===== Gépek ellenőrzése ===== ansible gepek -i hosts -m win_ping A parancs megnézi, hogy a gépek elérhetők-e. ===== Csomagkezelés ===== Több csomag megadása egyetlen feladatban: --- - hosts: all remote_user: adminuser tasks: - name: Geany, VSCode és NodeJS telepítése win_chocolatey: name: {{ item }} state: present loop: - geany - vscode - nodejs ===== Fájlmásolás ===== - name: Egyetlen fájl másolása win_copy: src: /srv/valahol/valami.conf dest: c:\Temp\masiknev.conf - name: Másolás a fájlnév megtartásával win_copy: src: /src/valahol/valami.conf dest: c:\temp\ - name: Könyvtár másolása (A C:\Temp\temp_files jön létre) win_copy: src: files/temp_files dest: c:\Temp - name: Könyvtár tartalmának másolása rekurzívan win_copy: src: files/temp_files/ dest: c:\Temp - name: Fájl másolása, ahol a forrás a távoli gép win_copy: src: C:\temp\valami.txt dest: C:\valahova\valami.txt remote_src: True - name: Könyvtár másolása, ahol a forrás a távoli gép win_copy: src: C:\temp dest: C:\valami remote_src: True - name: Fájl tartalmának beállítása win_copy: dest: C:\temp\valami.txt content: abc123 ===== Telepítés helye ===== A legtöbb program a **c:\Program Files** vagy a **c:\Program Files (x86)** könyvtárba telepszik. Ezek általában a menüből is elérhetők. A többi program a **c:\ProgramData** nevű könyvtárba kerül: C:\ProgramData\chocolate\lib ===== Windowsos parancsok ===== - name: Parancs végrehajtás ansible.windows.win_command: whoami - name: Parancs végrehajtás ansible.windows.win_command: cmd: 'echo "valami" > adat.txt' ===== Linkek ===== * https://www.ansible.com/blog/connecting-to-a-windows-host (2022) * https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html (2022) * https://docs.ansible.com/ansible/latest/user_guide/windows_usage.html (2022) Windowsos gyűjtemény: * https://docs.ansible.com/ansible/latest/collections/ansible/windows/index.html Chocolatey csomagkezelő: * https://docs.ansible.com/ansible/latest/collections/chocolatey/chocolatey/win_chocolatey_module.html Fájlmásolás: * https://docs.ansible.com/ansible/2.4/win_copy_module.html Parancsikon: * https://docs.ansible.com/ansible/latest/collections/community/windows/win_shortcut_module.html Gyakori WinRM problémák: * https://docs.ansible.com/ansible/devel/user_guide/windows_setup.html#common-winrm-issues PowerShell futtatása: * https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_powershell_module.html