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 }}"