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

Как мне написать локальный тест с помощью Serverspec?

Пока что Serverspec работает отлично. Тестирую свои серверы, все в порядке.

Допустим, я хочу протестировать свой кластер LDAP, выполнив несколько команд LDAP с моей локальной рабочей станции, например ldapsearch. Причина, по которой я бы сделал это на своей рабочей станции, а не на каком-либо из серверов, заключается в том, чтобы убедиться, что все работает удаленно, включая балансировку нагрузки.

Какая конвенция? Как это достигается? Какие изменения мне нужно было бы внести в свой Rakefile? Я создал Rakefile через serverspec-init. Есть примеры этого где-нибудь?

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

В разделе о сайте говорится:

Serverspec проверяет фактическое состояние ваших серверов, выполняя команду локально, через SSH, через WinRM, через Docker API и так далее.

Мне кажется, что единственный вариант, близкий к тому, что вы ищете, - это использовать command Тип ресурса для запуска и проверьте вывод некоторых команд, которые вы хотите выполнить. http://serverspec.org/resource_types.html#command

команда

Тип ресурса команды. его (: stdout), его (: stderr), его (: exit_status)

Вы можете получить stdout, stderr и статус выхода результата команды, а также можете использовать любые сопоставители, поддерживаемые RSpec.

describe command('ls -al /') do
  its(:stdout) { should match /bin/ }
end

describe command('ls /foo') do
  its(:stderr) { should match /No such file or directory/ }
end

describe command('ls /foo') do
  its(:exit_status) { should eq 0 }
end

Вы можете установить команду, которая запускается на обратной петле (127.0.0.1), а не на внешнем сервере. Он по-прежнему будет использовать ssh локально, но сделает то, что вам нужно.