service

Ansible роль услуги

Добавьте свои собственные службы в вашу систему Linux.

GitHub GitLab Скачивания Версия
github gitlab downloads Версия

Пример Playbook

Этот пример взят из molecule/default/converge.yml и тестируется при каждом обновлении, запросе на перенос и выпуске.

---
- name: Свести
  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 Просто длинное.

  roles:
    - role: robertdebock.service
      service_list:
        - name: простая-служба
          description: Простая служба
          start_command: "{{ service_test_command }} 3600"
          state: started
          enabled: true
        - name: остановленная-служба
          description: Простая служба
          start_command: "{{ service_test_command }} 3601"
          state: stopped
          enabled: false
        - name: служба-специфической-остановки
          description: Служба специфической остановки
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - name: служба-специфической-группы-пользователей
          description: Служба специфической группы пользователей
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - name: служба-специфического-рабочего-директория
          description: Служба специфического рабочего каталога
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - name: служба-специфического-шаблона-статуса
          description: Служба специфического шаблона статуса
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - name: переменная-служба
          description: Служба с переменными окружения
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - name: служба-sidfile
          description: Служба с pidfile
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - name: служба-environmentfile
          description: Служба с environmentfile
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

Машина должна быть подготовлена. В CI это делается с помощью molecule/default/prepare.yml:

---
- name: Подготовить
  hosts: all
  become: true
  gather_facts: false
  serial: 30%

  roles:
    - role: robertdebock.bootstrap

  post_tasks:
    - name: Поместить /environmentfile.txt
      ansible.builtin.copy:
        content: "value=variable"
        dest: /environmentfile.txt
        mode: "0644"

Также смотрите полное объяснение и пример о том, как использовать эти роли.

Переменные роли

Значения по умолчанию для переменных установлены в defaults/main.yml:

---
# файл значений по умолчанию для службы

# service_list может содержать список служб, которые необходимо добавить в систему.
# Обязательные элементы для каждого элемента:
# - name: (короткое) имя службы, т.е. "tomcat".
# - description: немного более длинное имя, т.е. "Tomcat application server".
# - start_command: команда для запуска демона,
#   т.е. "/usr/local/bin/java -jar some.jar"
# Необязательные элементы:
# - stop_command: По умолчанию программа, которая запущена, будет найдена и остановлена.
#   если запущенная программа переименована или расширена (включая путь) во время
#   запуска, вы можете указать свою собственную команду остановки, т.е. "pkill foo"
# - status_pattern: Какую программу (или шаблон) искать при определении
#   статуса программы, т.е. "artifactory".
# - type: Как запускается программа; "simple" или "forking". Simple означает, что
#   программа работает на переднем плане, т.е. "nc -l 1234". Forking означает, что
#   сама программа создает новый процесс, т.е. "nc -l 12345 &"
# - working_directory: Каталог, в который нужно перейти перед запуском службы.
# - environment_variables: Список переменных для установки. Например:
#   environment_variables:
#     variable1: value1
#     variable2: value2
# - after: Запустить после упомянутой службы.
# - restart_mode: Режим, который нужно использовать, например, "always".
# - restart_seconds: Время, необходимое для завершения перезапуска.
service_list: []

Требования

Состояние используемых ролей

Для подготовки системы используются следующие роли. Вы также можете подготовить систему другим способом.

Требование GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab

Контекст

Эта роль является частью многих совместимых ролей. Посмотрите документацию этих ролей для получения дополнительной информации.

Вот обзор связанных ролей: dependencies

Совместимость

Эта роль была протестирована на следующих образах контейнеров:

контейнер теги
EL 9
Debian все
Fedora все
Ubuntu все

Минимальная требуемая версия Ansible - 2.12, тесты проводились на:

  • предыдущей версии.
  • текущей версии.
  • версии разработки.

Если вы обнаружите проблемы, пожалуйста, зарегистрируйте их в GitHub.

Лицензия

Apache-2.0.

Информация об авторе

robertdebock

Пожалуйста, подумайте о спонсировании меня.

О проекте

Add custom services to your Linux system.

Установить
ansible-galaxy install robertdebock/ansible-role-service
Лицензия
apache-2.0
Загрузки
345649
Владелец
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.