С помощью Ansible проделать следующее.
- Установить nginx
- Изменить конфигурацию nginx таким образом чтобы по запросу
GET /service_data
отдавалось содержимое файла/opt/service_state
- Разместить в
/opt/
файлservice_state
состоящий из 2 строк:
Seems work
Service uptime is 0 minutes
- Обеспечить запуск nginx
- Добавить в
cron
выполнение раз в минуту команды:
sed -i "s/is .*$/is $(($(ps -o etimes= -p $(cat /var/run/nginx.pid)) / 60)) minutes/" /opt/service_state
Для автоматизации работы с cron можно пользоваться python-crontab.
-
Написать в ansible проверку на то, что значение uptime в файле
/opt/service_state
начало изменяться. -
Привести конфигурацию ansible к идемпотентной, до соответствия следующим требованиям:
- повторный запуск ansible с той же конфигурацией не должен сбрасывать значение uptime в файле
/opt/service_state
и не должен рестартовать nginx - после изменения первой строки service_state, например на "Seems work ok" должно происходить обновление файла
/opt/service_state
и restart сервиса nginx
-
Запускается чистая виртуалка на Vagrant и на ней запускается скрипт ansible
-
curl на порт 80 по url
/service_data
должен отдать
Seems work
Service uptime is 0 minutes
-
Пауза > 1 минуты
-
curl на порт 80 по url
/service_data
должен отдать
Seems work
Service uptime is Х minutes
-
Повторный запуск ansible
-
curl на порт 80 по url
/service_data
должен отдать
Seems work
Service uptime is Х minutes
-
Изменение первой строки в service_state и повторный запуск ansible
-
curl на порт 80 по url
/service_data
должен отдать
[Измененная первая строка]
Service uptime is 0 minutes
-
Пауза > 1 минуты
-
curl на порт 80 по url
/service_data
должен отдать
[Измененная первая строка]
Service uptime is Х minutes