137 lines
3.7 KiB
Go
137 lines
3.7 KiB
Go
package ansible
|
|
|
|
// BinaryDeployPlaybook returns the Ansible playbook for binary deployment
|
|
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
|
|
service_name: hellreign-agent
|
|
cert_dir: "{{ install_dir }}/certs"
|
|
|
|
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: "https://gitea.d3m0k1d.ru/d3m0k1d/HellreigN/releases/latest/download/{{ bin_name }}"
|
|
dest: "{{ install_dir }}/{{ bin_name }}"
|
|
mode: '0755'
|
|
|
|
- name: Create agent configuration
|
|
copy:
|
|
content: |
|
|
backend_url: "{{ backend_url }}"
|
|
label: "{{ agent_label }}"
|
|
registration_token: "{{ agent_token }}"
|
|
cert_dir: "{{ cert_dir }}"
|
|
dest: "{{ install_dir }}/config.yml"
|
|
mode: '0644'
|
|
|
|
- name: Create systemd service file
|
|
copy:
|
|
content: |
|
|
[Unit]
|
|
Description=HellreigN Agent
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart={{ install_dir }}/{{ bin_name }}
|
|
Restart=always
|
|
RestartSec=5
|
|
Environment=CONFIG_FILE={{ install_dir }}/config.yml
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
dest: /etc/systemd/system/{{ service_name }}.service
|
|
mode: '0644'
|
|
|
|
- name: Reload systemd daemon
|
|
systemd:
|
|
daemon_reload: yes
|
|
|
|
- name: Enable and start HellreigN Agent service
|
|
systemd:
|
|
name: "{{ service_name }}"
|
|
enabled: yes
|
|
state: started
|
|
`
|
|
|
|
// 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 }}"
|
|
container_name: hellreign-agent-{{ agent_label }}
|
|
image: "gitea.d3m0k1d.ru/d3m0k1d/hellreign-agent:latest"
|
|
cert_dir: /etc/hellreign-agent/certs
|
|
|
|
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: Pull HellreigN Agent image
|
|
community.docker.docker_image:
|
|
name: "{{ image }}"
|
|
source: pull
|
|
|
|
- name: Create agent configuration
|
|
copy:
|
|
content: |
|
|
backend_url: "{{ backend_url }}"
|
|
label: "{{ agent_label }}"
|
|
registration_token: "{{ agent_token }}"
|
|
cert_dir: "{{ cert_dir }}"
|
|
dest: "{{ cert_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"
|
|
env:
|
|
CONFIG_FILE: /etc/hellreign-agent/certs/config.yml
|
|
`
|