このセクションでは、CLI を使用して DNS プロファイルを構成する方法について説明します。
Python スクリプトのアップロード
カスタム DNS プロファイルを使用するには、NSX Advanced Load Balancer に Python スクリプトをアップロードします。次のスクリプトを使用して、必要なカスタム DNS スクリプトを NSX Advanced Load Balancer Controller にアップロードします。
" Custom DNS script """ import socket import os import getpass import requests import inspect import urllib import json import time def CreateOrUpdateRecord(record_info, params): username = params.get('username') passkey = params.get('password') ip = record_info.get('f_ip_address', '') or record_info.get('ip_address', '') cname = record_info.get('cname', '') fqdn = record_info.get('fqdn') ttl = record_info.get('ttl', 900) record_type = record_info.get('type', 'DNS_RECORD_A') dns_record_id = 0 metadata_j = record_info.get('metadata', None) if metadata_j: metadata = json.loads(metadata_j) # Check if default of 0 as DNS record id is useful dns_record_id = metadata.get('dns_record_id', 0) if not fqdn: print "Not valid FQDN found %s, returning"%record_info return # REST API api = WebApiClient(username, passkey, domain) api.disable_ssl_chain_verification() param_dict = { # DNS Record Information "dns_record_id" : dns_record_id, "fqdn" : fqdn, "type" : "CNAME" if record_type == 'DNS_RECORD_CNAME' else "A", "ttl" : str(ttl), "content" : cname if record_type == 'DNS_RECORD_CNAME' else ip, "site" : "ALL" } # Send request to register the FQDN, failures can be raised and the VS creation will fail rsp = api.send_request("Update", param_dict) if not rsp: err_str = "ERROR:" err_str += " STATUS: " + api.get_response_status() err_str += " TYPE: " + str(api.get_error_type()) err_str += " MESSAGE: " + api.get_error_message() print err_str raise Exception("DNS record update failed with %s"%err_str) def DeleteRecord(record_info, params): username = params.get('username') passkey = params.get('password') ip = record_info.get('f_ip_address', '') or record_info.get('ip_address', '') cname = record_info.get('cname', '') fqdn = record_info.get('fqdn') ttl = record_info.get('ttl', 900) record_type = record_info.get('type', 'DNS_RECORD_A') dns_record_id = 0 metadata_j = record_info.get('metadata', None) if metadata_j: metadata = json.loads(metadata_j) # Check if default of 0 as DNS record id is useful dns_record_id = metadata.get('dns_record_id', 0) api = WebApiClient(username, passkey, domain) api.disable_ssl_chain_verification() param_dict = { # DNS Record Information "dns_record_id" : int(dns_record_id), "delete_reason" : "Reason for deleting record", "push_immediately" : True, "update_serial" : True, } rsp = api.send_request("Delete", param_dict) if not rsp: print "ERROR:" print " STATUS: " + api.get_response_status() print " TYPE: " + str(api.get_error_type()) print " MESSAGE: " + api.get_error_message() return ""
スクリプトには、次のパラメータを使用できます。
ユーザー名:<username>
パスワード:<password>
API バージョン:<version number>
CLI を使用したカスタム DNS プロファイルの作成
l [admin-cntrl1]: > configure customipamdnsprofile custom-dns-profile [admin-cntrl1]: customipamdnsprofile> cancel Exit the current submode without saving do Execute a show command name Name of the Custom IPAM DNS Profile. new (Editor Mode) Create new object in editor mode no Remove field save Save and exit the current submode script_params (submode) script_uri Script URI of form controller://ipamdnsscripts/<file-name> show_schema show object schema tenant_ref Help string not found for argument watch Watch a given show command where Display the in-progress object [admin-cntrl1]: customipamdnsprofile>
前述の構成スニペットでは、custom_dns_script.py
スクリプトが次の属性でアップロードされます。
名前:
custom-dns-profile
ユーザー名:dnsuser
パスワード:
is_sensitive
フラグが True に設定されているパスワードスクリプトの URI:controller://ipamdnsscripts/custom_dns_script.py
次の構文を使用してスクリプトをアップロードします。controller://ipamdnsscripts/<script name>
show customipamdnsprofile custom-dns-profile
コマンドの出力を次に示します。
[admin:10-10-25-160]: > show customipamdnsprofile custom-dns-profile +------------------+--------------------------------------------------- Field | Value ----------------------------------------------------------------------+ | uuid |customipamdnsprofile-c12faa8a-f0eb-4128-a976-98d30391b9f2 | name |custom-dns-profile |script_uri | controller://ipamdnsscripts/custom_dns_script.py | script_params[1] | | name | username | value | dnsuser |is_sensitive | False |is_dynamic | False |script_params[2] | |name | password |value | <sensitive> |is_sensitive | True |is_dynamic | False |tenant_ref | admin +------------------+--------------------------------------------------+