Goss

Goss — инструмент, с помощью которого можно очень быстро выполнить проверку конфигурации того или иного сервера, либо контейнера. Разработчики отмечают, что проект является альтернативой serverspec, однако нужно сказать, что альтернатива получается достойная.

Что умеет проверять goss:

  • Доступность адреса и порта на сервере.
  • Файл на сервере, его атрибуты.
  • Сетевые интерфейсы.
  • Параметры ядра.
  • Точки монтирования партаций.
  • Резольв домена и отдаваемые DNS записи.
  • Ответ веб-сервера, статус, наличие ключевого слова.

Установка и простой тест.

Ставим goss выполнив команду:

# curl -fsSL https://goss.rocks/install | sh

Сгенерируем goss.yaml файл, в котором будут описаны sshd и postfix сервисы. Удобство утилиты заключается в том, что с помощью инструмента autoadd, goss на уже запущенной системе умеет генерировать тесты автоматически. С помощью autoadd мы можем создать наборы правил для пользователя, группы, пакета, файла, процесса или сервиса.

# goss autoadd sshd
# goss autoadd postfix

Затем выполним проверку конфигурации сервера, сравнив её с полученным файлом:

# goss validate
...........................

Total Duration: 0.041s
Count: 27, Failed: 0, Skipped: 0

Как видим, конфигурация сервера соответствует тому, что описано в файле. Теперь откроем файл и намеренно внесём правки (сменим шелл, изменим gid, например). Сохраним изменения и попробуем выполнить проверку ещё раз:

# goss validate
.F.........F...............

Failures/Skipped:

User: postfix: uid:
Expected
 <int>: 89
to equal
 <int>: 99

User: sshd: shell:
Expected
 <string>: /sbin/nologin
to equal
 <string>: /bin/bash

Total Duration: 0.027s
Count: 27, Failed: 2, Skipped: 0

Таким образом, имея на руках файл для тестирования, администратор может выполнять проверку своих серверов на соответствие требуемой конфигурации. К слову, сами результаты, имеется возможность отдавать по http (в том числе и в JSON формате):

# goss serve &
[1] 2293
2017/10/23 11:10:34 Starting to listen on: :8080

# curl localhost:8080/healthz
2017/10/23 11:11:09 [::1]:48410: requesting health probe
2017/10/23 11:11:09 [::1]:48410: Stale cache, running tests
.F.........F...............

Failures/Skipped:

User: postfix: uid:
Expected
 <int>: 89
to equal
 <int>: 99

User: sshd: shell:
Expected
 <string>: /sbin/nologin
to equal
 <string>: /bin/bash

Total Duration: 0.034s
Count: 27, Failed: 2, Skipped: 0

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

Вместе с goss, администраторам доступен dgoss — утилита для работы с контейнерами. О ней поговорим в отдельной заметке.

@SysadminNotes | https://sysadmin.pm

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *