У меня немного относительно небольших серверов, на которых работают дистрибутивы Linux. Иногда мне нужно переустановить 1 или 2 сервера "разработки" с нуля. Часто просто забываю настроить мелочи, например. пересылка в sysctl.conf или забудьте установить скрипт мониторинга обновлений, несущественные, но полезные пакеты и т. д.
В идеале мне хотелось бы иметь среди них точную настройку.
1) Как вы относитесь к документированию процесса «развертывания» для наведения порядка? Вы можете привести мне несколько примеров?
2) Вы пользуетесь популярными инструментами развертывания? Я смотрел на такие вещи, как повар и марионетка, но сейчас они кажутся мне слишком сложными. Что-нибудь попроще?
Что вам не нравится в Puppet (или Chef)? Это инструменты, которые созданы для того, чтобы делать именно то, что вам нужно. Если это сложность настройки клиент / сервер, для любого из них вы можете пропустить установку серверного компонента и просто запустить клиент в «автономном» или «индивидуальном» режиме.
Какие-то простые и подвижные модульные сценарии bash как метод развертывания, так и автономная документация? Пока ты не пойдешь марионеткой / поваром / чем-нибудь еще ...
В конечном итоге я перехожу к системе Chef для автоматического масштабирования / обнаружения, но сейчас я фактически контролирую процесс начальной загрузки сервера непосредственно из исходного кода того, что мне нужно, чтобы сервер был развернут. Не уверен, что вы находитесь в веб-стеке или используете Ruby, но действительно хороший инструмент, если вы: резюме (по мотивам Капистрано)
Он позволяет запускать сценарии на любом количестве удаленных серверов. Он работает с использованием Capfile для определения ваших серверов и тому подобного, а затем имеет несколько встроенных задач, которые вы можете расширить. Одна из них - задача: bootstrap. Таким образом, у меня есть простая цепочка при настройке новых серверов
before 'bootstrap', 'bootstrap:dependencies'
...
namespace :bootstrap do
task :dependencies do
uname = capture('uname -r')
abort('ENV Not Supported') unless uname.strip == "some uname version"
sudo('apt-get -y install build-essential')
run('echo 'America/New_York' | sudo tee /etc/timezone')
end
end
...
Это всего лишь несколько примеров того, что вы можете сделать с помощью команд «capture», «sudo» и «run», которые вам предоставляет recap. Конечно, в этом примере предполагается, что программное обеспечение, которое вы развертываете, привязано к стеку ruby, но дело в том, что такие инструменты существуют для всех типов языков / фреймворков.
Я предлагаю просто привязать подготовку сервера к коду, который вы развертываете на этом сервере, если вы не хотите использовать такой инструмент, как chef или puppet.
Что касается среды разработки, я большой поклонник Vagrant. Это проще (ИМХО) поблагодарить шеф-повара и марионетку, и в основном это позволяет вам настроить среду один раз, а затем разорвать ее и восстановить, сколько душе угодно.
Взглянуть; http://www.vagrantup.com/
Поскольку это второй вопрос на этой неделе, на который я порекомендовал Vagrant, я просто хочу заявить, что я никоим образом не связан с ними и ничего не получаю от их рекомендаций!