我有3个变量名称为IPOctet、ServerIPRange和epcrange。 如果我在终端中执行以下操作,它将完美地工作:
IPOctet=$(echo "$ServerIPRange/$epcrange+$IPOctet" | bc)
如何在Ansible任务中实现类似的操作,例如:
---
- hosts: localhost
gather_facts: False
vars_prompt:
- name: epcrange
prompt: Enter the number of EPCs that you want to configure
private: False
default: "1"
- name: serverrange
prompt: Enter the number of Clients that you want to configure
private: False
default: "1"
- name: ServerIPRange
prompt: Enter the ServerIP range
private: False
default: '128'
- name: LastIPOctet
prompt: Enter The last Octet of the IP you just entered
private: False
default: '10'
pre_tasks:
- name: Set some facts
set_fact:
ServerIP1: "{{ServerIP}}"
ServerIPRange1: "{{ServerIPRange}}"
IPOctet: "{{LastIPOctet}}"
- name: local action math
local_action: shell {{IPOctet}}=$(echo "${{ServerIPRange}}/${{epcrange}}+${{IPOctet}}" | bc) # Proper Syntax?
with_sequence: start=1 end=4
register: result
ignore_errors: yes
这个命令的正确语法是什么?也许可以使用shell echo "......."。我只需要将此命令的内容保存到IPOctet变量中,IPOctet将在每个循环迭代中更改,结果应该存储在我的结果寄存器中。
附注:如何单独访问数组中的各个项?
编辑:是否有类似这样的东西?目前它只会计算一次,并将其4次存储在寄存器中...
- name: bashless math
set_fact:
IPOctet: "{{ (ServerIPRange|int/epcrange|int)+IPOctet|int }}"
register: IPOctet
with_sequence: "start=1 end={{stop}} "
register: my_ip_octet