Ansible高级应用--创建DDNS (动态域名解析)

本文介绍如何使用Ansible高级应用实现DDNS自动更新,包括在运行环境为bind-dnsdocker的情况下,通过脚本控制Docker容器的启停、端口映射及防火墙规则配置,最终实现动态主机配置协议的域名解析自动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ansible高级应用–创建DDNS

运行环境bind-dns docker
[root@localhost bind]# more start-docker.sh
#!/bin/bash
sudo ls
current_file_path= ( c d " (cd " (cd"(dirname “$0”)"; pwd)
cd ${current_file_path}

docker stop bind
docker rm bind
sudo firewall-cmd --permanent --zone=public --add-port=53/tcp
sudo firewall-cmd --permanent --zone=public --add-port=53/udp
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --permanent --zone=public --add-port=1000/tcp
sudo firewall-cmd --reload

docker run --name bind -d --restart=always
–publish 53:53/tcp
–publish 53:53/udp
–publish 1000:10000/tcp
–dns 114.114.114.114
-h dnsserver
-v /etc/localtime:/etc/localtime
-v pwd/tsig:/var/tsig
-v pwd/data:/data
sameersbn/bind:9.11.3-20180713

#注意 启动后需要手动生成对应域名的update key,具体请见bind相关文档。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
## - name: “#动态创建/修改DNS 记录 (DDNS) 当域名没有解析或解析不正确时才添加解析. the current host is {{ansible_hostname}}. create A record {{ item.name }}–>ip:{{ item.ip }}”
## nsupdate:
## key_name: “{{dnsconfig[‘key_name’]}}”
## key_secret: “{{dnsconfig[‘dns_update_key’]}}”
## server: “{{commonsetting[‘citybox_work_network’][‘dnsserver1’]}}”
## zone: “{{dnsconfig[‘zone’]}}”
## record: “{{item.name.split(’.’)[0]}}”
## value: “{{ item.ip }}”
## with_items: “{{ hostdict[‘hadoop-namenode-hosts’] }} + {{ hostdict[‘hadoop-datanode-hosts’] }} + {{ hostdict[‘zookeeper-hosts’] }}”
## when: lookup(‘dig’, item.name) != item.ip

或者更精简方式: 请参考上一篇 Ansible高级应用–使用动态hosts, 关于如何根据input.yml 动态创建动态hosts

- name: "动态修改DNS记录(DDNS)当域名没有解析或解析不正确时才添加解析 the current host is {{ansible_hostname}}. create A record {{ item.name }}-->ip:{{ item.ip }}"
  nsupdate:
    key_name: "{{dnsconfig['key_name']}}"
    key_secret: "{{dnsconfig['dns_update_key']}}"
    server: "{{commonsetting['citybox_work_network']['dnsserver1']}}"
    zone: "{{dnsconfig['zone']}}"
    record: "{{item.split(':')[1].split('.')[0]}}"
    value: "{{item.split(':')[2]}}"
  with_items: "{{group_domain_ip_user_password_list}}"
  when:  lookup('dig', item.split(':')[1]) != item.split(':')[2]
  #当域名没有解析或解析不正确时才添加解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心自由天使

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值