Data Manipulation With Ansible – Ghost Transformations

Data Manipulation With Ansible – Ghost Transformations

Ghost Transformations

When you run with Ansible, you are not just pushing configs.
You are bending streams of data: facts, variables, conditions.

Like a Ghost Operator, you read the environment, transform the streams,
and act silently on the system.

This is a field manual for data manipulation in Ansible.

Phase I – Scouting the Battlefield (Reading Data)

First you gather intelligence.
Ansible collects facts by default.

These facts are your reconnaissance: network interfaces, mountpoints, OS data.

- name: Gather facts
  ansible.builtin.setup:

Once collected, you can see them with:

ansible -m setup target_host

Facts like ansible_mounts or ansible_env.USER become your ghostly eyes.

Phase II – Shaping Reality (Transformations)

The Ghost doesn't act on raw data. He bends it.

Use filters, set_fact, or Jinja2 transformations to reshape the intel:

- name: Extract datastore mountpoint
  set_fact:
    datastore_mount: "{{ item.mount }}"
  loop: "{{ ansible_facts['ansible_mounts'] }}"
  when: "'/data/disk1' in item.mount"

Now you hold a ghost-variable: datastore_mount.

Phase III – Silent Execution (Operations)

With transformed data, you strike.
Conditionals make the operation stealthy-only when the target exists.

- name: Create symlink to datastore
  ansible.builtin.file:
    src: "{{ datastore_mount }}"
    dest: "/home/{{ ansible_env.USER }}/datastore"
    state: link
  when: datastore_mount is defined

The link appears. Silent. Functional. Invisible.

Phase IV – Additional Ghost Moves

Other common Ghost Transformations:

  • Parsing interfaces to pick the primary IP.
  • Building dynamic file paths from environment variables.
  • Filtering lists and dicts to choose the right target.
  • Combining host vars with inventory vars for hybrid ops.
- name: Pick primary interface
  set_fact:
    primary_ip: "{{ ansible_facts['ansible_default_ipv4']['address'] }}"
- name: Build dynamic log path
  set_fact:
    log_path: "/var/log/{{ ansible_env.USER }}/ops.log"

Each move is a transformation. Each transformation is control.

Final Word

The Ghost doesn't fight with brute force.
He bends data until the system aligns with his will.

Fear the silence. Fear the switch.

[ TRANSMISSION ENDS ]