0

私は、ソルトのドキュメントが解決に役立たないというジレンマを抱えています。git リポジトリからファイルを取得し、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/

私は1つのリモートを指定しています:

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 ブランチを使用しているかは明言しませんでした。私の推測では、「マスター」ブランチにあるだけです。

gitfs はブランチ/タグをファイルサーバー環境にマップすることに注意してください。したがって、salt-run fileserver.file_list を実行baseすると、 fileserver 環境 (masterブランチにマップされます)内のファイルが一覧表示されました。

後で実行するときenv=dev(注: 新しい Salt リリースではsaltenvの代わりに必要)、Salt にブランチ/タグenvからファイルをプルするように指示します。dev

ここでの私の最善の推測はmaster、.devsaltenv=dev

于 2017-04-27T21:14:50.037 に答える