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 `