Подтвердить что ты не робот

Преимущества инструмента развертывания, такого как Ansible over shell

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

Модульная: Только одна программа на script, таким образом я могу распространять программы на разных серверах.

Простой: Сценарии оболочки чрезвычайно просты и не нуждаются ни в каком другом программном обеспечении.

Один клик: Мне нужно только один раз запустить оболочку script, и все будет установлено.

Агностик: Большинство программистов могут определить оболочку и не должны знать, как использовать определенную программу.

Версии: Поскольку мой код находится на GitHub, простое Git вытащить и перезагрузить все супервизора запустит мой последний код.

Со всеми этими преимуществами, почему люди постоянно говорят мне использовать такой инструмент, как Ansible или Chef, а не использовать оболочку?

4b9b3361

Ответ 1

Сценарии оболочки не так уж плохи, если вы их работаете так, как вам нужно.

Люди рекомендуют другие инструменты (например, CFEngine, Puppet, Chef, Ansible и все остальное) по различным причинам, некоторые из которых:

  • Тот же набор причин, по которым люди используют такие инструменты, как make вместо реализации сборки системы со сценариями.
  • Idempotency: качество, при котором взятое гарантирует, что оно может быть безопасно повторно запускать любое количество раз, и при каждом запуске он либо дойдет до желаемого , или оставаться там, или, по крайней мере, приближаться к нему в//сходящимся//способом.

    Конечно, вы можете писать сценарии, чтобы конечные результаты были идемпотентны:

     # Crude example
     grep myhost /etc/hosts || echo '1.2.3.4  myhost' >> /etc/hosts 
    

    Но это намного лучше с помощью идемпотентных инструментов.

  • Сценарии оболочки обязательно. Такие инструменты, как Chef/Ansible/Puppet, являются декларативными. В общем, декларативное приводит к повышению производительности, учитывая некоторый порог масштаба.

  • DSL убирает некоторую власть, но затем они дают вам порядок, чистоту и другие виды власти. Мне нравится сценарий оболочки, но я тоже люблю Ruby, и люди-кукольники любите свой язык! Если вы все еще думаете, что оболочка - это путь, потому что вам нравится это больше, эй, у тебя тогда нет проблем.

  • [ADDED] Перераспределяемые, повторно используемые пакеты. Ruby имеет драгоценные камни, Perl имеет CPAN, Node имеет npm, Java имеет maven - и все языки имеют свои собственные соглашения о том, как многократно использовать исходный код должен быть упакован и распространен в мире.

    Сценарии оболочки не работают.

    У шеф-повара есть кулинарные книги, которые следуют соглашениям и могут быть импортированы почти одинаково вы импортируете драгоценный камень в свое рубиновое приложение, чтобы придать вашему приложению некоторые новые возможности. У кукол есть марионетка и его модули, у Джуджу есть прелести (они довольно близки для сценариев оболочки, чтобы вы могли быть заинтересованы).

  • Инструменты действительно помогли им! Я был жестким shell-скриптом, и все же, но использование шеф-повара позволяет мне вернуться домой раньше, хорошо выспаться, остаться под контролем, быть переносимым по всей ОС, избегать путаницы - ощутимые преимущества, которые я испытал после отказавшись от крупномасштабных серверных сценариев.