我需要两个项目。一个是设置服务器。另一个是 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 配置结束之前,它会从文件夹中启动子配置。.sls
top.sls
www/{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 一次。