Tartalomjegyzék
Ansible Windowson
- Szerző: Sallai András
- Copyright © 2022, Sallai András
- Szerkesztve: 2022, 2024
- Licenc: 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:
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 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:
GitHubon a script:
Futtatjuk rendszergazdaként, PowerShellben:
.\ConfigureRemotingForAnsible.ps1
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:
- hosts
[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:
- win.yml
--- - 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”:
- ansible.cfg
[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.
- hosts
[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:
- win.yml
--- - 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
Windowsos gyűjtemény:
Chocolatey csomagkezelő:
Fájlmásolás:
Parancsikon:
Gyakori WinRM problémák:
PowerShell futtatása: