Last active
July 15, 2018 23:53
-
-
Save chiradeep/b111a44cfc2bfb94fcbee6d7db35dab1 to your computer and use it in GitHub Desktop.
Export existing content switching policies and cs vserver into NetScaler Ansible playbook
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
from collections import OrderedDict | |
import yaml | |
import yamlloader | |
cs_vserver = 'test_csvserver' | |
ns_host = 'localhost:32769' | |
ns_login = 'nsroot' | |
ns_password= 'nsroot' | |
url = 'http://%s/nitro/v1/config/csvserver_cspolicy_binding/%s' % (ns_host, cs_vserver) | |
headers = {'X-NITRO-USER': ns_login, 'X-NITRO-PASS': ns_password, 'Content-Type': 'application/json', 'Accept': 'application/json'} | |
r = requests.get(url, headers=headers) | |
policybindings = [] | |
for binding in r.json()[u'csvserver_cspolicy_binding']: | |
policy_name = binding[u'policyname'] | |
#print policy_name | |
policy_url = 'http://%s/nitro/v1/config/cspolicy/%s' % (ns_host, policy_name) | |
policy = requests.get(policy_url, headers=headers) | |
ansible_obj = OrderedDict([('name', 'Create cs policy %s' % policy_name), | |
('delegate_to' , 'localhost'), | |
('netscaler_cspolicy', OrderedDict([ | |
('nsip', ns_host), | |
('nitro_user', ns_login), | |
('nitro_pass', ns_password), | |
('validate_certs', 'no'), | |
('state', 'present'), | |
('policyname', policy_name)]) | |
)]) | |
# print policy.json() | |
if policy.json()[u'cspolicy'][0].get(u'url') != None: | |
ansible_obj['netscaler_cspolicy']['url'] = policy.json()[u'cspolicy'][0][u'url'] | |
if policy.json()[u'cspolicy'][0].get(u'rule') != None: | |
ansible_obj['netscaler_cspolicy']['rule'] = policy.json()[u'cspolicy'][0][u'rule'] | |
print yaml.dump(ansible_obj, Dumper=yamlloader.ordereddict.CSafeDumper, default_flow_style=False) | |
binding_obj = OrderedDict([('policyname', policy_name), | |
('targetlbvserver', binding['targetlbvserver']), | |
('priority', binding['priority']) | |
]) | |
policybindings.append(binding_obj) | |
cs_ansible_obj = OrderedDict([('name', 'Create cs vserver %s' % cs_vserver), | |
('delegate_to' , 'localhost'), | |
('netscaler_cs_vserver', OrderedDict([ | |
('nsip', ns_host), | |
('nitro_user', ns_login), | |
('nitro_pass', ns_password), | |
('validate_certs', 'no'), | |
('state', 'present'), | |
('name', cs_vserver), | |
('ipv46', '10.22.22.22'), # FIXME | |
('port', 80), # FIXME | |
('servicetype', 'HTTP'), # FIXME | |
('policybindings', policybindings)]) | |
)]) | |
print yaml.dump(cs_ansible_obj, Dumper=yamlloader.ordereddict.CSafeDumper, default_flow_style=False) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment