渲染 SLS 'base:docker.manager.first'失败:Jinja 变量列表对象没有元素 0



你好,我一直在试图用盐设置码头群,但我有点卡住了...

我在申请时遇到以下错误:

Data failed to compile:
              ----------
                  Rendering SLS 'base:docker.manager.first' failed: Jinja variable list object has no element 0

这是我的第一个.sls:

{% set manager_ip = salt['mine.get']('*', 'manager_ip').items()[0][1][0] %}
include:
  - docker.base
init new swarm cluster:
  cmd.run:
    - name: 'docker swarm init --advertise-addr {{ manager_ip }}'
    - require:
      - pkg: docker-ce

这是我的/srv/pillar/swarm.sls提供mine_functions:

mine_functions:
  network.ip_addrs: [ens32]
  manager_token:
    - mine_function: cmd.run
    - "docker swarm join-token manager -q"
  manager_ip:
    - mine_function: network.ip_addrs
    - ens32
  worker_token:
    - mine_function: cmd.run
    - "docker swarm join-token worker -q"

运行盐'*'支柱时:

----------
mine_functions:
    ----------
    manager_ip:
        |_
          ----------
          mine_function:
              network.ip_addrs
        - ens32
    manager_token:
        |_
          ----------
          mine_function:
              cmd.run
        - docker swarm join-token manager -q
    network.ip_addrs:
        - ens32
    worker_token:
        |_
          ----------
          mine_function:
              cmd.run
        - docker swarm join-token worker -q

我该如何修复此问题,或者有任何已知的方法可以使用盐设置Docker群?

更改了变量名称:

旧:

{% set manager_ip = salt['mine.get']('*', 'manager_ip').items()[0][1][0] %}
include:
  - docker.base
init new swarm cluster:
  cmd.run:
    - name: 'docker swarm init --advertise-addr {{ manager_ip }}'
    - require:
      - pkg: docker-ce

新:

{% set join_ip = salt['mine.get']('*', 'manager_ip').items()[0][1][0] %}
include:
 - docker.base
init cluster:
  cmd.run:
    - name: 'docker swarm init --advertise-addr {{ join_ip }}'
    - require:
      - pkg: docker-ce

最新更新