164 lines
4.7 KiB
Go
164 lines
4.7 KiB
Go
package ansible
|
|
|
|
// BinaryDeployPlaybook returns the Ansible playbook for binary deployment.
|
|
// Downloads the agent binary, writes config, and installs a systemd unit for automatic restart.
|
|
const BinaryDeployPlaybook = `---
|
|
- name: Deploy HellreigN Agent (Binary)
|
|
hosts: all
|
|
become: yes
|
|
vars:
|
|
agent_label: "{{ agent_label }}"
|
|
agent_token: "{{ agent_token }}"
|
|
backend_url: "{{ backend_url }}"
|
|
install_dir: /opt/hellreign
|
|
bin_name: hellreign-agent
|
|
cert_dir: "{{ install_dir }}/certs"
|
|
gitea_releases_url: "{{ gitea_releases_url | default('https://gitea.d3m0k1d.ru/d3m0k1d/HellreigN/releases/latest/download') }}"
|
|
|
|
tasks:
|
|
- name: Create installation directory
|
|
file:
|
|
path: "{{ install_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Create certificates directory
|
|
file:
|
|
path: "{{ cert_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Download HellreigN Agent binary
|
|
get_url:
|
|
url: "{{ gitea_releases_url }}/{{ bin_name }}"
|
|
dest: "{{ install_dir }}/{{ bin_name }}"
|
|
mode: '0755'
|
|
|
|
- name: Create agent configuration
|
|
copy:
|
|
content: |
|
|
backend_url: "{{ backend_url }}"
|
|
grpc_url: "{{ grpc_url | default('localhost:9001') }}"
|
|
label: "{{ agent_label }}"
|
|
registration_token: "{{ agent_token }}"
|
|
cert_dir: "{{ cert_dir }}"
|
|
services:
|
|
- name: system
|
|
type: journald
|
|
dest: "{{ install_dir }}/config.yml"
|
|
mode: '0644'
|
|
|
|
- name: Create systemd unit file
|
|
copy:
|
|
content: |
|
|
[Unit]
|
|
Description=HellreigN Agent
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart={{ install_dir }}/{{ bin_name }}
|
|
Restart=always
|
|
RestartSec=5
|
|
Environment=CONFIG_FILE={{ install_dir }}/config.yml
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
dest: /etc/systemd/system/hellreign-agent.service
|
|
mode: '0644'
|
|
|
|
- name: Reload systemd daemon
|
|
systemd:
|
|
daemon_reload: yes
|
|
|
|
- name: Enable and start HellreigN Agent service
|
|
systemd:
|
|
name: hellreign-agent
|
|
enabled: yes
|
|
state: started
|
|
|
|
- name: Wait for agent to start
|
|
pause:
|
|
seconds: 3
|
|
|
|
- name: Verify HellreigN Agent is running
|
|
command: systemctl is-active --quiet hellreign-agent
|
|
changed_when: false
|
|
`
|
|
|
|
// DockerDeployPlaybook returns the Ansible playbook for Docker deployment.
|
|
const DockerDeployPlaybook = `---
|
|
- name: Deploy HellreigN Agent (Docker)
|
|
hosts: all
|
|
become: yes
|
|
vars:
|
|
agent_label: "{{ agent_label }}"
|
|
agent_token: "{{ agent_token }}"
|
|
backend_url: "{{ backend_url }}"
|
|
grpc_url: "{{ grpc_url | default('localhost:9001') }}"
|
|
container_name: hellreign-agent-{{ agent_label }}
|
|
image: "gitea.d3m0k1d.ru/d3m0k1d/hellreign-agent:latest"
|
|
install_dir: /opt/hellreign
|
|
cert_dir: /etc/hellreign-agent/certs
|
|
config_dir: /etc/hellreign-agent
|
|
|
|
tasks:
|
|
- name: Install Docker (if not present)
|
|
block:
|
|
- name: Check if Docker is installed
|
|
command: docker --version
|
|
register: docker_check
|
|
ignore_errors: yes
|
|
changed_when: false
|
|
|
|
- name: Install Docker
|
|
shell: |
|
|
curl -fsSL https://get.docker.com | sh
|
|
when: docker_check.rc != 0
|
|
|
|
- name: Create certificates directory
|
|
file:
|
|
path: "{{ cert_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Create configuration directory
|
|
file:
|
|
path: "{{ config_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Pull HellreigN Agent image
|
|
community.docker.docker_image:
|
|
name: "{{ image }}"
|
|
source: pull
|
|
|
|
- name: Create agent configuration
|
|
copy:
|
|
content: |
|
|
backend_url: "{{ backend_url }}"
|
|
grpc_url: "{{ grpc_url | default('localhost:9001') }}"
|
|
label: "{{ agent_label }}"
|
|
registration_token: "{{ agent_token }}"
|
|
cert_dir: "{{ cert_dir }}"
|
|
services:
|
|
- name: "{{ agent_label }}"
|
|
type: docker
|
|
path: "{{ container_name }}"
|
|
dest: "{{ config_dir }}/config.yml"
|
|
mode: '0644'
|
|
|
|
- name: Create and run HellreigN Agent container
|
|
community.docker.docker_container:
|
|
name: "{{ container_name }}"
|
|
image: "{{ image }}"
|
|
state: started
|
|
restart_policy: always
|
|
volumes:
|
|
- "{{ cert_dir }}:/etc/hellreign-agent/certs"
|
|
- "{{ config_dir }}/config.yml:/etc/hellreign-agent/config.yml:ro"
|
|
env:
|
|
CONFIG_FILE: /etc/hellreign-agent/config.yml
|
|
`
|