Kolekcje w Ansible (Collections) – struktura, zasada działania i przykłady
Od wersji Ansible 2.10 sposób organizacji modułów, wtyczek i ról został gruntownie zmieniony. Wprowadzono pojęcie kolekcji (collections), które pozwalają logicznie grupować komponenty Ansible – takie jak moduły, role, pluginy, filtry i dokumentację – w niezależne pakiety. Dzięki temu Ansible stał się bardziej modularny, rozszerzalny i łatwiejszy w utrzymaniu w dużych środowiskach DevOps.
1. Czym są kolekcje (Ansible Collections)?
Kolekcja to zestaw powiązanych modułów, ról i wtyczek, publikowany jako pojedyncza paczka. Każda kolekcja posiada unikalny identyfikator w formacie:
namespace.collection_name.module_name
lub w przypadku modułów wbudowanych:
ansible.builtin.module_name
Ten schemat nazywamy Fully Qualified Collection Name (FQCN). Od wersji 2.10 używanie FQCN jest zalecane i w wielu przypadkach wymagane – pozwala uniknąć konfliktów nazw oraz precyzyjnie wskazać, z której kolekcji pochodzi dany moduł.
2. Kolekcja wbudowana – ansible.builtin
Kolekcja ansible.builtin zawiera podstawowe moduły, które są dostępne w każdej instalacji Ansible. Nie wymaga osobnej instalacji i obejmuje moduły używane do codziennej administracji systemami Linux / Unix.
Przykładowe moduły:
ansible.builtin.command– uruchamianie poleceń systemowych,ansible.builtin.copy– kopiowanie plików na hosty zdalne,ansible.builtin.package– zarządzanie pakietami niezależnie od dystrybucji,ansible.builtin.service– uruchamianie i zatrzymywanie usług,ansible.builtin.user– tworzenie użytkowników systemowych.
Przykład użycia:
- hosts: webservers
become: yes
tasks:
- name: Instalacja pakietu Apache
ansible.builtin.package:
name: apache2
state: present
3. Kolekcja ansible.windows – automatyzacja systemów Windows
Moduły do automatyzacji systemów Windows zostały wydzielone do osobnej kolekcji ansible.windows. Kolekcja ta zawiera pełny zestaw narzędzi do zarządzania systemami Windows Server, Active Directory, PowerShellem i usługami systemowymi.
Przykładowe moduły:
ansible.windows.win_feature– instalacja ról i funkcji Windows,ansible.windows.win_service– zarządzanie usługami,ansible.windows.win_user– zarządzanie użytkownikami,ansible.windows.win_copy– kopiowanie plików,ansible.windows.win_updates– instalacja aktualizacji systemowych.
Przykład:
- name: Instalacja IIS na Windows
hosts: windows
connection: winrm
tasks:
- name: Zainstaluj rolę IIS
ansible.windows.win_feature:
name: Web-Server
state: present
4. Kolekcja cisco.ios – automatyzacja sieci
Kolekcja cisco.ios zawiera moduły przeznaczone do automatyzacji urządzeń sieciowych Cisco z systemem IOS. Umożliwia zarządzanie interfejsami, VLAN-ami, konfiguracją BGP, ACL-ami i wieloma innymi aspektami infrastruktury sieciowej.
Przykładowe moduły:
cisco.ios.ios_interface– konfiguracja interfejsów,cisco.ios.ios_config– wysyłanie konfiguracji i poleceń,cisco.ios.ios_command– pobieranie informacji z urządzeń (np.show version),cisco.ios.ios_vlan– zarządzanie VLAN-ami.
Przykład:
- name: Konfiguracja interfejsu Cisco
hosts: cisco
connection: network_cli
gather_facts: no
tasks:
- name: Ustaw opis interfejsu
cisco.ios.ios_interface:
name: GigabitEthernet0/1
description: Polaczenie z siecia LAN
enabled: true
5. Kolekcje społeczności (community collections)
Kolekcje z prefiksem community. są rozwijane przez społeczność open source. Są dostępne w Ansible Galaxy i obejmują setki integracji z usługami chmurowymi, bazami danych, systemami bezpieczeństwa czy platformami kontenerowymi.
Poniżej kilka przykładów popularnych kolekcji społecznościowych:
a) community.general
Najbardziej rozbudowana kolekcja społecznościowa. Zawiera moduły do zarządzania systemami, narzędziami, bazami danych, siecią, chmurą i wieloma integracjami.
Przykład:
- name: Zarządzanie zaporą UFW
hosts: all
become: yes
tasks:
- name: Wlacz UFW i otworz port 80
community.general.ufw:
rule: allow
port: 80
state: enabled
Pełna nazwa modułu: community.general.ufw
b) community.hashi_vault
Kolekcja do integracji z HashiCorp Vault – systemem zarządzania sekretami, hasłami i tokenami. Umożliwia bezpieczne pobieranie haseł, certyfikatów lub kluczy API w trakcie działania playbooków.
Przykład:
- name: Pobierz haslo z HashiCorp Vault
hosts: localhost
connection: local
tasks:
- name: Odczytaj sekret z Vault
community.hashi_vault.hashi_vault:
url: https://vault.example.com:8200
token: "{{ vault_token }}"
secret: "secret/data/database"
register: vault_data
- name: Wyswietl wartosc
ansible.builtin.debug:
msg: "Haslo do bazy: {{ vault_data.data.password }}"
c) community.minio
Kolekcja community.minio umożliwia zarządzanie serwerami i zasobami MinIO – obiektowym systemem przechowywania danych kompatybilnym z Amazon S3.
Przykład:
- name: Utworz bucket w MinIO
hosts: localhost
connection: local
tasks:
- name: Tworzenie bucketa
community.minio.minio_bucket:
access_key: "{{ minio_access }}"
secret_key: "{{ minio_secret }}"
endpoint: https://minio.example.com
name: backups
state: present
d) infinispan.infinispan
Kolekcja dedykowana dla Infinispan – rozproszonej pamięci podręcznej i bazy danych klucz-wartość. Umożliwia zarządzanie klastrami, konfiguracją cache, użytkownikami i bezpieczeństwem.
Przykład:
- name: Tworzenie cache w Infinispan
hosts: localhost
tasks:
- name: Utworz nowy cache
infinispan.infinispan.cache:
name: session-cache
state: present
host: infinispan.local
port: 11222
e) keycloak.keycloak
Kolekcja keycloak.keycloak służy do integracji z platformą Keycloak – systemem zarządzania tożsamością i uwierzytelnianiem (SSO / OpenID Connect).
Przykład:
- name: Dodaj uzytkownika do Keycloak
hosts: localhost
connection: local
tasks:
- name: Utworz uzytkownika
keycloak.keycloak.user:
auth_keycloak_url: https://id.example.com
auth_realm: master
auth_username: admin
auth_password: "{{ admin_pass }}"
realm: app-realm
username: jan.kowalski
email: Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
enabled: true
6. Instalacja kolekcji
Kolekcje można instalować z serwisu Ansible Galaxy lub bezpośrednio z repozytorium Git.
Przykład instalacji:
ansible-galaxy collection install community.general
ansible-galaxy collection install cisco.ios
ansible-galaxy collection install keycloak.keycloak
Sprawdzenie zainstalowanych kolekcji:
ansible-galaxy collection list
7. Podsumowanie
Kolekcje w Ansible to fundament nowoczesnej architektury automatyzacji. Pozwalają organizować moduły i role w sposób skalowalny, bezpieczny i łatwy w dystrybucji. Dzięki nim można bezproblemowo integrować Ansible z dowolnym systemem — od serwerów Linux, przez Windows, urządzenia sieciowe Cisco, aż po platformy takie jak HashiCorp Vault, MinIO czy Keycloak.
Najważniejsze korzyści kolekcji:
- precyzyjne nazwy (FQCN), eliminujące konflikty,
- łatwe aktualizacje niezależnych komponentów,
- możliwość instalacji tylko potrzebnych modułów,
- standaryzacja w projektach DevOps.
Dzięki modelowi kolekcji Ansible stał się nie tylko narzędziem do zarządzania systemami ale potężną platformą integracyjną dla całej infrastruktury IT.