feat: 支持 ansible 沙盒运行 (#12953)

* feat: 支持 ansible 沙盒运行

* feat: 修改 receptor sock 默认路径

* feat: 增加 adhoc 执行命令的 local connection 权限

---------

Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
This commit is contained in:
fit2bot
2024-04-08 17:54:34 +08:00
committed by GitHub
parent 93eebd7876
commit 689f858f97
12 changed files with 200 additions and 10 deletions

View File

@@ -17,6 +17,7 @@ class Services(TextChoices):
web = 'web', 'web'
celery = 'celery', 'celery'
task = 'task', 'task'
receptor = 'receptor', 'receptor'
all = 'all', 'all'
@classmethod
@@ -27,7 +28,8 @@ class Services(TextChoices):
cls.flower: services.FlowerService,
cls.celery_default: services.CeleryDefaultService,
cls.celery_ansible: services.CeleryAnsibleService,
cls.beat: services.BeatService
cls.beat: services.BeatService,
cls.receptor: services.ReceptorService
}
return services_map.get(name)
@@ -43,9 +45,13 @@ class Services(TextChoices):
def task_services(cls):
return cls.celery_services() + [cls.beat]
@classmethod
def receptor_services(cls):
return [cls.receptor]
@classmethod
def all_services(cls):
return cls.web_services() + cls.task_services()
return cls.web_services() + cls.task_services() + cls.receptor_services()
@classmethod
def export_services_values(cls):

View File

@@ -3,3 +3,4 @@ from .celery_ansible import *
from .celery_default import *
from .flower import *
from .gunicorn import *
from .receptor import *

View File

@@ -0,0 +1,32 @@
from .base import BaseService
from ..hands import *
__all__ = ['ReceptorService']
ANSIBLE_RUNNER_COMMAND = "ansible-runner"
class ReceptorService(BaseService):
@property
def cmd(self):
print("\n- Start Receptor as Ansible Runner Sandbox")
cmd = [
'receptor',
'--local-only',
'--node', 'id=primary',
'--control-service',
'service=control',
'filename=/opt/jumpserver/data/share/control.sock',
'--work-command',
'worktype={}'.format(ANSIBLE_RUNNER_COMMAND),
'command={}'.format(ANSIBLE_RUNNER_COMMAND),
'params=worker',
'allowruntimeparams=true'
]
return cmd
@property
def cwd(self):
return APPS_DIR