Forum Discussion
eaa,
Thanks for you help. I was able to write the script a little differently and its working the way I was hoping. Below is the script if you're curious...thanks again.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
from ansible.module_utils.network.f5 import icontrol
from f5.bigip import ManagementRoot
from getpass import getpass
from icontrol.exceptions import iControlUnexpectedHTTPError
import sys
# Determines the type of change to be made.
change = input('Change or Rollback? ').lower()
password = getpass()
requests.packages.urllib3.disable_warnings()
mgmt = ManagementRoot('us6645ny-nelab-ltm2', 'admin', password)
ltm = mgmt.tm.ltm
# Node Details
nodes = [{'name': 'sdk-node', 'address': '12.7.20.19'},
{'name': 'sdk-node2', 'address': '12.7.20.192'}]
# Pool Details
pool_name = 'sdk-pool'
member_port = '80'
# Virtual Server Details
vs_name = 'sdk-virtual'
vip = '192.168.100.10'
port = '80'
profiles = [{'name': 'f5-tcp-wan', 'context': 'clientside'},
{'name': 'f5-tcp-lan', 'context': 'serverside'},
{'name': 'serverssl', 'context': 'serverside'},
{'name': 'http'}]
def ltm_build():
if change == 'change':
try:
ltm.pools.pool.create(name=pool_name, monitor='tcp')
pool = ltm.pools.pool.load(name=pool_name)
for node in nodes:
ltm.nodes.node.create(partition='Common',
name=node['name'], address=node['address'])
pool.members_s.members.create(partition='Common',
name=node['name'] + ':' + member_port)
params = {
'name': vs_name,
'destination': '{}:{}'.format(vip, port),
'mask': '255.255.255.255',
'pool': pool_name,
'profiles': profiles,
'partition': 'Common',
'sourceAddressTranslation': {'type': 'automap'},
}
ltm.virtuals.virtual.create(**params)
except iControlUnexpectedHTTPError:
print('Duplicate Objects Exist...Build Failed')
sys.exit()
if __name__ == '__main__':
ltm_build()