service
Ansible роль услуги
Добавьте свои собственные службы в вашу систему Linux.
GitHub | GitLab | Скачивания | Версия |
---|---|---|---|
Пример 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: []
Требования
- pip-пакеты, указанные в requirements.txt.
Состояние используемых ролей
Для подготовки системы используются следующие роли. Вы также можете подготовить систему другим способом.
Требование | GitHub | GitLab |
---|---|---|
robertdebock.bootstrap |
Контекст
Эта роль является частью многих совместимых ролей. Посмотрите документацию этих ролей для получения дополнительной информации.
Вот обзор связанных ролей:
Совместимость
Эта роль была протестирована на следующих образах контейнеров:
контейнер | теги |
---|---|
EL | 9 |
Debian | все |
Fedora | все |
Ubuntu | все |
Минимальная требуемая версия Ansible - 2.12, тесты проводились на:
- предыдущей версии.
- текущей версии.
- версии разработки.
Если вы обнаружите проблемы, пожалуйста, зарегистрируйте их в GitHub.
Лицензия
Информация об авторе
Пожалуйста, подумайте о спонсировании меня.
ansible-galaxy install robertdebock/ansible-role-service