Many ISPs around the world give you public IPs without NAT, but they're dynamic and change every once in a while.
1) checks what's your current IP (an easy way is to do a GET request to http://icanhazip.com/, available thanks to Red Hat engineer Major Hayden)
2) checks what was the last IP you sent to Cloudflare (saved in a text file on your disk or something like data)
3) if they are different, send a PUT request to the Cloudflare API with the new IP: https://api.cloudflare.com/#dns-records-for-a-zone-update-dn...
4) Then save that new IP in the text file, so you can check next time
Finally, you edit your crontab to run that script every few hours or so.
What's the reason for having such a low lease time on public IPs?