我尝试通过Python自动化虚拟客户端上的基本监控选项,并成功订购了基本监控以及自动安装Nimsoft监控器。缺少的步骤是打开机器上的端口(48000到48003),以便可以发送监视器数据。
我查了creating network rule through API但是在我的情况下,我在尝试输出firewallServiceComponent时没有任何输出。
In [48]: client['Virtual_Guest'].getObject(id=server_id, mask="mask[id,firewallServiceComponent[rules]]")
Out[48]: {'id': 29701179}
有人可以帮助了解如何为虚拟客人设置防火墙规则吗?
谢谢!
答案 0 :(得分:0)
该示例用于在VLAN防火墙上打开端口,而不是直接在虚拟客户端上打开端口。 API无法与虚拟客户机的操作系统级功能交互。您可以手动或在Post Provisioning脚本的帮助下执行此操作。
http://knowledgelayer.softlayer.com/procedure/add-custom-provisioning-script
答案 1 :(得分:0)
firewallServiceComponent用于具有硬件防火墙的VSI或BMS服务器。您可以订购硬件防火墙,但要考虑到此选项仅适用于每月服务器。
您可以通过I need to create a softlayer network firewall rule through REST API
中描述的API添加/编辑硬件防火墙规则如果您使用软件防火墙创建了虚拟客户,则需要输入您的VSI并像其他任何操作系统一样编辑/添加规则。
要知道您是否拥有软件防火墙,您可以使用以下REST呼叫:
https://[user_name]:[api_key]@api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/29701179/getSoftwareComponents?objectFilter={"softwareComponents":{"softwareDescription":{"productItems":{"categories":{"categoryCode":{"operation":"firewall"}}}}}}
如果您没有软件防火墙,可以通过添加此选项来创建新的VSI,或者您可以reload the OS。重新加载将格式化主磁盘并将计算实例重新配置为记录中的当前规范,在此之前我建议您备份您的操作系统。如果您不确定通过API重新加载,可以通过门户页面进行重新加载。
"""
Reload OS of VSI
Important manual pages:
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest/reloadOperatingSystem
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
USERNAME = 'set-me'
API_KEY = 'set-me'
# The id of virtual guest you wish to reload the OS
guestId = 29701179
client = SoftLayer.create_client_from_env(username=USERNAME, api_key=API_KEY)
itemPrices = [
{'id': 170009}, # Ubuntu Linux 16.04 LTS Xenial Xerus Minimal Install (64 bit)
{'id': 14625}, # Monitoring Package - Basic
{'id': 411} # APF Software Firewall for Linux
]
config = {'itemPrices': itemPrices}
try:
reload = client['SoftLayer_Virtual_Guest'].reloadOperatingSystem('FORCE', config,
id=guestId)
print(reload)
except SoftLayer.SoftLayerAPIError as e:
print("Unable to get SoftLayer_Hardware object: %s, %s " % (e.faultCode,
e.faultString))
(考虑到以上价格只是示例)
我希望这对你有所帮助。
此致