Skip to content

Ściąga z modułów Ansible

Ansible to potężne narzędzie do automatyzacji operacji IT. W tym artykule przedstawimy sposób użycia jego najpopularniejszych modułów.

Format

Podstawowa struktura pliku

---
- hosts: production
  remote_user: root
  tasks:
  - ···

Proszę umieszczać moduły w sekcji tasks.

Format zadań (Task Format)

Format jednowierszowy

- apt: pkg=vim state=present

Format mapowania (Mapping)

- apt:
    pkg: vim
    state: present

Format skalarny złożony (Folded Scalar)

- apt: >
    pkg=vim
    state=present

Do definiowania zadań można użyć dowolnego z powyższych formatów. W przypadku krótkich deklaracji zaleca się format jednowierszowy; w przypadku dłuższych zaleca się format mapowania.

Moduły

Aptitude

Zarządzanie pakietami

- apt:
    pkg: nodejs
    state: present # absent | latest
    update_cache: yes
    force: no

Plik pakietu Deb

- apt:
    deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"

Zarządzanie repozytoriami (Źródła oprogramowania)

- apt_repository:
    repo: "deb https://··· raring main"
    state: present

Klucz repozytorium

- apt_key:
    id: AC40B2F7
    url: "http://···"
    state: present

Związane z Git

- git:
    repo: git://github.com/
    dest: /srv/checkout
    version: master
    depth: 10
    bare: yes

Odnośnik: moduł git

Konfiguracja Git

- git_config:
    name: user.email
    scope: global # local | system
    value: hi@example.com

Odnośnik: moduł git_config

Zarządzanie użytkownikami

- user:
    state: present    # Stan: obecny
    name: git        # Nazwa użytkownika
    system: yes      # Użytkownik systemowy
    shell: /bin/sh   # Powłoka logowania
    groups: admin    # Grupy
    comment: "Git Version Control"  # Komentarz

Odnośnik: moduł user

Zarządzanie usługami

- service:
    name: nginx      # Nazwa usługi
    state: started   # Stan: uruchomiona
    enabled: yes     # Czy włączać przy starcie

Odnośnik: moduł service

Związane z Shell

polecenie shell

- shell: apt-get install nginx -y

Dodatkowe opcje

- shell: echo hello
  args:
    creates: /path/file  # Pomiń, jeśli plik istnieje
    removes: /path/file  # Pomiń, jeśli plik nie istnieje
    chdir: /path        # Przejdź do tego katalogu przed wykonaniem

Przykład poleceń wielowierszowych

- shell: |
    echo "hello there"
    echo "multiple lines"

Odnośnik: moduł shell

Wykonywanie skryptów

- script: /x/y/script.sh
  args:
    creates: /path/file  # Pomiń, jeśli plik istnieje
    removes: /path/file  # Pomiń, jeśli plik nie istnieje  
    chdir: /path        # Przejdź do tego katalogu przed wykonaniem

Odnośnik: moduł script

Operacje na plikach

Zarządzanie plikami

- file:
    path: /etc/dir
    state: directory # Typ: katalog|plik|link|hardlink|touch|nieobecny

    # Parametry opcjonalne:
    owner: bin      # Właściciel
    group: wheel    # Grupa
    mode: 0644      # Uprawnienia
    recurse: yes    # Tworzenie rekurencyjne
    force: yes      # Wymuś utworzenie linku symbolicznego

Odnośnik: moduł file

Kopiowanie plików

- copy:
    src: /app/config/nginx.conf   # Plik źródłowy
    dest: /etc/nginx/nginx.conf   # Miejsce docelowe

    # Parametry opcjonalne:
    owner: user     # Właściciel
    group: user     # Grupa
    mode: 0644      # Uprawnienia
    backup: yes     # Czy tworzyć kopię zapasową

Odnośnik: moduł copy

Szablony (Templates)

- template:
    src: config/redis.j2       # Plik źródłowy szablonu
    dest: /etc/redis.conf      # Miejsce docelowe

    # Parametry opcjonalne:
    owner: user     # Właściciel
    group: user     # Grupa
    mode: 0644      # Uprawnienia
    backup: yes     # Czy tworzyć kopię zapasową

Odnośnik: moduł template

Operacje lokalne

Wykonywanie lokalne

- name: Wykonaj operację lokalnie
  local_action: shell echo hello

Wyjście debugowania (Debug)

- debug:
    msg: "Hello {{ var }}"

Odnośnik: moduł debug