Class: VirtualServer
- Inherits:
-
Object
- Object
- VirtualServer
- Defined in:
- lib/simple_lb.rb
Instance Method Summary collapse
- #create_config(config_path) ⇒ Object
- #create_pool(soap, pool_name, pool_member, vs_attrs) ⇒ Object
- #create_soap_connection(locallb_prop, vs_name, vs_address, pool_member1, vs_attrs) ⇒ Object
- #create_virtual_server(soap, vs_name, vs_address) ⇒ Object
-
#initialize(args) ⇒ VirtualServer
constructor
A new instance of VirtualServer.
- #load_config(config_path) ⇒ Object
- #usage ⇒ Object
Constructor Details
#initialize(args) ⇒ VirtualServer
Returns a new instance of VirtualServer.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/simple_lb.rb', line 12 def initialize(args) config_path = File. '~/.bigip.yml' create_config(config_path) unless File.exist?(config_path) if args.blank? usage else @vs_attrs = args.to_a end load_config(config_path) vs_name = @vs_attrs.shift vs_address = @vs_attrs.shift pool_member1 = @vs_attrs.shift create_soap_connection('Pool', vs_name, vs_address, pool_member1, @vs_attrs) create_soap_connection('VirtualServer', vs_name, vs_address, pool_member1, @vs_attrs) end |
Instance Method Details
#create_config(config_path) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/simple_lb.rb', line 35 def create_config(config_path) config = { ipaddress: '172.16.222.120', user: 'admin', password: 'admin' } File.open(config_path, 'w') do |f| YAML.dump(config, f) end puts "Created config file #{config_path} update with your bigip info" exit end |
#create_pool(soap, pool_name, pool_member, vs_attrs) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/simple_lb.rb', line 66 def create_pool(soap, pool_name, pool_member, vs_attrs) r = soap.call :create do |pool| pool. 'pool_names' => { item: ["#{pool_name}"] }, 'lb_methods' => { item: ['LB_METHOD_ROUND_ROBIN'] }, 'members' => { item: { item: [address: pool_member, port: '80'] } } end unless vs_attrs.blank? vs_attrs.each do |member| soap.call :add_member do |pool| pool. 'pool_names' => { item: ["#{pool_name}"] }, 'members' => { item: { item: [address: member, port: '80'] } } end r.success? end end end |
#create_soap_connection(locallb_prop, vs_name, vs_address, pool_member1, vs_attrs) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/simple_lb.rb', line 48 def create_soap_connection(locallb_prop, vs_name, vs_address, pool_member1, vs_attrs) @soap = Savon.client do |s| s.wsdl "https://#{@ipaddress}/iControl/iControlPortal.cgi?WSDL=LocalLB.#{locallb_prop}" s.basic_auth [@user, @password] s.ssl_verify_mode :none s.endpoint "https://#{@ipaddress}/iControl/iControlPortal.cgi" s.namespace "urn:iControl:LocalLB/#{locallb_prop}" s.convert_request_keys_to :none end case locallb_prop when 'VirtualServer' create_virtual_server(@soap, vs_name, vs_address) when 'Pool' create_pool(@soap, vs_name, pool_member1, vs_attrs) end end |
#create_virtual_server(soap, vs_name, vs_address) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/simple_lb.rb', line 88 def create_virtual_server(soap, vs_name, vs_address) vsdefinitions = [ name: vs_name, address: vs_address, port: '80', protocol: 'PROTOCOL_TCP'] vswildmasks = '255.255.255.255' vsresources = [ type: 'RESOURCE_TYPE_POOL', default_pool_name: vs_name] vsprofiles = [ profile_type: 'PROFILE_TYPE_FAST_L4', profile_context: 'PROFILE_CONTEXT_TYPE_ALL', profile_name: 'tcp'] r = soap.call :create do |vs| vs. definitions: { item: vsdefinitions }, wildmasks: { item: vswildmasks }, resources: { item: vsresources }, profiles: { item: { item: vsprofiles } } end r.success? end |
#load_config(config_path) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/simple_lb.rb', line 28 def load_config(config_path) config = YAML.load_file(config_path) @ipaddress = config[:ipaddress] @user = config[:user] @password = config[:password] end |
#usage ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/simple_lb.rb', line 4 def usage puts 'Usage:' puts 'simple_lb <vs_server_name> <vs_ipaddress> <member1_ip> <member2_ip>' puts 'Example:' puts 'simple_lb my_vserver 192.168.10.100 192.168.10.102 192.168.10.103' exit end |