Menu

Jak zainstalować i skonfigurować Ansible na Debianie i zarządzać Windows

Instalacja Ansible i połączenie z Windows

🎯 Cel

W tym poradniku nauczysz się jak:

  • ✅ Zainstalować Ansible na Debianie (np. VirtualBox/WSL),
  • 🔗 Połączyć się z lokalnym systemem Windows,
  • ▶️ Uruchamiać skrypty (playbooki) Ansible,

🧰 Wymagania wstępne

  • 📦 Masz zainstalowanego Debiana (VM lub WSL).
  • 🖥 Masz lokalnego Windowsa.
  • 🌐 Oba systemy widzą się w sieci (ping działa).

🐧 Krok 1: Instalacja Ansible w Debianie

sudo apt update
sudo apt install python3-pip python3-venv -y

Utwórz środowisko wirtualne:

python3 -m venv ~/ansible-venv
source ~/ansible-venv/bin/activate
pip install ansible pywinrm

🧠 Tip: utwórz alias do aktywacji środowiska:

echo 'alias ansibleenv="source ~/ansible-venv/bin/activate"' >> ~/.bashrc
source ~/.bashrc

🗂 Krok 2: Foldery projektu

mkdir ~/ansible-windows
cd ~/ansible-windows

W tym folderze będą:

  • hosts.ini – lista maszyn Windows,
  • playbook.yml – zadania do wykonania.

📄 Krok 3: Plik hosts.ini

[windows]
192.168.1.100  # To jest przykładowy adres IP do celu ćwiczenia

[windows:vars]
ansible_user=Administrator
ansible_password=TwojeHaslo
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_winrm_server_cert_validation=ignore

🔐 Krok 4: Konfiguracja Windows (PowerShell)

$hostname = hostname
$certificate = New-SelfSignedCertificate -DnsName $hostname -CertStoreLocation Cert:\LocalMachine\My
winrm set winrm/config '@{Service=@{AllowRemoteManagement="true"}}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/client '@{TrustedHosts="*"}'
netsh advfirewall firewall set rule group="Windows Remote Management (HTTP-In)" new enable=yes

Super, widzę jakieś dziwne rzeczy powyżej ale co to jest i co robi? Postaram się wyjaśnić w prosty sposób o co chodzi.

Wyobraź sobie, że Twój komputer z Windowsem to tak jakby zamek, a Ty chcesz móc nim trochę sterować na odległość, albo pozwolić komuś zaufanemu (na przykład administratorowi IT) na zdalne zarządzanie nim. Ten "krok" to instrukcja dla Twojego komputera, jak się do tego przygotować, aby to zdalne sterowanie było możliwe i bezpieczne.

Ten kod powyżej uruchamiany w narzędziu zwanym PowerShell (to taka specjalna "konsola" z komendami dla Windowsa) robi po kolei kilka rzeczy:

1. `$hostname = hostname`

Co to robi: Komputer sprawdza, jak się nazywa. Każdy komputer w sieci ma swoją unikalną "nazwę", tak jak Ty masz imię. Ta komenda po prostu "zapamiętuje" tę nazwę.

Po co: Ta nazwa będzie potrzebna do kolejnych kroków, aby komputer wiedział, jaki certyfikat sobie wydać.

2. `New-SelfSignedCertificate`

Co to robi: Twój komputer tworzy sobie taką jakby "cyfrową legitymację" (certyfikat bezpieczeństwa). Jest to certyfikat "samo-podpisany", czyli komputer sam sobie go wystawił.

Po co: Potrzebne do bezpiecznej komunikacji z innymi komputerami.

3. `winrm set winrm/config`

Co to robi: Włącza możliwość zdalnego zarządzania przez usługę WinRM.

Po co: To jakby otwarcie konkretnych "drzwi", przez które będzie można wysyłać polecenia z zewnątrz.

4. `winrm set winrm/config/service/auth`

Co to robi: Włącza autoryzację podstawową – użytkownik musi podać login i hasło.

Po co: Wzmacnia bezpieczeństwo – nie każdy może się połączyć.

5. `winrm set winrm/config/client`

Co to robi: Pozwala na połączenie z dowolnego hosta.

Po co: Ułatwia połączenie w środowisku testowym. UWAGA: To niebezpieczne w środowisku produkcyjnym.

6. `netsh advfirewall`

Co to robi: Otwiera zaporę sieciową dla połączeń WinRM.

Po co: Bez tego połączenie z zewnątrz mogłoby być zablokowane.

Ten kod przygotowuje Twój komputer z Windowsem do zdalnego zarządzania. Tworzy dla niego cyfrową "legitymację", włącza specjalny system do zdalnych połączeń, ustawia podstawowe zabezpieczenia (logowanie hasłem) i otwiera dla niego "furtkę" w wbudowanej ochronie komputera. Jednak krok z TrustedHosts="*" to taka "szeroko otwarta furtka", która w rzeczywistości, poza specjalnymi, kontrolowanymi sytuacjami, nie jest zalecana ze względów bezpieczeństwa!

📑 Krok 5: Playbook

Stwórz plik playbook.yml z zawartością:

- name: Sprawdź status usługi Windows
  hosts: windows
  tasks:
    - name: Sprawdź usługę Windows Update
      win_service:
        name: wuauserv
      register: wynik

- name: Wyświetl status
  debug:
    var: wynik

▶️ Krok 6: Uruchomienie playbooka

ansible-playbook -i hosts.ini playbook.yml

🧪 Krok 7: Test połączenia

ansible windows -i hosts.ini -m win_ping

✅ Jeśli zobaczysz pong – wszystko działa!

💡 Dodatkowe wskazówki

  • Nie używaj localhost, tylko prawdziwy IP Windowsa.
  • Trzymaj pliki w jednym katalogu (~/ansible-windows).
  • Jeśli korzystasz z WSL – upewnij się, że firewall na Windows pozwala na WinRM.

🎓 Masz pytania? Chcesz kolejny tutorial?
Daj znać! Ten poradnik jest dla Ciebie 💙

Brak komentarzy:

Prześlij komentarz