Ansible playbook для настройки noip
Посмотрел на Youtube видео. Не смог пройти мимо и решил написать плейбук для настройки noip.
Windows + Python3 + Venv + Ansible
Я порекомендовал эту статью для установки Python3 в Windows.
Затем нужно установить модули Ansible. Открываем Powershell, набираем команды.
python3 -m venv ./ansible
./ansible/bin/activate.bat
python3 -m pip install pip --upgrade
python3 -m pip install ansible ansiblelint yamllint
Ansible Playbook
Предположим, что для плейбуков мы выбрали отдельную папку.
mkdir ./Documents/Ansible
mkdir ./Documents/Ansible/TaigaBear
mkdir ./Documents/Ansible/TaigaBear/NoIP
cd ./Documents/Ansible/TaigaBear/NoIP
Необходимо создать следующие файлы в этой папке.
- ansible.cfg
- inventory
- noip-duc.yaml
- noip-duc.service.j2
- noip-duc.default.j2
Можно это сделать в любом текстовом редакторе, я вот использую VSCode.
ansible.cfg
[defaults]
inventory = inventory
inventory
[orange]
192.168.1.3
[orange:vars]
ansible_user=support
ansible_port=22
noip-duc.service.j2
[Unit]
Description=No-IP Dynamic Update Client.
After=network.target auditd.service
[Service]
EnvironmnetFile=/etc/default/noip-duc
User=noip
Group=noip
ExecStart=/usr/bin/noip-duc -g ${NOIP_URL} --username ${NOIP_USERNAME} --password ${NOIP_PASSWORD}
Restart=on-failure
Type=simple
[Install]
WantedBy=multi-user.target
noip-duc.default.j2
NOIP_URL={{ _noip_url }}
NOIP_USERNAME={{ _noip_username }}
NOIP_PASSWORD={{ _noip_password }}
noip-duc.yaml
---
- name: Install and setup NOIP-DUC systemd service.
hosts: all
become: true
vars:
_noip_url: "all.ddnskey.com"
_noip_username: "q2rwxwv"
_noip_password: "vf4sfEXuZFBZ"
handlers:
- name: Daemon-reload.
ansible.builtin.systemd:
daemon_reload: true
- name: Enable service.
ansible.builtin.systemd:
enabled: true
name: noip-duc.service
- name: Start service.
ansible.builtin.systemd:
name: noip-duc.service
state: started
tasks:
- name: Ensure that noip group exists.
ansible.builtin.group:
name: noip
gid: 166446
state: present
- name: Ensure that transmission user exists.
ansible.builtin.user:
name: noip
group: noip
shell: /bin/bash
uid: 166446
home: /home/noip
state: present
- name: Create systemd noip-duc service file.
ansible.builtin.template:
src: ./noip-duc.service.j2
dest: /etc/systemd/system/noip-duc.service
owner: root
group: root
mode: 0644
notify:
- Daemon-reload.
- Enable service.
- Start service.
- name: Create systemd noip-duc default file.
ansible.builtin.template:
src: ./noip-duc.default.j2
dest: /etc/default/noip-duc
owner: root
group: root
mode: 0644
notify:
- Daemon-reload.
- Enable service.
- Start service.
Запускаем ansible playbook - в режиме DRY-RUN, смотрим, что все хорошо. Если не хорошо, то делаем исправления в ansible playbook.
ansible-playbook -C -K noip-duc.yaml
Затем уже запускаем и смотрим что получилось
ansible-playbook -K noip-duc.yaml