Назад | Перейти на главную страницу

Автоматическая перезагрузка файлов конфигурации (nginx.conf и т. Д.) После изменений

Я все время забываю перезагрузить настройки nginx, sudo service nginx reloadво время работы / экспериментирования / изучения файлов конфигурации, nginx (и другие включенные файлы конфигурации).

Есть ли способ добиться этого, чтобы nginx перезагружал файлы конфигурации после любого из следующих изменений:

Вы можете подумать, что это просто глупо / глупо, что я забываю перезагрузить, но пока я новичок и действительно учусь и экспериментирую, этого действительно достаточно, чтобы отслеживать.

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

Очень стоит выработать привычку использовать CM прямо сейчас, пока вы учитесь, так как позже в вашей карьере будет намного сложнее избавиться от вредных привычек.

Чтобы вы начали, вот простой доступный playbook, который развернет файл конфигурации nginx на вашем сервере, а затем перезапустит nginx, если что-то изменилось:

---
- hosts: web
  sudo: yes

  tasks:
    - name: Install packages
      apt: state=installed install_recommends=no name={{ item }}
      with_items:
        - nginx

    - name: Deploy nginx config file
      copy: src=nginx.conf dest=/etc/nginx/nginx.conf
      notify: restart nginx

  handlers:
    - name: restart nginx
      service: name=nginx state=restarted

Сохраните этот текст в файл, например foo.yml. Вам также понадобится файл инвентаризации, чтобы сообщить ansible, на каком хосте (-ах) запускать эти команды. Создать hosts файл с содержанием вроде:

[web]
servername.example.com

Сохраните свой playbook, файл инвентаря и nginx.conf в одном каталоге.

Затем вы можете применить сценарий:

$ ansible-playbook foo.yml -i hosts -K

После выполнения этой команды вам будет предложено ввести пароль sudo. Предоставьте его, и тогда playbook запустится.

Очевидно, вы хотите иметь CM (систему управления конфигурацией), а Ansible - это средство автоматизации развертывания приложений.

Я думаю, что CI (непрерывная интеграция) или CD (непрерывное развертывание) также может удовлетворить ваши потребности. Используйте git + CI / CD + VM, вы можете легко протестировать свой сервис. Некоторые сервисы вы можете попробовать:

Возможность доставки, Circle CI, GitLab CI.