将 Ansible 变量转换为整数以进行算术运算

Convert Ansible variable to integer for arithmetic

我想执行命令以整数格式获取当前 AWS EC2 启动模板版本,以便我可以对其进行基本算术运算以用于后续查询/删除。

例如:

    tasks:
  - name: Lookup current default version of EC2 launch template
    command: aws ec2 describe-launch-template-versions --launch-template-id lt-xxx --filters Name=is-default-version,Value=true --query 'LaunchTemplateVersions[*].[VersionNumber]'
    delegate_to: localhost
    register: result

  - name: Show results
    debug:
      msg: '{{ result.stdout }}'
    delegate_to: localhost

如果此输出为“5”,我想从中减去 1,以便我可以执行其他命令来执行以下操作:

aws ec2 delete-launch-template-versions --launch-template-id lt-xxx --versions {{result - 1}}

我知道这不会像写的那样工作,但这是我要达到的前提。

将字符串转换为整数。例如

    - command: echo 5
      register: result
    - command: "echo {{ result.stdout|int - 1 }}"
      register: result
    - debug:
        var: result.stdout

给予

  result.stdout: '4'

command return values' attribute stdout的类型是字符串。查看下面的结果

    - command: echo 5
      register: result
    - debug:
        msg: |-
          result.stdout: {{ result.stdout }}
          result.stdout|type_debug: {{ result.stdout|type_debug }}
          result.stdout|int|type_debug: {{ result.stdout|int|type_debug }}
  msg: |-
    result.stdout: 5
    result.stdout|type_debug: AnsibleUnsafeText
    result.stdout|int|type_debug: int