mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-27 23:56:09 +00:00
perf: 优化部署 host
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
import os
|
||||
import datetime
|
||||
import shutil
|
||||
|
||||
from django.utils import timezone
|
||||
from django.conf import settings
|
||||
|
||||
from common.utils import get_logger
|
||||
from common.db.utils import safe_db_connection
|
||||
from ops.ansible import PlaybookRunner, JMSInventory
|
||||
|
||||
logger = get_logger(__name__)
|
||||
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class DeployAppletHostManager:
|
||||
def __init__(self, applet_host):
|
||||
self.applet_host = applet_host
|
||||
def __init__(self, deployment):
|
||||
self.deployment = deployment
|
||||
self.run_dir = self.get_run_dir()
|
||||
|
||||
@staticmethod
|
||||
@@ -28,16 +33,32 @@ class DeployAppletHostManager:
|
||||
return playbook_dst
|
||||
|
||||
def generate_inventory(self):
|
||||
inventory = JMSInventory([self.applet_host], account_policy='privileged_only')
|
||||
inventory = JMSInventory([self.deployment.host], account_policy='privileged_only')
|
||||
inventory_dir = os.path.join(self.run_dir, 'inventory')
|
||||
inventory_path = os.path.join(inventory_dir, 'hosts.yml')
|
||||
inventory.write_to_file(inventory_path)
|
||||
return inventory_path
|
||||
|
||||
def run(self, **kwargs):
|
||||
def _run(self, **kwargs):
|
||||
inventory = self.generate_inventory()
|
||||
playbook = self.generate_playbook()
|
||||
runner = PlaybookRunner(
|
||||
inventory=inventory, playbook=playbook, project_dir=self.run_dir
|
||||
)
|
||||
return runner.run(**kwargs)
|
||||
|
||||
def run(self, **kwargs):
|
||||
try:
|
||||
self.deployment.date_start = timezone.now()
|
||||
cb = self._run(**kwargs)
|
||||
self.deployment.status = cb.status
|
||||
except Exception as e:
|
||||
logger.error("Error: {}".format(e))
|
||||
self.deployment.status = 'error'
|
||||
finally:
|
||||
self.deployment.date_finished = timezone.now()
|
||||
with safe_db_connection():
|
||||
self.deployment.save()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user