Общий и автоматизированный бродячий ящик

StackOverflow https://stackoverflow.com/questions/8824017

  •  27-10-2019
  •  | 
  •  

Вопрос

Я думаю об использовании Vagrant для разработки приложений Django, но я немного запутался, и я не уверен, возможно ли то, что я хотел бы сделать.

Я успешно установил коробку Lucid32 и создал новый «экземпляр» Vagrant, с Vagrantfile, некоторыми общими каталогами и перенаправленными портами.

  • Первая проблема заключается в том, что это не кажется мне лучшим выбором при работе в команде. Как мы (например, я и другие 10 разработчиков) можем поделиться коробкой, чтобы каждое изменение в ней было разделено? Например, если через 6 месяцев нам нужен PostgreSQL, мне нужно, чтобы он работал без необходимости установить PostgreSQL 11 раз.

  • Кроме того, как я могу сделать вещи (например: PostgreSQL, Django, этот сервис и т. Д.), Чтобы начать, когда ящик начался? Я не думаю, что мне нужно сделать это и начать вручную n раз все n Вещи, которые мне нужны каждый раз.

  • И, наконец, я не очень хорошо понимаю, должны ли такие вещи, как Puppet и Chef, предназначены для полной замены ручной установки (например, через PIP или APT-GET). Это так?

Спасибо.
И мне жаль плохой английский. :-)

Это было полезно?

Решение

Я бы сказал, что ваш выбор бродяги уже был хорошим началом того, что вы ищете, но теперь вам нужно немного углубиться в шеф -повара или марионеток, чтобы дополнительно автоматизировать процесс обеспечения.

Я полагаю, что хороший выбор в вашем сценарии - сначала поместить и то, что Vagrantfile и соответствующий марионеток проявляется под управлением версий в рамках вашего проекта. Кроме того, все конфигурации, касающиеся этой машины, также должны быть помещены в управление версиями и/или быть доступными через какой -то репозиторий артефакта.

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

Что касается вашего второго вопроса и возвращения к моему открытию: Puppet (что мне нравится) или шеф -повар - это ваши инструменты и могут спасти вас и ваших коллег в будущем. Я буду придерживаться кукол здесь, так как я не знаю шеф -повара слишком хорошо.

Благодаря Puppet вы можете управлять всем, что вам нужно, установкой пакетов, изменением конфигураций и обеспечением выполнения определенных услуг или в целом, что в системе есть состояние, которым вы хотите. Более того, если вы или другой командный член сделал несколько злонамеренных почетных положений в его/ее коробке, вы можете просто сбросить изменения в своем манифесте VagrantFile/Puppet, введите

vagrant destroy && vagrant up

И коробка легко доставит обратно в последнее состояние версии.

Например, возьмите следующий манифестный файл:

package { "mysql-server-5.1":
  ensure => present
}

file { "/etc/mysql/my.cnf":
  owner => "root",
  content => "http://myrepository.local/myProject/configurations/mysql/my.cnf",
  require => Package["mysql-server-5.1"]
}

service { "mysql":
  ensure => running,
  subscribe => File["/etc/mysql/my.cnf"],
  require => File["/etc/mysql/my.cnf"]
}

Что это делает, это, прежде всего, проверяет механизм пакета ОС в вашем поле (имена в примере предполагают недавнюю Ubuntu), если пакет "mysql-server-5.1" установлен Это. Через атрибут «потребовать» вторая директива будет выполнена после первой (и только в случае, если он сработал), изменяя конфигурацию MySQL на той, которую вы также зарегистрировали и/или опубликовано где -то, что вы можете достичь (что также может быть Поместите в ту же папку, что и Vagrantfile, и затем будет доступен в поле под /бродяги). Последний шаг, который снова будет выполнен, только в том случае, если изменение сработавшей конфигурации обеспечит, чтобы служба «MySQL» работает или запускается или перезапускается, если она уже работает при изменении конфигурации.

Теперь вы можете подключить этот манифест в своем Vagrantfile:

Vagrant::Config.run do |config|

  config.vm.box = "lucid32"
  config.vm.box_url = "http://files.vagrantup.com/lucid32.box"

  config.vm.define "node1" do |cfg|
    cfg.vm.network "10.23.5.11"
    cfg.vm.provision :puppet do |puppet|
      puppet.manifests_path = "manifests"
      puppet.manifest_file = "node1.pp"
    end
  end
end

Со всеми изменениями, помимо «испытающих ударов», сделанных в такой среде, как эта, все команды мебель гарантируют одну и ту же настройку легко и воспроизводимым прямо у их кончиков пальцев.

Лично мне нравится пробовать что -то в руке в руке, и когда я нашел правильную настройку и конфигурацию, перевести их в марионеточный манифест, чтобы иметь, если он будет готов к последующему использованию и обмену членами команды.

Поскольку марионет Конфигурации для предоставления постановки или средств тестирования позже, если вы решите. Это гораздо больше вариантов с куклой и прочитание через Руководство по языку должен дать вам хорошее представление о том, что еще вы можете сделать с этим.

Надеюсь, я смогу помочь :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top