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

Начать субположение в Salt

Мне нужно иметь два проекта. Один из них - настроить сервер. Другой - веб-приложение. Я пытаюсь использовать 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.