0

我遇到了盐文档无法帮助我解决的难题。我正在尝试从 git repo 获取文件,而不是在 sls 中管理文件。我已经通过以下方式配置了主控:

gitfs_provider: pygit2
fileserver_backend:
 - git
 - roots
file_roots:
  base:
    - /srv/salt/
  dev:
    - /srv/salt/dev/
  int:
    - /srv/salt/int/
  qa:
    - /srv/salt/qa/
  stg:
    - /srv/salt/stg/
  prod:
    - /srv/salt/prod/

我指定了一个遥控器:

gitfs_remotes:
- https://server.com/path/to/repo.git:
  - user: salt
  - password: salt
  - root: path/to/file/in/git
  - mountpoint: salt://dev

在我的 sls 中,我有以下内容,并且只有条目:

jbiam.yaml:
 file.managed:
- name: /srv/salt/dev/files/application.yml
- source: salt://application.yml
- user: root
- group: root
- mode: 655
- template: jinja
- defaults:
    bla: "bla"

我为开发环境执行 highstate:

salt '*' state.highstate env=dev

现在,无论我在源中放入什么,路径明智,它永远不会找到我现在丢失的文件....如果我将文件添加到 salt fs 的根目录中,事情会按预期工作。但是对于 gitfs,它只是不起作用。如果我从 git remote config 中删除挂载点并在没有环境的情况下运行 highstate,事情会按预期工作,但是一旦我引入环境,它就找不到文件

当我运行 salt-run fileserver.file_list 时,我看到列出的文件:

salt-run fileserver.file_list
 [DEBUG   ] Configuration file path: /etc/salt/master
 [WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
 [DEBUG   ] LazyLoaded fileserver.file_list
 [DEBUG   ] Reading configuration from /etc/salt/master
 [DEBUG   ] Guessing ID. The id can be explicitly set in /etc/salt/minion
 [DEBUG   ] Found minion id from generate_minion_id(): bla
 [DEBUG   ] Reading configuration from /etc/salt/master
 [DEBUG   ] MasterEvent PUB socket URI: /var/run/salt/master         /master_event_pub.ipc
 [DEBUG   ] MasterEvent PULL socket URI: /var/run/salt/master   /master_event_pull.ipc
 [DEBUG   ] Initializing new IPCClient for path: /var/run/salt/master/master_event_pull.ipc
  [DEBUG   ] Sending event - data = {'fun': 'runner.fileserver.file_list', 'jid': '20160830220634591807', 'user': 'root', '_stamp': '2016-08-31T02:06:35.031018'}
 [DEBUG   ] pygit2 gitfs_provider enabled
 [DEBUG   ] LazyLoaded git.envs
 [DEBUG   ] LazyLoaded roots.envs
 [DEBUG   ] LazyLoaded nested.output
 - .git/HEAD
 - .git/config
 - .git/description
 - .git/hooks/applypatch-msg.sample
 - .git/hooks/commit-msg.sample
 - .git/hooks/post-update.sample
 - .git/hooks/pre-applypatch.sample
 - .git/hooks/pre-commit.sample
 - .git/hooks/pre-push.sample
 - .git/hooks/pre-rebase.sample
 - .git/hooks/prepare-commit-msg.sample
 - .git/hooks/update.sample
 - .git/index
 - .git/info/exclude
 - .git/logs/HEAD
 - .git/logs/refs/heads/master
 - .git/logs/refs/remotes/origin/HEAD
 - .git/objects/pack/pack-280ac298a92c1fde082a7d7d84da86d855720a3a.idx
 - .git/objects/pack/pack-280ac298a92c1fde082a7d7d84da86d855720a3a.pack
 - .git/packed-refs
 - .git/refs/heads/master
 - .git/refs/remotes/origin/HEAD
 - .gitignore
 - dev/application.yml
 - dev/bootstrap.yml

但是,当我运行它时我无法引用它:

site.com:
  ----------
      ID: /srv/salt/dev/files/application.yml
Function: file.managed
  Result: False
 Comment: Source file salt://application.yml not found
 Started: 22:31:29.496613
Duration: 33.199 ms
 Changes:

 Summary for site.com
  ------------
 Succeeded: 0
 Failed:    1
  ------------
 Total states run:     1

先感谢您

4

2 回答 2

0

dev您是否在源 URI 中尝试过?

jbiam.yaml:
  file.managed:
    - name: /srv/salt/dev/files/application.yml
    - source: salt://dev/application.yml
于 2016-12-06T23:01:52.017 回答
0

您从未说明您正在使用哪个 git 分支。我的猜测是你只是在“master”分支中拥有它。

请记住,gitfs 将分支/标签映射到文件服务器环境。因此,当您运行salt-run fileserver.file_list时,您将列出文件base服务器环境中的文件(映射到master分支)。

当您稍后使用env=dev(注意:较新的 Salt 版本需要saltenv而不是env)运行时,您是在告诉 Salt 从dev分支/标签中提取文件。

我最好的猜测是master,当您需要将文件放在分支中dev以使用saltenv=dev.

于 2017-04-27T21:14:50.037 回答