hostname in chroot

27 views
Skip to first unread message

Michael DiDomenico

unread,
Mar 14, 2024, 1:36:09 PM3/14/24
to ansible...@googlegroups.com
i have a series of playbooks that use ansible_hostname to determine whether tasks should run.  on a host these work fine as one would expect, but when running ansible inside a chroot environment with /proc,sys,dev mounted.  ansible pulls the hostname from the host outside of the chroot into ansible_hostname,ansible_fqdn,ansible_nodename variables

is there a reliable way to tell ansible, this is what the hostname name regardless outside factors?

i tried settings facts to override the three variables or tricking it through the inventory, but 'ansible -m setup localhost' inside the chroot always seems to grab the hostname from outside the chroot

i'm likely doing something wrong, but i'm not sure what

thanks


Michael DiDomenico

unread,
Mar 15, 2024, 9:29:57 AM3/15/24
to ansible...@googlegroups.com
for what it's worth i figured out a solution to this using namespaces.  i'll leave the full script upto the reader, but maybe this will help someone later

unshare --uts=<file> chroot <rootdir> /bin/bash

once in the new namespace, you can change the hostname and it does not affect the base system, which i verified with

- hostname outside the chroot
hosta

- inside the chroot
ansible -m setup localhost | egrep "hostname|nodename|fqdn"
ansible_hostname = "hostb"
ansible_fqdn = "hostb"
ansible_nodename = "hostb"




Reply all
Reply to author
Forward
0 new messages