когда оператор с var1 содержится в var2 (это можно сделать?) - PullRequest
1 голос
/ 08 марта 2020
# This playbook to test define var
- hosts: 127.0.0.1
  become: yes
  gather_facts: no

  vars:
    var1: 100
    var2: "contain 100"

  tasks:

  - name: test var1 inside of var2
    debug:
      msg: "var1 is inside var2"
    when:  var1 is in var2

Это не работает

PLAY [127.0.0.1] ************************* ************************************************** ********

ЗАДАЧА [тест вар1 внутри вар2] **************************** **************************************** фатально: [127.0.0.1]: СБОЙ! => {"msg": "Сбой условной проверки 'var1 в var2'. Ошибка: Произошла непредвиденная ошибка типа шаблона ({%, если var1 в var2%} True {% else%} False {% endif%) }): 'in' требует строку как левый операнд, а не int \ n \ nОшибка, по-видимому, находится в '/home/cngo/ansible/p79/define_var.yml': строка 14, столбец 5, но может \ n быть в другом месте в файл в зависимости от точной синтаксической проблемы. \ n \ nВредная строка выглядит так: \ n \ n \ n - name: test var1 внутри var2 \ n ^ here \ n "}

1 Ответ

0 голосов
/ 08 марта 2020

Сообщение об ошибке ясно: 'in' requires string as left operand, not int. Ansible не может найти целое число в строке. var1 должна быть строкой

  vars:
    var1: "100"

Другой вариант - quote переменной, если вы не можете изменить объявление v1

    when:  var1|quote is in var2

, или

    when:  var2 is search(var1|quote)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...