Em vez de gerar o seu ID a partir do seu manual, é aqui que você pode definir um fato personalizado. No seu servidor mysql, você fará algo assim:
mkdir -p /etc/ansible/facts.d
cat <<EOF >/etc/ansible/facts.d/mysql.fact
#!/bin/sh
echo "[mysql]"
echo server_id='hostname -I | sed -e 's/ \+\([a-z0-9]\+\:\)\+[a-z0-9]\+//' | sed -e 's/ /\n/' | grep -v '^$' | tail -1 | awk -F. '{print $3 * 256 + $4}''
EOF
chmod +x /etc/ansible/facts.d/mysql.fact
Execute ansible -m setup your.mysql.ip.address
para garantir que seu fato seja executado corretamente. Você deve ter alguns ansible_local['mysql']['mysql']['server_id']
definidos.
Digamos que você queira ansitar para implantar esse fato, você pode fazer algo como:
- name: install fact
copy: src=myfact dest=/etc/ansible/facts.d/mysql.fact owner=root group=root mode=0755
register: fact_installed
- name: reload facts
setup: filter=ansible_local
when: fact_installed is defined and fact_installed.changed == True
Depois disso, você pode incluir seu modelo, referindo-se à sua variável server_id
.