确保仅删除所需的数据保留和过期

时间:2013-08-13 15:33:11

标签: salt-stack

我们使用salt来引导我们的Web服务器。我们托管多个不同的域名。我在/etc/apache2/sites-available为每个域创建了一个文件。然后我将其符号链接到sites-enabled

问题是,如果我将域移动到其他服务器,则不会删除sites-enabled中的链接。如果我更改域名并保持数据到位 - 那么我有old.domain.com和new.domain.com vhost文件。我希望最终只能在sites-enabled中使用new.domain.com,但两个文件都在那里,工作域依赖于字母表(我猜) - 首先加载哪个vhost。

我将域存储在支柱中并生成如下的虚拟主机:

{%- for site in pillar.sites %}
/etc/apache2/sites-available/{{ site.name }}:
  file:
  - managed
  - source: salt://apache/conf/sites/site
  - template: jinja
  - require: 
    - file: /etc/apache2/sites-available/default
    - cmd: apache_rewrite_enable
  - defaults:
    site_name: "{{ site.name }}"
/etc/apache2/sites-enabled/{{ site.name }}:
  file.symlink:
  - target: /etc/apache2/sites-available/{{ site.name }}
  - require:
    - file: /etc/apache2/sites-available/{{ site.name }}
{% endfor %}

我需要确保只有柱子中列出的虚拟主机才能保留在高位状态之后。我想先把文件夹清空,但这感觉很危险,因为高空可能会在半空中失败而且我会留下任何vhosts - 瘫痪所有其他域 - 只是因为我试图添加一个。

有没有办法强制执行以下操作:“删除此高级运行中不存在的所有内容”?

1 个答案:

答案 0 :(得分:1)

是的,问题是Salt没有做任何你没有指定的事情。默认情况下尝试自动管理整个服务器会太困难(而且非常危险)。所以file.managedfile.symlink只是确保他们的目标文件和符号链接存在且处于正确状态 - 他们不能担心其他文件。

你有几个选择。第一种是清理每个高位开头的目录。就像你提到的那样,这并不理想,因为它有点危险(如果一个高态失败,你的网站都不会工作)。

更好的选择是将所有的网站放在每个小工具的支柱中:有些会在支柱的“网站”键下,其余的可能会在“禁用”键下柱。然后,您可以使用file.absent状态来确保每个“已禁用”的站点文件都不存在。 (以及这些文件的符号链接)

然后,当您将域从主机移动到主机,而不是仅仅从前一个小号的支柱中删除该域时,您实际上会将其从“站点”键移动到“禁用”键。然后你就可以保证该网站不见了。

希望有所帮助!