41111111111Rating 4.00 (2 Votes)

Testinfra - библиотека для написания тестов направленных на проверку состояний служб, серверов и т.п., может работать с ansible, puppet, chef. Сегодня в детали вдаваться не буду, расскажу о небольшой задаче - 

необходимо локально периодически проверять состояние служб - sshd, nginx, php-fpm, mariadb в данном случае интересует состояние running.

Установка

Устанавливается из коробки:

dnf install python3-testinfra

Или если необходимо можно использовать pip:

pip install testinfra

Создание теста

Собственно сам скрипт:

import testinfra

def test_os_release(host):
    assert host.file("/etc/os-release").contains("Fedora")

def test_sshd_inactive(host):
    assert host.service("sshd").is_running is True

def test_nginx_is_installed(host):
    nginx = host.package("nginx")
    assert nginx.is_installed
    assert nginx.version.startswith("1.16.")

def test_nginx_running(host):
    nginx = host.service("nginx")
    assert nginx.is_running

def test_fpm_running(host):
    nginx = host.service("php-fpm")
    assert nginx.is_running

def test_mariadb_running(host):
    nginx = host.service("mariadb")
    assert nginx.is_running

Запуск скрипта:

py.test -v test_infra.py

Результат:

testinfra

Использование с unittest

Как пример:

mport unittest
import testinfra

class Test(unittest.TestCase):

    def setUp(self):
        self.host = testinfra.get_host("local://")

    def test_nginx_service(self):
        service = self.host.service("nginx")
        self.assertTrue(service.is_running)

    def test_nginx_config(self):
        self.assertEqual(self.host.run("nginx -t").rc, 0)

    def test_nginx_service(self):
        service = self.host.service("php-fpm")
        self.assertTrue(service.is_running)


if __name__ == "__main__":
    unittest.main()

Здесь проверяется наличие запущенного сервиса / корректность конфигурации nginx, проверка состояния сервиса php-fpm, запускается так:

python test_infra_init.py

Результат:

python test_infra_init.py 
..
----------------------------------------------------------------------
Ran 2 tests in 0.104s

OK

Доп. линки:

Добавить комментарий


Защитный код
Обновить

Сейчас 330 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз