[[oktatas:linux:konfiguraciokezeles:ansible|< Ansible]]
====== Ansible Windowson ======
* **Szerző:** Sallai András
* Copyright (c) 2022, Sallai András
* Szerkesztve: 2022, 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* 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 Node.js 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