Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
aws
 
 
 
 
 
 
 
 
log
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

grabeni

Latest Version Build Status Go Documentation Go Report Card License

grabeni is an operation-friendly tool to grab an EC2 Network Interface (ENI) from an other EC2 instance.

Detaching and attaching (grabbing) ENI is a common way to realize VIP (Virtual IP address) in EC2 with Heartbeat, Keepalived, MHA, etc. grabeni provides command line interface for handling ENI.

The list of grabeni's features below.

  • Listing ENI information.
  • Attacing the specified ENI to the specified instance.
  • Detaching the specified ENI.
  • Grabbing (Attaching and Detaching) the specified ENI to the specified instance.
  • timeout/retry for requesting AWS API.

Requirements

ec2:DescribeInstances
ec2:DescribeNetworkInterfaces
ec2:AttachNetworkInterface
ec2:DetachNetworkInterface

Usage

$ export AWS_ACCESS_KEY_ID='...'
$ export AWS_SECRET_ACCESS_KEY='...'
$ export AWS_REGION='us-east-1'
$ grabeni grab eni-xxxxxx --instanceid i-xxxxxxd # attach eni-xxxxxx to EC2 instance where grabeni runs if instanceid option is skipped

See also grabeni --help.

Example

$ grabeni ls
ID            NAME    STATUS      PRIVATE DNS NAME                              PRIVATE IP  AZ              DEVICE INDEX    INSTANCE ID INSTANCE NAME
eni-00000000  eni01   in-use      ip-10-0-0-100.ap-northeast-1.compute.internal 10.0.0.100  ap-northeast-1b 0   i-00000000  instance01
eni-11111111  eni02   available   ip-10-0-0-10.ap-northeast-1.compute.internal	10.0.0.10   ap-northeast-1c -1
eni-22222222  eni03   avaolable   ip-10-0-0-11.ap-northeast-1.compute.internal	10.0.0.11   ap-northeast-1c 1

$ grabeni status eni-2222222
ID            NAME    STATUS      PRIVATE DNS NAME                              PRIVATE IP  AZ              DEVICE INDEX    INSTANCE ID INSTANCE NAME
eni-22222222  eni03   avaolable   ip-10-0-0-11.ap-northeast-1.compute.internal	10.0.0.11   ap-northeast-1c 1

$ grabeni grab eni-2222222
--> Detaching:    eni-2222222
--> Attaching:    eni-2222222
eni eni-2222222 attached to instance i-xxxxxx

Installation

Homebrew

$ brew tap yuuki/grabeni
$ brew install grabeni

Download binary from GitHub Releases

Releases・yuuki/grabeni - GitHub

Build from source

 $ go get github.com/yuuki/grabeni
 $ go install github.com/yuuki/grabeni/...

Roadmap

  • attach, detach, grab: Show ENI information before execution
  • list: Filter option
  • Add check command to check an availability zone
  • attach, detach, grab: dryrun option

Contribution

  1. Fork (https://github.com/y_uuki/grabeni/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create new Pull Request

License

The MIT License.

Author

y_uuki

About

Grabeni - An ops-friendly AWS Elastic Network Interface (ENI) attachment grabbing tool.

Topics

Resources

License

Languages

You can’t perform that action at this time.