Ek het probeer om 'n voorwaardelike by te voeg met 'n jokerteken en 'n Ansible veranderlike en kry 'n foutboodskap. Die idee is om die api-versoek te aktiveer met die houernaam begin met "android-", dit is 'n opvolg van 'n docker-houer-skepping-speelboek.

My speelboek:

---
- name: move agent android
  hosts: server1; server2
  vars:
    containers: "{{ containers }}" #variable in a different file

tasks:
    - name: move agent Android
      command: curl "api request to a server"
      when:  "containers.startswith('android-*')"

die fout:

TASK [move agent Android] ******************************************************
  fatal: [server1]: FAILED! => {"msg": "The conditional check 'containers.startswith('android-*')' failed. The error was: error while evaluating conditional (containers.startswith('android-*')): 'list object' has no attribute 'startswith'\n\nThe error appears to be in '/directory/were/the/playbook/is/move-agent-android.yml': line 13, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n    - name: move agent Android\n      ^ here\n"}

Ek het probeer om die voorwaardes na verskillende weergawes te verander en almal kry dieselfde fout.

ander weergawes:

when:  "containers is match('android-*')"

when:  item.name.startswith('android-*')

when:  "{{ containers }}" is match('android-*')

Enige idee hoe om die fout op te los?

answer

Probeer

when: "containers is match('^android-.*$')"

Dit is 'n Python regex. Die kolletjie '.' ontbreek voor die ster '*'. Jy moet ook '^' begin en eindig "$" die uitdrukking in geval van ooreenstemming.