I'm just trying to change the hostname of the remote node using:
- name: Change the hostname
lineinfile: dest=/etc/hosts
regexp='.*{{ item }}$'
line="{{ hostvars[item].ansible_default_ipv4.address }} {{ LOCAL_HOSTNAME }} {{ LOCAL_HOSTNAME }}.{{ LOCAL_DOMAIN_NAME }}"
state=present
when: hostvars[item].ansible_default_ipv4.address is defined
with_items: "{{ groups['dbservers'] }}"
All this does is add IP hostname FQDN at the end of /etc/hosts file. But I'm want it to remove the existing entry and add new one. This is what I tried so far:
- name: Change the hostname
lineinfile: dest=/etc/hosts
# regexp='.*{{ item }}$'
regexp='{{ hostvars[item].ansible_default_ipv4.address }}'
state=absent
# line="{{ hostvars[item].ansible_default_ipv4.address }} {{ LOCAL_HOSTNAME }} {{ LOCAL_HOSTNAME }}.{{ LOCAL_DOMAIN_NAME }}"
# state=present
when: hostvars[item].ansible_default_ipv4.address is defined
with_items: "{{ groups['dbservers'] }}"
But this error comes if I run this:
The offending line appears to be:
# regexp='.*{{ item }}$'
regexp="{{ hostvars[item].ansible_default_ipv4.address }}"
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.
Am I doing the right thing or there some other way to achieve this?
P.S. I've tried adding "to" but that didn't help either.