summaryrefslogtreecommitdiff
path: root/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README.txt')
-rw-r--r--README.txt208
1 files changed, 208 insertions, 0 deletions
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..cd2265c
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,208 @@
+NAME
+ fapi - A humble command line tool to manage F5 BigIP loadbalancers
+
+SYNOPSIS
+ Just run
+
+ fapi -h
+
+ or
+
+ alias f=fapi
+ f -h
+
+ because it's shorter to type.
+
+ABOUT
+ This is a simple command line client to do basic stuff with the iControl
+ F5 API such as:
+
+ Managing Monitors
+ Managing Nodes
+ Managing Pools
+ Managing Virtual Servers
+
+ And some extended usage:
+
+ Managing Folders
+ Managing Self IPs
+ Managing Traffic Groups
+ Managing VLANs
+
+ This is a private programming project programmed in my spare time.
+ Therefore I didn't bother to put it on a public website and github.
+ Please open bug reports, feature requests and pull requests at
+ <https://codeberg.org/snonux/fapi>.
+
+ CAUTION: This script has been tested on Debian GNU/Linux Wheezy only.
+
+BIGSUDS
+ Requirement of bigsuds
+ This tool depends on bigsuds. Please install this library from F5 dev
+ central manually. Otherwise this script will not work.
+
+ You can download bigsuds from here:
+
+ <https://devcentral.f5.com/d/bigsuds-python-icontrol-library>
+
+ Unzip it and run
+
+ sudo python setup.py install
+
+ You may also install bigsuds from the contrib dir of the fapi source
+ tree.
+
+ iControl reference
+ Through bigsuds you can do everything what iControl can do:
+
+ <https://devcentral.f5.com/wiki/icontrol.apireference.ashx>
+
+QUICK START
+ Update your sources list:
+
+ curl http://deb.buetow.org/apt/pubkey.gpg | sudo apt-key add -
+ echo deb http://deb.buetow.org/apt wheezy main |
+ sudo tee /etc/apt/sourcees.list.d/buetoworg.list
+ sudo aptitude update
+
+ And run
+
+ sudo aptitude install fapi
+ cp /usr/share/fapi/fapi.conf.sample ~/.fapi.conf
+ vim ~/.fapi.conf
+
+ Or if you want to install it from the source dir, just run:
+
+ make
+ sudo make install
+
+EXAMPLES
+ Listing
+ If you want to list all configured objects on your partition just run
+
+ fapi node # To list all nodes
+ fapi pool # To list all pool
+ ... # etc
+
+ Setting up a simple pool
+ # Creating two nodes, fapi auto resolves the IP addresses, and use the
+ # FQDN as the node name.
+ fapi node fooserver1.example.com create
+ fapi node fooserver2.example.com create
+
+ # Creating a pool and add the nodes to it. Also specify the node ports to
+ # use by the monitors (and maybe PAT if enabled)
+ fapi pool foopool create
+ fapi pool foopool add member fooserver1.example.com:80
+ fapi pool foopool add member fooserver2.example.com:80
+
+ # Add a monitor to the pool
+ fapi pool foopool add monitor http_lbtest
+
+ Setting up a simple nPath Service
+ A simple nPath service can be created as follows.
+
+ fapi vserver myvserver.example.com:80 create PROTOCOL_TCP nPath
+ fapi vserver myvserver.example.com:80 set pool foopool
+
+ # Restrict the vservers to a specific VLAN (IMPORTANT! security
+ # hole otherwise!)
+ fapi vserver myvserver.example.com:80 set vlan VLANNAME
+ fapi vserver myvserver.example.com:443 set vlan VLANNAME
+
+ # Put the VirtualAddress of the vserver into a specific traffic group
+ fapi vip myserver.example.com set tgroup some-traffic-group
+
+ And everything can be deleted as folows:
+
+ # You can also specify the full object name (including the partition)
+ fapi vserver /Common/myvserver.example.com_80 delete
+
+ # Or just the way the service was created from command line
+ fapi vserver myvserver.example.com:443 delete
+
+ fapi pool foopool delete
+ fapi node fooserver1.example.com delete
+ fapi node fooserver2.example.com delete
+
+ Setting up simple HTTP NAT Services
+ A simple HTTP NATed service can be created as follows.
+
+ fapi vserver myvserver.example.com:80 create PROTOCOL_TCP http
+ fapi vserver myvserver.example.com:80 set vlan VLANNAME
+ fapi vserver myvserver.example.com:80 set pool foopool
+
+ In order to make this work your application servers need to have setup a
+ default route to the loadbalancers floating self IP.
+
+ Setting up simple SNAT Services
+ Same as setting up a NATed services, but you don't need to configure
+ default routes from your application servers to the loadbalancers
+ floating self IP.
+
+ You need also to set the SNAT flag as follows:
+
+ fapi vserver myvserver.example.com:80 set snat automap
+
+ Settung up simple SNAT Services with SSL offloading enabled
+ Just like SNAT service (use port 443) but with these additional steps
+
+ First Upload the SSL certificate to the F5 BIG IP (e.g. System -> File
+ Management -> SSL Certificate List on BIG IP V11.4).
+
+ # Afterwards create a new SSL profile to use the new certificate:
+ # (Will automatically use key/crt myserver.example.com.{key,crt})
+ fapi profileclientssl myserver.example.com create
+
+ # Then attach that profile to the vserver (default context is
+ # PROFILE_TYPE_CLIENT_SSL, which means SSL between F5 and Clients)
+ fapi vserver myvserver.example.com:443 profile add myserver.example.com
+
+ About the NAME argument
+ In most cases NAME can be a hostname, FQDN or an IP address. Optionally
+ folled by a port:
+
+ NAME := fqdn|hostname|ip[:ip2[:port]]
+
+ Examples:
+
+ # Auto resolving of the virtual address (IP) and auto port 80. The vserver
+ # name will have added an automatic _PORT suffix to it's name.
+ fapi vserver fqdn.example.com create
+
+ # Or just ignore the auto port, will not add any _PORT suffix to the
+ # vserver name.
+ fapi -a ....
+
+ # Example:
+ fapi -a vserver fqdn.example.com_ssl create
+
+ # Auto resolving of the virtual address (IP)
+ fapi vserver fqdn.example.com:443 create
+
+ # Auto resolving of the FQDN (vserver name) and the virtual address (IP)
+ # and auto port 80
+ fapi vserver hostname create
+
+ # Auto resolving of the FQDN (vserver name) and the virtual address (IP)
+ fapi vserver hostname:443 create
+
+ # vserver name and its virtual address will be 1.2.3.4 and auto port 80
+ fapi vserver 1.2.3.4 create
+
+ # vserver name and its virtual address will be 1.2.3.4
+ fapi vserver 1.2.3.4:443 create
+
+ # vserver name is foo, its virtual address 1.2.3.4 and port is 80
+ fapi vserver foo:1.2.3.4:80 create
+
+ # vserver name is 1.2.3.5, its virtual address 1.2.3.4 and port is 80
+ fapi vserver 1.2.3.5:1.2.3.4:80 create
+
+ Similar may apply to other object types such as nodes and vips.
+
+AUTHOR
+ Paul C. Buetow - <paul@buetow.org>
+
+ Also see <http://fapi.buetow.org>
+