supervisor

Ansible роль supervisor

Супервизор (менеджер состояния процессов) для Linux.

GitHub Версия Проблемы Запросы на внесение изменений Скачивания
github Версия Проблемы ЗапросыНаВнесениеИзменений Ansible роль

Пример плейбука

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

---
- name: Согласовать
  hosts: all
  become: true

  environment:
    PATH: "/usr/local/bin:{{ ansible_env.PATH }}"

  vars:
    supervisor_user: root
    supervisor_password: fizzbuzz

  pre_tasks:
    - name: обновить кэш apt (Debian).
      apt: update_cache=true cache_valid_time=600
      when: ansible_os_family == 'Debian'

    # Установить curl для тестов.
    - name: установить curl для тестов.
      package: name=curl state=present

    # Установить Apache для тестов.
    - block:
        - name: установить Apache (RedHat).
          package: name=httpd state=present
        - name: убедиться, что Apache не запущен (RedHat).
          service: name=httpd state=stopped enabled=no
      when: ansible_os_family == 'RedHat'

    - block:
        - name: установить Apache (Debian).
          package: name=apache2 state=present
        - name: убедиться, что Apache не запущен (Debian).
          service: name=apache2 state=stopped enabled=no
      when: ansible_os_family == 'Debian'

    - name: создать тестовый HTML файл.
      ansible.builtin.copy:
        content: "<html><head><title>Тест</title></head><body>Тест.</body></html>"
        dest: /var/www/html/index.html
        force: false
        group: root
        owner: root
        mode: 0644

    # Добавить Apache в supervisor_programs.
    - name: установить команду запуска Apache (Debian).
      ansible.builtin.set_fact:
        apache_start_command: apache2ctl -DFOREGROUND
      when: ansible_os_family == 'Debian'

    - name: установить команду запуска Apache (RedHat).
      ansible.builtin.set_fact:
        apache_start_command: httpd -DFOREGROUND
      when: ansible_os_family == 'RedHat'

    - name: добавить Apache в supervisor_programs.
      ansible.builtin.set_fact:
        supervisor_programs:
          - name: 'apache'
            command: "{{ apache_start_command }}"
            state: present
            configuration: |
              autostart=true
              autorestart=true
              startretries=1
              startsecs=1
              redirect_stderr=true
              stderr_logfile=/var/log/apache-err.log
              stdout_logfile=/var/log/apache-out.log
              user=root
              killasgroup=true
              stopasgroup=true

  roles:
    - role: buluma.supervisor

  tasks:
    - name: вызвать обработчики, чтобы супервизор запустил всё, что должен.
      ansible.builtin.meta: flush_handlers

  post_tasks:
    - name: дождаться, пока Apache запустится (если это произойдет...).
      ansible.builtin.wait_for:
        port: 80
        delay: 2

    - name: проверить, что Apache отвечает на порту 80.
      ansible.builtin.uri:
        url: http://127.0.0.1/
        method: GET
        status_code: 200

    - name: проверить, доступен ли supervisorctl.
      command: supervisorctl --help
      args:
        warn: false
      changed_when: false

    - name: подтвердить, что supervisorctl работает через стандартный UNIX-сокет.
      community.general.supervisorctl:
        name: apache
        state: restarted
        username: "{{ supervisor_user }}"
        password: "{{ supervisor_password }}"
      changed_when: false

    - name: подтвердить, что supervisorctl работает с unix-сокетом
      command: supervisorctl status
      args:
        warn: false
      changed_when: false

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

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

  roles:
    - role: buluma.bootstrap
    - role: buluma.pip
    - role: buluma.core_dependencies

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

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

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

---
# Установите конкретную версию Супервизора здесь (например, '3.3.1').
supervisor_version: ''

# Выберите, использовать ли скрипт инициализации или конфигурацию юнита systemd для запуска
# Супервизора при его установке и/или после загрузки системы.
supervisor_started: true
supervisor_enabled: true

supervisor_config_path: /etc/supervisor

# Список `программ`, которые будет контролировать Супервизор. Пример закомментирован ниже.
supervisor_programs: []
# - name: 'apache'
#   command: apache2ctl -c "ErrorLog /dev/stdout" -DFOREGROUND
#   state: present
#   configuration: |
#     autostart=true
#     autorestart=true
#     startretries=1
#     startsecs=1
#     redirect_stderr=true
#     stderr_logfile=/var/log/apache-err.log
#     stdout_logfile=/var/log/apache-out.log
#     user=root
#     killasgroup=true
#     stopasgroup=true

supervisor_nodaemon: false

supervisor_log_dir: /var/log/supervisor

supervisor_user: root
supervisor_password: 'my_secret_password'

supervisor_unix_http_server_enable: true
supervisor_unix_http_server_socket_path: /var/run/supervisor.sock
supervisor_unix_http_server_password_protect: true

supervisor_inet_http_server_enable: false
supervisor_inet_http_server_port: '*:9001'
supervisor_inet_http_server_password_protect: true

Требования

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

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

Требование GitHub Версия
buluma.bootstrap Ansible Molecule Версия
buluma.pip Ansible Molecule Версия
buluma.core_dependencies Ansible Molecule Версия

Контекст

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

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

dependencies

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

Эта роль была протестирована на этих контейнерных изображениях:

контейнер теги
EL 8
Debian все
Ubuntu все
Kali все

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

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

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

История изменений

История роли

Лицензия

Apache-2.0

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

Shadow Walker

О проекте

Supervisor (process state manager) for Linux.

Установить
ansible-galaxy install buluma/ansible-role-supervisor
Лицензия
apache-2.0
Загрузки
4022
Владелец
DevOps Engineer