0

状態ファイルを実行するために、SaltStackの「gitfs 」機能を使用しています。状態ファイルは、「インクルード」機能を使用して、リポジトリから他の 2 つの状態ファイルを埋め込みます。

私のリポジトリには次の階層があります。

salt 
    - dir1
             - dir3 / init.sls
             - dir4 / init.sls
    - dir2
             - dir5 / init.sls

私のマスターファイルは次のとおりです。

. . .
fileserver_backend:
  - git

gitfs_remotes:
  - https://username@bitbucket.org/path/to/repo.git
. . .

salt/dir1/dir3/init.sls には以下が含まれます。

include:
  - salt/dir2/dir5/init.sls
  - salt/dir1/dir4/init.sls
. . .

salt-master を再起動してから salt-run fileserver.file_list saltenv=base backend=git を実行すると、リポジトリのすべてのファイルが表示されます。しかし、salt '' state.apply salt.dir1.dir3 -l debug を実行すると、次のエラーが発生します。

[ERROR   ] Data passed to highstate outputter is not a valid highstate return: {'<minion-id>': ['Specified SLS salt/dir2/dir5/init.sls in saltenv base is not available on the salt master or through a configured fileserver', 'Specified SLS salt/dir1/dir4/init.sls in saltenv base is not available on the salt master or through a configured fileserver']}

私のシステム構成は次のとおりです。

$ salt --versions-report

Salt Version:
           Salt: 2016.3.3

Dependency Versions:
           cffi: Not Installed
       cherrypy: 3.2.2
       dateutil: 1.5
          gitdb: 0.5.4
      gitpython: 0.3.2 RC1
          ioflo: Not Installed
         Jinja2: 2.7.2
        libgit2: Not Installed
        libnacl: Not Installed
       M2Crypto: Not Installed
           Mako: 0.9.1
   msgpack-pure: Not Installed
 msgpack-python: 0.3.0
   mysql-python: 1.2.3
      pycparser: Not Installed
       pycrypto: 2.6.1
         pygit2: Not Installed
         Python: 2.7.6 (default, Jun 22 2015, 17:58:13)
   python-gnupg: Not Installed
         PyYAML: 3.10
          PyZMQ: 14.0.1
           RAET: Not Installed
          smmap: 0.8.2
        timelib: Not Installed
        Tornado: 4.2.1
            ZMQ: 4.0.5

System Versions:
           dist: Ubuntu 14.04 trusty
        machine: x86_64
        release: 3.13.0-91-generic
         system: Linux
        version: Ubuntu 14.04 trusty

リポジトリは、salt-master の再起動時に「/var/cache/salt/master/gitfs/refs/base/salt」パスにキャッシュされます。しかし、「dir2/dir5/init.sls」ではなく「dir2/dir5/init/sls」が見つかりました。

この問題の原因は何ですか?

4

1 に答える 1

1

問題はおそらくあなたのinclude宣言にあります。Salt のincludeモジュールは、SLS ファイルを Python モジュールと同様に扱います。たとえば、SLS ファイルfoo/bar/baz.slsを として参照しますfoo.bar.baz

また、このinit.slsファイルは特別な扱いを受け、ディレクトリ全体をモジュールとして扱うことができます。たとえば、または のいずれかfoo.bar.bazが含まれます(どちらが実際に存在するかによって異なります)。foo/bar/baz.slsfoo/bar/baz/init.sls

結論として、includeステートメントは次のようになります。

include:
  - salt.dir2.dir5
  - salt.dir1.dir4
于 2016-10-06T10:29:19.633 に答える