|
|
@ -76,7 +76,7 @@ class JMSInventory(JMSBaseInventory):
|
|
|
|
write you own inventory, construct you inventory,
|
|
|
|
write you own inventory, construct you inventory,
|
|
|
|
user_info is obtained from admin_user or asset_user
|
|
|
|
user_info is obtained from admin_user or asset_user
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
def __init__(self, assets, run_as_admin=False, run_as=None, become_info=None):
|
|
|
|
def __init__(self, assets, run_as_admin=False, run_as=None, become_info=None, system_user=None):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
:param assets: assets
|
|
|
|
:param assets: assets
|
|
|
|
:param run_as_admin: True 是否使用管理用户去执行, 每台服务器的管理用户可能不同
|
|
|
|
:param run_as_admin: True 是否使用管理用户去执行, 每台服务器的管理用户可能不同
|
|
|
@ -86,6 +86,7 @@ class JMSInventory(JMSBaseInventory):
|
|
|
|
self.assets = assets
|
|
|
|
self.assets = assets
|
|
|
|
self.using_admin = run_as_admin
|
|
|
|
self.using_admin = run_as_admin
|
|
|
|
self.run_as = run_as
|
|
|
|
self.run_as = run_as
|
|
|
|
|
|
|
|
self.system_user = system_user
|
|
|
|
self.become_info = become_info
|
|
|
|
self.become_info = become_info
|
|
|
|
|
|
|
|
|
|
|
|
host_list = []
|
|
|
|
host_list = []
|
|
|
@ -104,18 +105,25 @@ class JMSInventory(JMSBaseInventory):
|
|
|
|
def get_run_user_info(self, host):
|
|
|
|
def get_run_user_info(self, host):
|
|
|
|
from assets.backends import AssetUserManager
|
|
|
|
from assets.backends import AssetUserManager
|
|
|
|
|
|
|
|
|
|
|
|
if self.run_as is None:
|
|
|
|
if not self.run_as and not self.system_user:
|
|
|
|
return {}
|
|
|
|
return {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asset_id = host.get('id', '')
|
|
|
|
|
|
|
|
asset = self.assets.filter(id=asset_id).first()
|
|
|
|
|
|
|
|
if not asset:
|
|
|
|
|
|
|
|
logger.error('Host not found: ', asset_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self.system_user:
|
|
|
|
|
|
|
|
self.system_user.load_asset_special_auth(asset=asset, username=self.run_as)
|
|
|
|
|
|
|
|
return self.system_user._to_secret_json()
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
asset = self.assets.get(id=host.get('id'))
|
|
|
|
|
|
|
|
manager = AssetUserManager()
|
|
|
|
manager = AssetUserManager()
|
|
|
|
run_user = manager.get_latest(username=self.run_as, asset=asset, prefer='system_user')
|
|
|
|
run_user = manager.get_latest(username=self.run_as, asset=asset, prefer='system_user')
|
|
|
|
|
|
|
|
return run_user._to_secret_json()
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
logger.error(e, exc_info=True)
|
|
|
|
logger.error(e, exc_info=True)
|
|
|
|
return {}
|
|
|
|
return {}
|
|
|
|
else:
|
|
|
|
|
|
|
|
return run_user._to_secret_json()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class JMSCustomInventory(JMSBaseInventory):
|
|
|
|
class JMSCustomInventory(JMSBaseInventory):
|
|
|
|