SLS 中的 ID 不是字典

Flo*_*aun 1 postgresql provisioning salt-stack

我正在尝试使用 SaltStack 配置我的 Vagrant 驱动的 VM。我想安装和配置 PostgreSQL。这是我的状态:

postgresql-installation:
    # adding repo, installing package, starting service here

postgresql-database-setup:
    - postgres_user.present:
        - name: {{ pillar['pg_db_user'] }}
        - password: {{ pillar['pg_db_password'] }}
        - require:
            - service: postgresql
    - postgres_database.present:
        - name: {{ pillar['pg_db_name'] }}
        - encoding: {{ pillar['pg_db_encoding'] }}
        - lc_ctype: {{ pillar['pg_db_ctype'] }}
        - lc_collate: {{ pillar['pg_db_collate'] }}
        - template: {{ pillar['pg_db_template'] }}
        - owner: {{ pillar['pg_db_user'] }}
        - require:
            - postgres_user: postgresql-database-setup
Run Code Online (Sandbox Code Playgroud)

postgres-installation工作完美,但postgres-database-setup让我头疼。运行配置时,Salt 会抛出此错误:

Data failed to compile:
----------
ID postgresql-database-setup in SLS postgresql is not a dictionary
Run Code Online (Sandbox Code Playgroud)

YAMLlint.com 说它是有效的(当然除了 Jinja 标签),我不知道 Salt 不喜欢它什么。你们有什么想法吗?

Flo*_*aun 5

找到了!在前面的破折号postgres_user.presentpostgres_database.present导致解析错误。没有它们,一切正常。