Мне нужно иметь два проекта. Один из них - настроить сервер. Другой - веб-приложение. Я пытаюсь использовать SaltStack для этого через Vagrant. Я хочу, чтобы после подготовки сервера я мог позвонить в папку, в которой находится проект веб-приложения, найти солевой стек и начать новую подготовку. Я, возможно, отключил логотип здесь, но короче говоря, прямо сейчас я могу сделать сервер. Единственный способ получить приложение - это загрязнить солевые папки сервера с помощью .sls
и столбы и тому подобное с приложениями. Мне нужно сделать что-то большее, например,
Vagrant.configure("2") do |config|
#sample vagrant salt
config.vm.synced_folder "provision/salt", "/srv/salt"
config.vm.provision :salt do |salt|
salt.bootstrap_script = 'provision/bootstrap_salt.sh'
salt.install_type = install_type
salt.verbose = verbose_output
salt.minion_config = "provision/salt/minions/vag.conf"
salt.run_highstate = true
end
end
который будет работать нормально, но затем в последний раз .sls
, давай назовем это final.sls
, мы вызываем папку, содержащую приложение и солт-стек, который будет развертывать его состояние. Что-то вроде:
|-/www - the www host folder that comes with this project
| |-/{project name} - the project folder
| |--/html - | the web root for this project
| |--/provision - | the provisioner folder for the project to run after the server base
| |--/salt - | the salt provisioner
| |--/minions - | salt minions folder
| |--/pillar - | salt pillar folder
| |--top.sls - | salt top file that sets things in line
| |--/stage - | staging folder for installers
Что было бы PROJECT
это находится в папке www серверного проекта, который выглядит как
|-/server_base - the server base
| |--/provision - | the provisioner folder for the server base
| |--/salt - | the salt provisioner
| |--/minions - | salt minions folder
| |--/pillar - | salt pillar folder
| |--top.sls - | salt top file that sets things in line
| |--/www - | www folder that holds the project shown above
Я бы подумал, что сделаю, может, позвоню?highstate
? как cwd.run
с последнего .sls
что top.sls
определяет. Так что прямо перед концом подготовки соли он запускает вспомогательную подготовку из www/{project}
папка.
НАЧАТЬ РЕДАКТИРОВАТЬ
В соответствии с разделом комментариев ниже, я не ответил на следующий вопрос: как вытащить соль из двух разных источников. Вот пример того, как это сделать с солью.
project1: <- Id declaration
file.recurse:
- source: Location of your project's source
- name: Destination in which you want to put your project's source
project2: <- Second unique id declaration
file.recurse
- source: Location of your second project's source
- name: Destination in which you want to put your second project's source
- require: <- Optional, ensure project2 doesn't copy files over until project1 has copied over
file.recurse: project1
Вы можете найти более подробную информацию Вот.
КОНЕЦ РЕДАКТИРОВАНИЯ
Думаю, вы задаете следующий вопрос. Как мне убедиться, что я установлю и настрою свой сервер, а затем установлю свое приложение? У соли есть встроенный механизм, известный как реквизиты что гарантирует, что одно солевое состояние будет работать за другим. Поэтому вместо запуска двух отдельных вызовов соли для запуска first.sls и second.sls вы можете использовать упрощенную настройку, подобную следующей.
Для установки сервера вам потребуется что-то вроде следующего.
apache:
pkg.installed
Затем в файле состояния для вашего приложения вам просто потребуется установить сервер, прежде чем копировать каталог проекта.
myapp:
file.recurse:
- source: location of your www folder
- name: Destination for your www folder
- require:
- pkg.installed: apache
- other_requirement: other_requirement
Приведенный выше пример гарантирует, что apache будет установлен до того, как исходный каталог вашего проекта будет скопирован в соответствующее место, и вам нужно будет только один раз запустить salt run highstate.