Você está acessando a variável de registro eth0 tentando usar o nome "register" que não existe.
Quando você registra uma variável em ansible, você também informa ao ansible o nome da variável que deseja registrá-la como - no seu caso, eth0:
register: eth0
Para acessá-lo mais tarde, você teria que usar o nome eth0 assim:
IPADDR={{ eth0.stdout }}
Agora, se você me permite resolver o que eu acredito ser um problema XY seu - em vez de usar o grep para analisar o endereço IP da sua interface, por que não tentar usar fatos ansiosos? Se você souber o nome da interface no host, você pode simplesmente fazer algo assim:
IPADDR={{ ansible_eth0.ipv4.address }}
Se, por outro lado, você não souber o nome da interface (ou eles são diferentes em todos os seus hosts) - mas você sabe que cada host tem apenas uma interface viável, você pode usar algo como o seguinte:
IPADDR={{ ansible_default_ipv4.address }}
Para ver todos os fatos que o ansible coleta em um sistema, use o seguinte comando:
ansible <hosts> -m setup