Kolekcje w Ansible (Collections) – struktura, zasada działania i przykłady

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.

Przewijanie do góry