将 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
我想执行命令以整数格式获取当前 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