将 Vagrant 与 SaltStack 一起使用,如何在提供自定义配置后启动 nginx

Using Vagrant with SaltStack, how do I start nginx after providing custom configuration

我有一个 Vagrant boxset 可以提供盐。当我执行新的 vagrant up(在 vagrant destroy 之后)时,nginx 默认为端口 80 和默认的欢迎页面,尽管没有被配置为。我可以在来宾中手动 运行 sudo nginx -s reload 修复它,但我不想使用手动解决方法。

这是我的 salt/roots/salt/nginx/init.sls 文件:

nginx:
  pkg:
    - installed

nginx run:
  service.running:
    - name: nginx
    - enable: True
    - watch:
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/sites-available/dotmanca
  require:
    - file: /etc/nginx/sites-enabled/dotmanca
    - file: /etc/nginx/nginx.conf
    - pkg: nginx

/etc/nginx/nginx.conf:
  file:
    - managed
    - source: salt://nginx/nginx.conf
    - user: root
    - group: root
    - mode: 644

/etc/nginx/sites-available/dotmanca:
  file:
    - managed
    - source: salt://nginx/dotmanca.conf
    - user: root
    - group: root
    - mode: 644
  require:
    - pkg: nginx

/etc/nginx/sites-enabled/dotmanca:
  file.symlink:
    - target: /etc/nginx/sites-available/dotmanca
    - user: root
    - group: root
    - mode: 644
  require:
    - file: /etc/nginx/sites-available/dotmanca

/etc/nginx/sites-enabled/default:
  file.absent:
    - name: /etc/nginx/sites-enabled/default
  require:
    - pkg: nginx

配置后 nxginx 服务器已安装并正常运行,配置文件显示在正确的位置。

我需要在自定义文件放置后重新加载 nginx 中的配置,或者以某种方式推迟 运行 nginx 服务直到文件就位。

您始终可以 运行 自动重新启动命令 - 请参阅 cmd.run。让它依赖于服务状态。

但是,这是我最后的选择。 Salt 能够使用依赖项(或 Salt 的术语 requisites)并确保在服务启动之前使用正确的配置文件内容(或者如果检测到配置文件更改则重新启动服务)。

显然,我需要了解更多关于 require 位的信息。我把它们放在各州应该去的地方,而不是在各州之下。

我的文件应该是这样的:

nginx:
  pkg:
    - installed

nginx_run:
  service.running:
    - name: nginx
    - enable: True
    - watch:
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/sites-available/dotmanca
    - require:
      - file: /etc/nginx/sites-enabled/dotmanca
      - file: /etc/nginx/nginx.conf
      - pkg: nginx

/etc/nginx/nginx.conf:
  file:
    - managed
    - source: salt://nginx/nginx.conf
    - user: root
    - group: root
    - mode: 644

/etc/nginx/sites-available/dotmanca:
  file:
    - managed
    - source: salt://nginx/dotmanca.conf
    - user: root
    - group: root
    - mode: 644
    - require:
      - pkg: nginx

/etc/nginx/sites-enabled/dotmanca:
  file.symlink:
    - target: /etc/nginx/sites-available/dotmanca
    - user: root
    - group: root
    - mode: 644
    - require:
      - file: /etc/nginx/sites-available/dotmanca

/etc/nginx/sites-enabled/default:
  file.absent:
    - name: /etc/nginx/sites-enabled/default
    - require:
      - pkg: nginx