SLS 中的 ID 不是字典

ID in SLS is not a dictionary

我正在尝试使用 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

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

Data failed to compile:
----------
ID postgresql-database-setup in SLS postgresql is not a dictionary

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

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