chore(public): sanitize repository presentation
This commit is contained in:
+1
-1
@@ -248,7 +248,7 @@ Playbook:
|
||||
- `telegram_allowed_chat_ids`
|
||||
- `tsj_bot_source_local_path`
|
||||
3. Убедитесь, что в inventory есть группа `[proxmox]`.
|
||||
Для текущего контура AW-Rus bot ожидает Proxmox host `10.10.10.2`.
|
||||
Для текущего контура AW-Rus bot ожидает Proxmox host `<GATEWAY_HOST>`.
|
||||
Рабочая модель для этого контура: `igor` + `sudo`, а не обязательный `root` login.
|
||||
4. При необходимости задайте recovery-команды для AW-Rus:
|
||||
- `tsj_bot_aw_rus_worktime_heal_cmd`
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
aw_file_1c_manager_brief_model: gpt-5.3-codex
|
||||
aw_file_1c_manager_brief_codex_user: igor
|
||||
aw_file_1c_manager_brief_codex_bin: codex
|
||||
aw_file_1c_manager_brief_workdir: /home/igor
|
||||
aw_file_1c_manager_brief_workdir: ~
|
||||
aw_file_1c_manager_brief_top_limit: 5
|
||||
aw_file_1c_manager_brief_freshness_hours: 8
|
||||
aw_file_1c_manager_brief_timeout_sec: 300
|
||||
@@ -295,7 +295,7 @@
|
||||
|
||||
- name: Разрешить Windows upload key для igor
|
||||
ansible.builtin.lineinfile:
|
||||
path: /home/igor/.ssh/authorized_keys
|
||||
path: ~/.ssh/authorized_keys
|
||||
line: "{{ lookup('file', aw_file_1c_windows_upload_pubkey_path) }}"
|
||||
create: true
|
||||
owner: igor
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
gather_facts: true
|
||||
|
||||
vars:
|
||||
proxmox_web_gateway_public_hostname: "dm.iri1968.dpdns.org"
|
||||
proxmox_web_gateway_public_hostname: "detmir.example.local"
|
||||
proxmox_web_gateway_root: "/var/www/proxmox-web-gateway"
|
||||
proxmox_web_gateway_site_name: "proxmox-web-gateway.conf"
|
||||
proxmox_web_gateway_site_path: "/etc/nginx/sites-available/{{ proxmox_web_gateway_site_name }}"
|
||||
@@ -17,7 +17,7 @@
|
||||
proxmox_web_gateway_auth_realm: "DetMir operations gateway"
|
||||
proxmox_web_gateway_auth_user: "detmir"
|
||||
proxmox_web_gateway_auth_file: "/etc/nginx/proxmox-web-gateway.htpasswd"
|
||||
proxmox_web_gateway_credentials_file: "/root/proxmox-web-gateway.credentials"
|
||||
proxmox_web_gateway_credentials_file: "/etc/detmir/proxmox-web-gateway.credentials"
|
||||
proxmox_web_gateway_routes:
|
||||
- slug: "proxmox-gui"
|
||||
title: "Proxmox VE"
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
TELEGRAM_PROXY_URL={{ tsj_bot_telegram_proxy_url | default('http://127.0.0.1:11090') }}
|
||||
AI_CHAT_ENABLED={{ tsj_bot_ai_chat_enabled | default('true') }}
|
||||
AI_CHAT_TIMEOUT_SEC={{ tsj_bot_ai_chat_timeout_sec | default(1800) }}
|
||||
AI_CHAT_WORKDIR={{ tsj_bot_ai_chat_workdir | default('/home/igor') }}
|
||||
AI_CHAT_WORKDIR={{ tsj_bot_ai_chat_workdir | default('~') }}
|
||||
AI_CHAT_SANDBOX={{ tsj_bot_ai_chat_sandbox | default('workspace-write') }}
|
||||
CODEX_MODEL={{ tsj_bot_codex_model | default('gpt-5.3-codex') }}
|
||||
CODEX_FALLBACK_MODELS={{ tsj_bot_codex_fallback_models | default('gpt-5.4-mini') }}
|
||||
@@ -238,8 +238,8 @@
|
||||
TMUX_SESSION={{ tsj_bot_tmux_session | default('ai') }}
|
||||
TMUX_CREATE_IF_MISSING={{ tsj_bot_tmux_create_if_missing | default('false') }}
|
||||
TMUX_START_COMMAND={{ tsj_bot_tmux_start_command | default('codex') }}
|
||||
PFSENSE_ENV_PATH={{ tsj_bot_pfsense_env_path | default('/home/igor/.config/tsj-bot/pfsense.env.readonly') }}
|
||||
PFSENSE_INVENTORY_PATH={{ tsj_bot_pfsense_inventory_path | default('/home/igor/.config/tsj-bot/inventory.md') }}
|
||||
PFSENSE_ENV_PATH={{ tsj_bot_pfsense_env_path | default('~/.config/tsj-bot/pfsense.env.readonly') }}
|
||||
PFSENSE_INVENTORY_PATH={{ tsj_bot_pfsense_inventory_path | default('~/.config/tsj-bot/inventory.md') }}
|
||||
PFSENSE_CHANGE_CONTROL_ENABLED={{ tsj_bot_pfsense_change_control_enabled | default('true') }}
|
||||
PFSENSE_CHANGE_CONFIRM_TTL_SEC={{ tsj_bot_pfsense_change_confirm_ttl_sec | default(900) }}
|
||||
OPENVPN_CONFIG_ENABLED={{ tsj_bot_openvpn_config_enabled | default('true') }}
|
||||
@@ -327,14 +327,14 @@
|
||||
- { key: "AW_RUS_WINDOWS_POLICY_PATH", value: "{{ tsj_bot_aw_rus_windows_policy_path | default('C:\\ProgramData\\AWatch-rus\\dlp-policy.json') }}" }
|
||||
- { key: "AW_RUS_WINDOWS_BROWSER_COLLECTOR_PATH", value: "{{ tsj_bot_aw_rus_windows_browser_collector_path | default('C:\\ProgramData\\AWatch-rus\\browser-domains-native-collector.ps1') }}" }
|
||||
- { key: "AW_RUS_WINDOWS_EMAIL_COLLECTOR_PATH", value: "{{ tsj_bot_aw_rus_windows_email_collector_path | default('C:\\ProgramData\\AWatch-rus\\email-outbound-collector.ps1') }}" }
|
||||
- { key: "AI_CHAT_WORKDIR", value: "{{ tsj_bot_ai_chat_workdir | default('/home/igor') }}" }
|
||||
- { key: "AI_CHAT_WORKDIR", value: "{{ tsj_bot_ai_chat_workdir | default('~') }}" }
|
||||
- { key: "AI_EXEC_USER", value: "{{ tsj_bot_ai_exec_user | default('igor') }}" }
|
||||
- { key: "INCIDENT_FAILURE_QUORUM_CHECKS", value: "{{ tsj_bot_incident_failure_quorum_checks | default(2) }}" }
|
||||
- { key: "DETMIR_AI_STATE_FILE", value: "{{ tsj_bot_detmir_ai_state_file | default('/var/lib/detmir-ai/latest-state.json') }}" }
|
||||
- { key: "TSJ_GUARDIAN_STATUS_BIN", value: "{{ tsj_bot_guardian_status_bin | default('/usr/local/bin/tsj-guardian-status') }}" }
|
||||
- { key: "TMUX_USER", value: "{{ tsj_bot_tmux_user | default('igor') }}" }
|
||||
- { key: "PFSENSE_ENV_PATH", value: "{{ tsj_bot_pfsense_env_path | default('/home/igor/.config/tsj-bot/pfsense.env.readonly') }}" }
|
||||
- { key: "PFSENSE_INVENTORY_PATH", value: "{{ tsj_bot_pfsense_inventory_path | default('/home/igor/.config/tsj-bot/inventory.md') }}" }
|
||||
- { key: "PFSENSE_ENV_PATH", value: "{{ tsj_bot_pfsense_env_path | default('~/.config/tsj-bot/pfsense.env.readonly') }}" }
|
||||
- { key: "PFSENSE_INVENTORY_PATH", value: "{{ tsj_bot_pfsense_inventory_path | default('~/.config/tsj-bot/inventory.md') }}" }
|
||||
notify: Restart tsj bot
|
||||
|
||||
- name: Установить systemd unit бота
|
||||
|
||||
@@ -13,21 +13,21 @@ aw_server_public_host: "{{ (hostvars[aw_server_inventory_host].ansible_host | de
|
||||
aw_worktime_report_base: "http://{{ aw_server_public_host }}:5610"
|
||||
aw_worktime_timezone: "Europe/Moscow"
|
||||
aw_worktime_influx_enabled: false
|
||||
aw_worktime_influx_url: "http://10.10.10.10:8086"
|
||||
aw_worktime_influx_url: "http://<INFLUXDB_HOST>:8086"
|
||||
aw_worktime_influx_org: "proxmox"
|
||||
aw_worktime_influx_bucket: "aw_metrics"
|
||||
aw_worktime_influx_hosts: "SHARKON2025"
|
||||
aw_worktime_influx_days: "today,yesterday"
|
||||
aw_worktime_influx_token: ""
|
||||
aw_dlp_influx_enabled: false
|
||||
aw_dlp_influx_url: "http://10.10.10.10:8086"
|
||||
aw_dlp_influx_url: "http://<INFLUXDB_HOST>:8086"
|
||||
aw_dlp_influx_org: "proxmox"
|
||||
aw_dlp_influx_bucket: "aw_metrics"
|
||||
aw_dlp_influx_hosts: "SHARKON2025"
|
||||
aw_dlp_influx_lookback_days: 30
|
||||
aw_dlp_influx_event_limit: 2000
|
||||
aw_dlp_influx_token: ""
|
||||
aw_monitored_windows_host: "192.168.100.18"
|
||||
aw_monitored_windows_host: "<WINDOWS_HOST>"
|
||||
aw_monitored_windows_hostname: "SHARKON2025"
|
||||
aw_rus_health_worktime_api_base: "http://127.0.0.1:5610"
|
||||
aw_rus_health_state_dir: "{{ aw_server_data_dir }}/health"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
aw_pfsense_poller_config:
|
||||
poll_interval_seconds: 60
|
||||
aw:
|
||||
server_host: "10.10.10.13"
|
||||
server_host: "<AW_SERVER_HOST>"
|
||||
server_port: 5600
|
||||
hostname: "PFSENSE-EDGE01"
|
||||
pulse_time_seconds: 120
|
||||
timeout_seconds: 15
|
||||
pfsense:
|
||||
name: "pfSense Edge 01"
|
||||
host: "10.10.10.1"
|
||||
host: "<FIREWALL_HOST>"
|
||||
scheme: "https"
|
||||
verify_tls: false
|
||||
timeout_seconds: 15
|
||||
|
||||
@@ -3,7 +3,7 @@ telegram_allowed_chat_ids: "123456789"
|
||||
telegram_default_chat_id: 123456789
|
||||
|
||||
# Path on controller (this machine) to source bot script for deployment.
|
||||
tsj_bot_source_local_path: "/mnt/usb_hdd2/Projects/ActivityWatch-Russian/proxmox/tsj_guardian_bot.py"
|
||||
tsj_bot_source_local_path: "<PROJECT_ROOT>/proxmox/tsj_guardian_bot.py"
|
||||
tsj_bot_runtime_root: "/opt/infra-admin"
|
||||
|
||||
# Optional bot tuning
|
||||
@@ -14,11 +14,11 @@ tsj_bot_retry_autorecovery_every_sec: 300
|
||||
tsj_bot_telegram_proxy_url: "http://127.0.0.1:11090"
|
||||
tsj_bot_https_proxy_url: "http://127.0.0.1:11090"
|
||||
tsj_bot_http_proxy_url: "http://127.0.0.1:11090"
|
||||
tsj_bot_no_proxy: "localhost,127.0.0.1,10.10.10.0/24"
|
||||
tsj_bot_node_13_host: "10.10.10.13"
|
||||
tsj_bot_node_16_host: "10.10.10.16"
|
||||
tsj_bot_node_13_url: "http://10.10.10.13:5600/api/0/info"
|
||||
tsj_bot_node_16_url: "http://10.10.10.16/"
|
||||
tsj_bot_no_proxy: "localhost,127.0.0.1,<SERVER_SUBNET_CIDR>"
|
||||
tsj_bot_node_13_host: "<AW_SERVER_HOST>"
|
||||
tsj_bot_node_16_host: "<AUX_NODE_HOST>"
|
||||
tsj_bot_node_13_url: "http://<AW_SERVER_HOST>:5600/api/0/info"
|
||||
tsj_bot_node_16_url: "http://<AUX_NODE_HOST>/"
|
||||
tsj_bot_node_16_enabled: "false"
|
||||
tsj_bot_fs_warn_pct: 85
|
||||
tsj_bot_fs_crit_pct: 92
|
||||
@@ -26,13 +26,13 @@ tsj_bot_fs_targets: "host,200,201,202,203"
|
||||
tsj_bot_fs_exclude_types: "tmpfs,devtmpfs,proc,sysfs,cgroup,cgroup2,overlay,squashfs,nsfs,tracefs,debugfs,securityfs,configfs,fusectl,mqueue,hugetlbfs,ramfs"
|
||||
tsj_bot_fs_immediate_ai_on_critical: "true"
|
||||
tsj_bot_ai_escalation_mode: "codex_exec"
|
||||
tsj_bot_ai_chat_workdir: "/home/igor"
|
||||
tsj_bot_ai_chat_workdir: "<OPERATOR_HOME>"
|
||||
tsj_bot_ai_exec_user: "igor"
|
||||
tsj_bot_tmux_user: "igor"
|
||||
tsj_bot_pfsense_change_control_enabled: "true"
|
||||
tsj_bot_pfsense_change_confirm_ttl_sec: 900
|
||||
tsj_bot_pfsense_env_path: "/home/igor/.config/tsj-bot/pfsense.env.readonly"
|
||||
tsj_bot_pfsense_inventory_path: "/home/igor/.config/tsj-bot/inventory.md"
|
||||
tsj_bot_pfsense_env_path: "<OPERATOR_HOME>/.config/tsj-bot/pfsense.env.readonly"
|
||||
tsj_bot_pfsense_inventory_path: "<OPERATOR_HOME>/.config/tsj-bot/inventory.md"
|
||||
tsj_bot_openvpn_config_enabled: "true"
|
||||
tsj_bot_openvpn_config_confirm_ttl_sec: 900
|
||||
tsj_bot_openvpn_expiry_warn_enabled: "false"
|
||||
@@ -45,15 +45,15 @@ tsj_bot_update_targets: "auto"
|
||||
tsj_bot_pfsense_mcp_bearer: "CHANGE_ME"
|
||||
|
||||
# AW-Rus + DLP check defaults
|
||||
tsj_bot_aw_rus_api_base: "http://10.10.10.13:5600/api/0"
|
||||
tsj_bot_aw_rus_worktime_base: "http://10.10.10.13:5610"
|
||||
tsj_bot_aw_dlp_policy_api_base: "http://10.10.10.13:5601/api/0"
|
||||
tsj_bot_aw_rus_api_base: "http://<AW_SERVER_HOST>:5600/api/0"
|
||||
tsj_bot_aw_rus_worktime_base: "http://<AW_SERVER_HOST>:5610"
|
||||
tsj_bot_aw_dlp_policy_api_base: "http://<AW_SERVER_HOST>:5601/api/0"
|
||||
tsj_bot_aw_dlp_policy_actor: "tsj-guardian-bot"
|
||||
tsj_bot_aw_rus_worktime_heal_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@10.10.10.13 'sudo -S /usr/local/bin/aw-worktime-autoheal-rust && sudo -S systemctl reset-failed aw-worktime-ui-bridge.service && sudo -S systemctl start aw-worktime-ui-bridge.service'"
|
||||
tsj_bot_aw_rus_dlp_heal_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@10.10.10.13 'sudo -S systemctl restart activitywatch-server.service && sudo -S systemctl start activitywatch-dlp-aggregator.service || true && sudo -S /usr/local/bin/aw-health-check && sudo -S /usr/local/bin/dlp-health-check'"
|
||||
tsj_bot_aw_rus_case_api_base: "http://10.10.10.13:5602"
|
||||
tsj_bot_aw_rus_worktime_heal_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@<AW_SERVER_HOST> 'sudo -S /usr/local/bin/aw-worktime-autoheal-rust && sudo -S systemctl reset-failed aw-worktime-ui-bridge.service && sudo -S systemctl start aw-worktime-ui-bridge.service'"
|
||||
tsj_bot_aw_rus_dlp_heal_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@<AW_SERVER_HOST> 'sudo -S systemctl restart activitywatch-server.service && sudo -S systemctl start activitywatch-dlp-aggregator.service || true && sudo -S /usr/local/bin/aw-health-check && sudo -S /usr/local/bin/dlp-health-check'"
|
||||
tsj_bot_aw_rus_case_api_base: "http://<AW_SERVER_HOST>:5602"
|
||||
tsj_bot_aw_rus_hayabusa_enabled: "true"
|
||||
tsj_bot_aw_rus_hayabusa_ssh_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@10.10.10.13"
|
||||
tsj_bot_aw_rus_hayabusa_ssh_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@<AW_SERVER_HOST>"
|
||||
tsj_bot_aw_rus_host: "SHARKON2025"
|
||||
tsj_bot_aw_rus_primary_user: "USER1"
|
||||
tsj_bot_aw_rus_stale_sec: 900
|
||||
@@ -61,8 +61,8 @@ tsj_bot_aw_rus_slo_enabled: "true"
|
||||
tsj_bot_aw_rus_slo_alert_window: "24h"
|
||||
tsj_bot_aw_rus_slo_min_samples: 4
|
||||
tsj_bot_aw_rus_slo_max_age_sec: 90
|
||||
tsj_bot_aw_rus_slo_summary_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@10.10.10.13 'cat /var/lib/activitywatch/slo/aw-slo-summary.json'"
|
||||
tsj_bot_aw_rus_windows_host: "192.168.100.18"
|
||||
tsj_bot_aw_rus_slo_summary_cmd: "sshpass -p 'CHANGE_ME' ssh -o PubkeyAuthentication=no -o StrictHostKeyChecking=no igor@<AW_SERVER_HOST> 'cat /var/lib/activitywatch/slo/aw-slo-summary.json'"
|
||||
tsj_bot_aw_rus_windows_host: "<WINDOWS_HOST>"
|
||||
tsj_bot_aw_rus_windows_ssh_user: "Администратор"
|
||||
tsj_bot_aw_rus_windows_ssh_password: "CHANGE_ME"
|
||||
tsj_bot_aw_rus_windows_config_path: "C:\\ProgramData\\AWatch-rus\\deployment-config.json"
|
||||
|
||||
@@ -6,7 +6,7 @@ aw-ct ansible_host=10.20.30.13 ansible_user=root ansible_port=22
|
||||
|
||||
[aw_windows]
|
||||
# Примечание: в русифицированных Windows часто нужен "Администратор", а не "Administrator".
|
||||
win-node1 ansible_host=192.168.100.18 ansible_user=Администратор ansible_password=CHANGE_ME ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5985 ansible_winrm_server_cert_validation=ignore
|
||||
win-node1 ansible_host=<WINDOWS_HOST> ansible_user=Администратор ansible_password=CHANGE_ME ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5985 ansible_winrm_server_cert_validation=ignore
|
||||
|
||||
[aw_pfsense_pollers]
|
||||
# pfsense-poller1 ansible_host=192.168.100.30 ansible_user=root ansible_port=22
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
[proxmox]
|
||||
pve-detmir ansible_host=10.10.10.2 ansible_user=igor ansible_password=04091968 ansible_connection=ssh ansible_become=true ansible_become_method=sudo ansible_become_password=04091968 ansible_port=22
|
||||
|
||||
[aw_server]
|
||||
aw-prod ansible_host=10.10.10.13 ansible_user=igor ansible_password=04091968 ansible_connection=ssh ansible_become=true ansible_become_method=sudo ansible_become_password=04091968
|
||||
|
||||
[grafana]
|
||||
grafana-main grafana_url=http://10.10.10.11:3000 grafana_validate_tls=false grafana_folder_title=DLP grafana_detmir_folder_uid=efk080s0lfc3ka grafana_pfsense_folder_uid=bfcx6gg70sagwc
|
||||
|
||||
[aw_windows]
|
||||
rdp-prod ansible_host=192.168.100.18 ansible_user=Администратор ansible_password=Sergei2009@ ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5985 ansible_winrm_server_cert_validation=ignore
|
||||
@@ -6,7 +6,7 @@ map $http_upgrade $connection_upgrade {
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
server_name {{ proxmox_web_gateway_public_hostname }} 10.10.10.2 192.168.63.213 _;
|
||||
server_name {{ proxmox_web_gateway_public_hostname }} 10.10.10.2 <WAN_OR_EXTERNAL_IP> _;
|
||||
|
||||
access_log /var/log/nginx/proxmox-web-gateway.access.log;
|
||||
error_log /var/log/nginx/proxmox-web-gateway.error.log;
|
||||
@@ -17,7 +17,7 @@ server {
|
||||
server {
|
||||
listen 443 ssl http2 default_server;
|
||||
listen [::]:443 ssl http2 default_server;
|
||||
server_name {{ proxmox_web_gateway_public_hostname }} 10.10.10.2 192.168.63.213 _;
|
||||
server_name {{ proxmox_web_gateway_public_hostname }} 10.10.10.2 <WAN_OR_EXTERNAL_IP> _;
|
||||
|
||||
access_log /var/log/nginx/proxmox-web-gateway.access.log;
|
||||
error_log /var/log/nginx/proxmox-web-gateway.error.log;
|
||||
|
||||
Reference in New Issue
Block a user