Project

bim

0.0
No commit activity in last 3 years
No release in over 3 years
bim is BigIP cli tool
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 1.15
~> 10.0
~> 3.0

Runtime

~> 0.20.0
 Project Readme

Build Status

Bim

Bim is cli command to operate BIG-IP.

※Support ssl certificate operation and sync operation now.

Requirement

  • Ruby 2.3.0 +

Installtion

$ gem install bim

local install

$ git clone https://github.com/littlekbt/bim.git
$ cd bim
$ bundle
$ gem build bim.gemspec
$ gem install --local bim-x.x.x.gem

Setup

all commands needs three environment vriables.

  • BIGIP_HOST: set bigip host
  • BIGIP_USER_ID: set bigip admin userid
  • BIGIP_PASSWD: set bigip admin password

if you want to use --test option, set TEST_VS vriable.

  • TEST_VS: set test virtual server

Features

There are many features to help BIG_IP operation.

Usage

$ bim [SUB COMMAND] [ARGS]

Command-line Usage

Metadata

# output active devices in the device group that BIGIP_HOST belongs.
$ bim meta actives

# output device group name.
$ bim meta device_groups

Virtual Server

# output virtual server list
$ bim vs list

# output one of the virtual server list
$ bim vs detail VS_Name

# update global ip address
$ bim vs update_global_address VS_Name GLOBAL_IPADDRESS PORT

# change firewall policy 
$ bim vs change_nf VS_NAME NETWORK_FIREWALL_FULLPATH

# change pool
$ bim vs change_pool VS_NAME POOL_FULLPATH

Sync

# sync BIGIP_HOST configuration to GROUP.
$ bim sync GROUP

# output sync state.  
$ bim sync state

SSL

# output bundles
$ bim ssl bundles

# output ssl profiles(property: certficate, private key, bundle)
$ bim ssl profiles

# output specified ssl profile
$ bim ssl detail SSL_Profile_Name

# upload and create_ssl_profile and replace.
$ bim ssl deploy OLD_SSL_PROFILE_NAME NEW_SSL_PROFILE_NAME PRIVATE_KEYFILE CERTIFICATE_FILE CHAIN

# set `--test` option, deploy to only virtual server specified by TEST_VS environment vriable.
$ TEST_VS=test_virtual_server bim deploy example.com.20160606 example.com.20170606 /path/to/example.com.key.20170606 /path/to/example.com.crt.20170606 chain --test

# upload private key and certificate.
$ bim ssl upload CERTIFICATE_PROFILE_NAME PRIVATE_KEYFILE(absolute path) CERTIFICATE_FILE(absolute path)

# upload private key.
$ bim ssl upload_key CERTIFICATE_PROFILE_NAME PRIVATE_KEYFILE(absolute path)

# upload certificate.
$ bim ssl upload_crt CERTIFICATE_PROFILE_NAME CERTIFICATE_FILE(absolute path)

# create ssl profile.
$ bim ssl create_profile SSL_PROFILE_NAME CHAIN

# replace virtual server's ssl profile using OLD_SSL_PROFILE_NAME to NEW_SSL_PROFILE_NAME.
$ bim ssl replace OLD_SSL_PROFILE_NAME NEW_SSL_PROFILE_NAME

# can use `--test` option the same as deploy.
$ TEST_VS=test_virtual_server bim replace OLD_SSL_PROFILE_NAME NEW_SSL_PROFILE_NAME --test

Firewall

# output firewall policy list
$ bim fw ls

# output firewall detail configuration
$ bim fw detail FIREWALL_POLICY_NAME

Node

# output node list
$ bim node ls

# output node detail
$ bim node detail NODE_NAME

# create node
$ bim node create NODE_NAME IP_ADDRESS

# delete node
$ bim node delete NODE_NAME

Pool

# output pool list
$ bim pool ls

# output members belongs pool
$ bim pool members POOL_NAME

# create pool
$ bim pool create POOL_NAME [--monitor='monitor name'] [--slow-ramp-time=interger] [--members='[{"name": "NodeName:PORT", "address": "NodeAddress"}, {"name": "NodeName:PORT", "address": "NodeAddress"}]']

# update pool
$ bim pool update POOL_NAME [--monitor='monitor name'] [--slow-ramp-time=interger] [--members='[{"name": "NodeName:PORT", "address": "NodeAddress"}, {"name": "NodeName:PORT", "address": "NodeAddress"}]']

# enable members 
$ bim pool enable POOL_NAME --members=IP_ADDRESS:PORT IP_ADDRESS:PORT

# disable members 
$ bim pool disable POOL_NAME --members=IP_ADDRESS:PORT IP_ADDRESS:PORT

# add members
$ bim pool add POOL_NAME --members=NODENAME:PORT NODENAME:PORT

# drop members
$ bim pool drop POOL_NAME --members=NODENAME:PORT NODENAME:PORT

Snat

# output snat list
$ bim snat ls

# output snat configuration
$ bim snat detail SNAT_NAME

# create snat
$ bim snat create SNAT_NAME --translation=GLOBAL_IPADDRESS --addresses=IPADDRESS/MASK IPADDRESS/MASK --vlans=VLAN1 VLAN2
# ※ if not set vlans, set false to vlanEnabled and ALL* to vlans.

# update snat
$ bim snat update SNAT_NAME --translation=GLOBAL_IPADDRESS --addresses=IPADDRESS/MASK IPADDRESS/MASK --vlans=VLAN1 VLAN2

# add address
$ bim add_address SNAT_NAME --addresses=IPADDRESS/MASK IPADDRESS/MASK

# remove address
$ bim remove_address SNAT_NAME --addresses=IPADDRESS/MASK IPADDRESS/MASK

License

The gem is available as open source under the terms of the MIT License.

Author

Littlekbt