在 Salt 中启动子配置

在 Salt 中启动子配置

我需要两个项目。一个是设置服务器。另一个是 Web 应用程序。我正尝试使用 SaltStack 通过 Vagrant 执行此操作。我希望在配置服务器后,能够调用 Web 应用程序项目所在的文件夹并查找 salt stack 并开始新的配置。我可能在这里没有提到徽标,但简而言之,现在我可以创建服务器。将应用程序放入其中的唯一方法是用应用程序的盐文件夹和.sls支柱等污染服务器 salt 文件夹。我需要做更多类似的事情,

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最后一个。因此,在 salt 配置结束之前,它会从文件夹中启动子配置。.slstop.slswww/{project}

答案1

开始编辑

根据下面的评论部分,我还没有回答以下问题:如何在 salt 中从两个不同的来源提取数据。以下是如何在 salt 中执行此操作的示例。

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

您可以找到更多详细信息这里

结束编辑

我认为你问的是以下问题。如何确保安装和配置我的服务器,然后安装我的应用程序?Salt 有一个内置机制,称为必备条件这将保证一个 salt 状态将在另一个 salt 状态之后运行。因此,您无需运行两个单独的 salt 调用来运行 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 一次。

相关内容