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:
A teszteléskor a célgép egy Windows 10 volt, ahol futtattam az Ansible-t egy Debian 11.
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.
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.
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
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.
A Windowson telepíteni kell továbbá pywinrm Python modult:
pip install pywinrm
Windowson szükség van egy jelszavas rendszergazda felhasználóra. Csak számokból álló jelszó nem megfelelő.
Windowson engedélyezni kell a 5986 és 5985 portot.
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:
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
Í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
ansible gepek -i hosts -m win_ping
A parancs megnézi, hogy a gépek elérhetők-e.
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
- 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
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
- name: Parancs végrehajtás ansible.windows.win_command: whoami
- name: Parancs végrehajtás ansible.windows.win_command: cmd: 'echo "valami" > adat.txt'
Windowsos gyűjtemény:
Chocolatey csomagkezelő:
Fájlmásolás:
Parancsikon:
Gyakori WinRM problémák:
PowerShell futtatása: