robertdebock.service

Rola Ansible usługa

Dodaj niestandardowe usługi do swojego systemu Linux.

GitHub GitLab Pobrania Wersja
github gitlab downloads Wersja

Przykładowy Playbook

Ten przykład pochodzi z molecule/default/converge.yml i jest testowany przy każdym pushu, pull requeście i wydaniu.

---
- name: Konwergencja
  hosts: all
  become: true
  gather_facts: true

  vars:
    _service_test_command:
      default: /usr/bin/sleep
      Alpine: /bin/sleep
      Debian: /bin/sleep
      Ubuntu-16: /bin/sleep
      Ubuntu-18: /bin/sleep
    service_test_command: "{{ _service_test_command[ansible_distribution ~ '-' ~ ansible_distribution_major_version] | default(_service_test_command[ansible_os_family] | default(_service_test_command['default'])) }}"  # noqa 204 Tylko długo.

  roles:
    - role: robertdebock.service
      service_list:
        - name: simple-service
          description: Prosta Usługa
          start_command: "{{ service_test_command }} 3600"
          state: started
          enabled: true
        - name: stopped-service
          description: Prosta Usługa
          start_command: "{{ service_test_command }} 3601"
          state: stopped
          enabled: false
        - name: specific-stop-service
          description: Usługa z określonym zatrzymaniem
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - name: specific-user-group-service
          description: Usługa dla określonej grupy użytkowników
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - name: specific-workingdirectory-service
          description: Usługa z określonym katalogiem roboczym
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - name: specific-pattern-service
          description: Usługa z określonym wzorcem statusu
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - name: variable-service
          description: Usługa z zmiennymi środowiskowymi
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - name: pidfile-service
          description: Usługa z plikiem PID
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - name: environmentfile-service
          description: Usługa z plikiem środowiskowym
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

Maszyna musi być przygotowana. W CI robi się to używając molecule/default/prepare.yml:

---
- name: Przygotowanie
  hosts: all
  become: true
  gather_facts: false
  serial: 30%

  roles:
    - role: robertdebock.bootstrap

  post_tasks:
    - name: Umieść /environmentfile.txt
      ansible.builtin.copy:
        content: "value=zmienna"
        dest: /environmentfile.txt
        mode: "0644"

Zobacz także pełne wyjaśnienie i przykład dotyczące korzystania z tych ról.

Zmienne Roli

Domyślne wartości zmiennych są ustawione w defaults/main.yml:

---
# plik domyślny dla usługi

# service_list może zawierać listę usług do dodania do systemu.
# Obowiązkowe elementy dla każdej pozycji to:
# - name: (krótka) nazwa usługi, np. "tomcat".
# - description: nieco dłuższa nazwa, np. "serwer aplikacji Tomcat".
# - start_command: polecenie do uruchomienia demona,
#   np. "/usr/local/bin/java -jar some.jar"
# Opcjonalne elementy to:
# - stop_command: Domyślnie program, który jest uruchamiany, jest znajdowany i zatrzymywany.
#   W przypadku, gdy działający program zostaje przemianowany lub rozszerzony (w tym ścieżka) w trakcie
#   uruchamiania, możesz tutaj określić niestandardowe polecenie zatrzymania, np. "pkill foo"
# - status_pattern: Jaki program (lub wzorzec) należy szukać podczas sprawdzania
#   statusu programu, np. "artifactory".
# - type: Jak program się uruchamia; "simple" lub "forking". Simple oznacza, że
#   program działa w tle, np. "nc -l 1234". Forking oznacza, że
#   program sam się fork'uje, np. "nc -l 12345 &"
# - working_directory: Katalog, do którego chcesz przejść przed uruchomieniem usługi.
# - environment_variables: Lista zmiennych do ustawienia. Na przykład:
#   environment_variables:
#     variable1: value1
#     variable2: value2
# - after: Uruchom po wspomnianej usłudze.
# - restart_mode: Tryb, który ma być użyty, na przykład "zawsze".
# - restart_seconds: Czas na zakończenie ponownego uruchamiania.
service_list: []

Wymagania

Stan używanych ról

Poniższe role są używane do przygotowania systemu. Możesz przygotować swój system w inny sposób.

Wymaganie GitHub GitLab
robertdebock.bootstrap Stan budowy GitHub Stan budowy GitLab

Kontekst

Ta rola jest częścią wielu kompatybilnych ról. Zobacz dokumentację tych ról w celu uzyskania dalszych informacji.

Oto przegląd powiązanych ról: dependencies

Kompatybilność

Ta rola została przetestowana na tych obrazach kontenerów:

kontener etykiety
EL 9
Debian wszystkie
Fedora wszystkie
Ubuntu wszystkie

Minimalna wymagana wersja Ansible to 2.12, testy były przeprowadzane na:

  • poprzedniej wersji.
  • aktualnej wersji.
  • wersji rozwojowej.

Jeśli znajdziesz problemy, proszę zgłoś je w GitHub.

Licencja

Apache-2.0.

Informacje o autorze

robertdebock

Proszę rozważ wsparcie mnie.

O projekcie

Add custom services to your Linux system.

Zainstaluj
ansible-galaxy install robertdebock.service
Licencja
apache-2.0
Pobrania
351.7k
Właściciel
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.