https://habr.com/ru/articles/738408/
Код: Выделить всё
sudo apt install ansible sshpassКод: Выделить всё
---
all:
    hosts:
        ИмяСервера1:
            ansible_host: IP_Адрес
            ansible_user: Пользователь
            # SSH порт
            ansible_port: 22
            # Для этого устанавливали sshpass
            ansible_ssh_pass: ПарольКод: Выделить всё
ansible-playbook -i ./inventory.yml -l ИмяСервера1 ./script/install_wireguard_server.yml -e PasswordServer=990990Код: Выделить всё
---
- name: Установка и настройка сервера WireGuard
  hosts: all
  become: true
  vars:
      # INPUT - Пароль для сервера WireGuard
      PasswordServer: "{{ PasswordServer }}"
      #
      container_name: wg_easy
      container_image: weejewel/wg-easy
  tasks:
      - name: Установка Docker
        block:
            - name: Обновление apt
              apt:
                  update_cache: yes
            - name: Установить Docker зависимости
              apt:
                  name:
                      - gnupg
                  state: present
            - name: Добавить Docker GPG ключ
              apt_key:
                  url: https://download.docker.com/linux/ubuntu/gpg
                  state: present
            - name: Добавление Docker репозитория
              apt_repository:
                  repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
                  state: present
            - name: Установка зависимостей
              apt:
                  name: "{{ item }}"
                  state: present
                  install_recommends: yes
              loop:
                  - docker-ce
      - name: Запуск Docker
        block:
            - name: Остановка прошлого Docker контейнера(если ошибка, то игнорируем)
              command: "docker container stop {{ container_name }} "
              ignore_errors: yes
            - name: Удалеям остановленные контейнеры
              command: "docker container prune -f"
            # Источник: https://hub.docker.com/r/weejewel/wg-easy
            - name: Запуск новый Docker контейнер
              command: |
                  docker run -d \
                    --name={{ container_name }} \
                    -e WG_HOST={{ ansible_host }} \
                    -e PASSWORD={{ PasswordServer }} \
                    -v /home/.{{ container_name }}:/etc/wireguard \
                    -p 51820:51820/udp \
                    -p 51821:51821/tcp \
                    --cap-add=NET_ADMIN \
                    --cap-add=SYS_MODULE \
                    --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
                    --sysctl="net.ipv4.ip_forward=1" \
                    --restart unless-stopped \
                    {{ container_image }}
      - name: Создание systemd-службы для авто заупска контейнера
        block:
            - name: Создание конфигурационного автозапуска Docker
              copy:
                  dest: "/etc/systemd/system/{{ container_name }}.service"
                  content: |
                      [Unit]
                      Description=Docker Container: {{ container_name }}
                      Requires=docker.service
                      After=docker.service
                      [Service]
                      Restart=always
                      ExecStartPre=/usr/bin/docker pull {{ container_image }}
                      ExecStart=/usr/bin/docker start -a {{ container_name }}
                      ExecStop=/usr/bin/docker stop -t 10 {{ container_name }}
                      [Install]
                      WantedBy=multi-user.target
            - name: Перезапуск systemd
              systemd:
                  name: "{{ container_name }}.service"
                  daemon_reload: yes
                  state: restarted
            - name: Включение службы в автозапуск
              systemd:
                  name: "{{ container_name }}.service"
                  enabled: yes
            - name: Запуск контейнера Docker
              command: "docker start {{ container_name }}"