103 lines
3.6 KiB
YAML
103 lines
3.6 KiB
YAML
---
|
|
- name: Test IP address parsing - extract last two octets
|
|
hosts: localhost
|
|
gather_facts: false
|
|
|
|
vars:
|
|
test_ip: "192.168.1.100"
|
|
|
|
tasks:
|
|
- name: Method 1 - Using split and join
|
|
ansible.builtin.set_fact:
|
|
last_two_octets_1: "{{ test_ip.split('.')[-2:] | join('.') }}"
|
|
|
|
|
|
- name: Display results
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
Original IP: {{ test_ip }}
|
|
Method 1 (split + join): {{ last_two_octets_1 }}
|
|
|
|
|
|
- name: Test with different IP addresses
|
|
ansible.builtin.set_fact:
|
|
test_ips:
|
|
- "10.0.0.1"
|
|
- "172.16.254.1"
|
|
- "192.168.100.200"
|
|
- "8.8.8.8"
|
|
|
|
- name: Process multiple IPs
|
|
ansible.builtin.set_fact:
|
|
results: "{{ results | default([]) + [{'ip': item, 'last_two': item.split('.')[-2:] | join('.')}] }}"
|
|
loop: "{{ test_ips }}"
|
|
|
|
- name: Display all results
|
|
ansible.builtin.debug:
|
|
msg: "{{ results }}"
|
|
|
|
# New tasks for 3-digit formatting
|
|
- name: Method 1 - Format last octet to 3 digits using zfill
|
|
ansible.builtin.set_fact:
|
|
last_two_octets_3digits_1: "{{ test_ip.split('.')[-2] }}.{{ (test_ip.split('.')[-1] | int) | string | zfill(3) }}"
|
|
|
|
- name: Method 2 - Format last octet to 3 digits using format
|
|
ansible.builtin.set_fact:
|
|
last_two_octets_3digits_2: "{{ test_ip.split('.')[-2] }}.{{ '%03d' % (test_ip.split('.')[-1] | int) }}"
|
|
|
|
- name: Method 3 - Format last octet to 3 digits using sprintf
|
|
ansible.builtin.set_fact:
|
|
last_two_octets_3digits_3: "{{ test_ip.split('.')[-2] }}.{{ (test_ip.split('.')[-1] | int) | string | sprintf('%03d') }}"
|
|
|
|
- name: Display 3-digit formatting results
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
Original IP: {{ test_ip }}
|
|
Method 1 (zfill): {{ last_two_octets_3digits_1 }}
|
|
Method 2 (format): {{ last_two_octets_3digits_2 }}
|
|
Method 3 (sprintf): {{ last_two_octets_3digits_3 }}
|
|
|
|
- name: Test 3-digit formatting with different IPs
|
|
ansible.builtin.set_fact:
|
|
test_ips_3digits:
|
|
- "10.0.0.1"
|
|
- "172.16.254.1"
|
|
- "192.168.100.200"
|
|
- "8.8.8.8"
|
|
- "192.168.1.10"
|
|
- "10.0.0.255"
|
|
|
|
- name: Process multiple IPs with 3-digit formatting
|
|
ansible.builtin.set_fact:
|
|
results_3digits: "{{ results_3digits | default([]) + [{'ip': item, 'last_two_3digits': item.split('.')[-2] + '.' + ('%03d' % (item.split('.')[-1] | int))}] }}"
|
|
loop: "{{ test_ips_3digits }}"
|
|
|
|
- name: Display all 3-digit results
|
|
ansible.builtin.debug:
|
|
msg: "{{ results_3digits }}"
|
|
|
|
# VM ID creation without dot separator
|
|
- name: Create vm_id using format (no dot separator)
|
|
ansible.builtin.set_fact:
|
|
vm_id: "{{ test_ip.split('.')[-2] }}{{ '%03d' % (test_ip.split('.')[-1] | int) }}"
|
|
|
|
- name: Create vm_id using sprintf (no dot separator)
|
|
ansible.builtin.set_fact:
|
|
vm_id_sprintf: "{{ test_ip.split('.')[-2] }}{{ (test_ip.split('.')[-1] | int) | string | sprintf('%03d') }}"
|
|
|
|
- name: Display vm_id results
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
Original IP: {{ test_ip }}
|
|
VM ID (format): {{ vm_id }}
|
|
VM ID (sprintf): {{ vm_id_sprintf }}
|
|
|
|
- name: Test vm_id with different IPs
|
|
ansible.builtin.set_fact:
|
|
vm_id_results: "{{ vm_id_results | default([]) + [{'ip': item, 'vm_id': item.split('.')[-2] + ('%03d' % (item.split('.')[-1] | int))}] }}"
|
|
loop: "{{ test_ips_3digits }}"
|
|
|
|
- name: Display all vm_id results
|
|
ansible.builtin.debug:
|
|
msg: "{{ vm_id_results }}"
|