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