ec2-host
Search hosts on AWS EC2
Installation
gem install ec2-host
Configuration
You can write a configuration file located at /etc/sysconfig/ec2-host (You can configure this path by EC2_HOST_CONFIG_FILE environment variable), or as environment variables:
AWS SDK (CLI) parameters:
- AWS_REGION; AWS SDK (CLI) region such as
ap-northeast-1,us-east-1. - AWS_ACCESS_KEY_ID: AWS SDK (CLI) crendentials. Default loads a credentials file
- AWS_SECRET_ACCESS_KEY: AWS SDK (CLI) credentials. Default load a credentials file
- AWS_PROFILE: The profile key of the AWS SDK (CLI) credentails file. Default is
default - AWS_CREDENTIALS_FILE: Path of the AWS SDK (CLI) credentails file. Default is
$HOME/.aws/credentials. See Configuring the AWS Command Line Interface for details.
ec2-host parameters:
- HOSTNAME_TAG: EC2 tag key used to express a hostname. The default is
Name. - ROLES_TAG: EC2 tag keys used to express roles. The default is
Roles- You can assign multiple roles seperated by
ARRAY_TAG_DELIMITER(default:,) - Also, you can express levels of roles delimited by
ROLE_TAG_DELIMITER(default:) - Example: admin:ami, then
EC2::Host.new(role: 'admin:ami')and alsoEC2::Host.new(role1: 'admin')returns this host
- You can assign multiple roles seperated by
- ROLE_TAG_DELIMITER: A delimiter to express levels of roles. Default is
: - OPTIONAL_STRING_TAGS: You may add optional non-array tags. You can specify multiple tags like
Service,Status. - OPTIONAL_ARRAY_TAGS: You may add optional array tags. Array tags allows multiple values delimited by
ARRAY_TAG_DELIMITER(default:,) - ARRAY_TAG_DELIMITER: A delimiter to express array. Default is
, - LOG_LEVEL: Log level such as
info,debug,error. The default isinfo.
See sampel.conf
Tag Example
- Name: hostname
- Roles: app:web,app:db
- Service: sugoi
- Status: setup
CLI Usage
$ ec2-host --role1 admin
host1
ip-XXX-XXX-XXX-XXX # if Name tag is not assigned
See ec2-host help get-hosts for details:
Usage:
ec2-host get-hosts
Options:
-h, [--hostname=one two three] # name or private_dns_name
-r, --usage, -u, [--role=one two three] # role
--r1, --usage1, --u1, [--role1=one two three] # role1, the 1st part of role delimited by :
--r2, --usage2, --u2, [--role2=one two three] # role2, the 2nd part of role delimited by :
--r3, --usage3, --u3, [--role3=one two three] # role3, the 3rd part of role delimited by :
[--instance-id=one two three] # instance_id
[--state=one two three] # state
[--monitoring=one two three] # monitoring
--ip, [--private-ip], [--no-private-ip] # show private ip address instead of hostname
[--public-ip], [--no-public-ip] # show public ip address instead of hostname
-i, [--info], [--no-info] # show host info, not only hostname
-j, [--json], [--no-json] # show detailed host info in json
[--debug], [--no-debug] # debug mode
Search EC2 hosts
Library Usage
See http://sonots.github.io/ec2-host/doc/frames.html.
ChangeLog
See CHANGELOG.md for details.
For Developers
ToDo
- Support assume-roles
- Use mock/stub to run test (currently, directly accessing to EC2)
- Should cache a result of describe-instances in like 30 seconds?
How to Run test
See spec/README.md
How to Release Gem
- Update gem.version in the gemspec
- Update CHANGELOG.md
- git commit && git push
- Run
bundle exec rake release
How to Update doc
- Run
./doc.sh - git commit && git push (to gh-pages branch)
Licenses
See LICENSE