chore: add k8s and docker as service to agent and update logic for ansible deploy
ci-agent / build (push) Failing after 2m35s
ci-agent / build (push) Failing after 2m35s
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
package ansible
|
||||
|
||||
// BinaryDeployPlaybook returns the Ansible playbook for binary deployment.
|
||||
// Downloads the agent binary, writes config, and starts it directly (no systemd).
|
||||
// systemd unit is managed separately (e.g. via goreleaser .deb/.rpm packages).
|
||||
// Downloads the agent binary, writes config, and installs a systemd unit for automatic restart.
|
||||
const BinaryDeployPlaybook = `---
|
||||
- name: Deploy HellreigN Agent (Binary)
|
||||
hosts: all
|
||||
@@ -14,6 +13,7 @@ const BinaryDeployPlaybook = `---
|
||||
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
|
||||
@@ -30,7 +30,7 @@ const BinaryDeployPlaybook = `---
|
||||
|
||||
- name: Download HellreigN Agent binary
|
||||
get_url:
|
||||
url: "https://gitea.d3m0k1d.ru/d3m0k1d/HellreigN/releases/latest/download/{{ bin_name }}"
|
||||
url: "{{ gitea_releases_url }}/{{ bin_name }}"
|
||||
dest: "{{ install_dir }}/{{ bin_name }}"
|
||||
mode: '0755'
|
||||
|
||||
@@ -48,16 +48,43 @@ const BinaryDeployPlaybook = `---
|
||||
dest: "{{ install_dir }}/config.yml"
|
||||
mode: '0644'
|
||||
|
||||
- name: Start HellreigN Agent
|
||||
shell: |
|
||||
nohup {{ install_dir }}/{{ bin_name }} > /dev/null 2>&1 &
|
||||
echo $!
|
||||
args:
|
||||
executable: /bin/bash
|
||||
environment:
|
||||
CONFIG_FILE: "{{ install_dir }}/config.yml"
|
||||
register: agent_pid
|
||||
changed_when: true
|
||||
- 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.
|
||||
@@ -72,7 +99,9 @@ const DockerDeployPlaybook = `---
|
||||
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)
|
||||
@@ -94,6 +123,12 @@ const DockerDeployPlaybook = `---
|
||||
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 }}"
|
||||
@@ -103,14 +138,15 @@ const DockerDeployPlaybook = `---
|
||||
copy:
|
||||
content: |
|
||||
backend_url: "{{ backend_url }}"
|
||||
grpc_url: "{{ grpc_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: "{{ cert_dir }}/config.yml"
|
||||
- name: "{{ agent_label }}"
|
||||
type: docker
|
||||
path: "{{ container_name }}"
|
||||
dest: "{{ config_dir }}/config.yml"
|
||||
mode: '0644'
|
||||
|
||||
- name: Create and run HellreigN Agent container
|
||||
@@ -121,6 +157,7 @@ const DockerDeployPlaybook = `---
|
||||
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/certs/config.yml
|
||||
CONFIG_FILE: /etc/hellreign-agent/config.yml
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user