fruux / ec2dns
ec2dns 是一组命令行工具,它使得通过标签名显示 EC2 实例的公共主机名和通过 ssh 连入它们变得简单。
2.0.2
2016-04-28 13:02 UTC
Requires
- php: >=5.5.0
- aws/aws-sdk-php: ~2.8.0
- hoa/dns: ~3.0
- hoa/socket: ~1.0
Requires (Dev)
- sabre/cs: dev-master
Replaces
- dominikto/ec2dns: 2.0.2
README
ec2dns 是一组命令行工具,它使得通过标签名解析 EC2 实例的公共主机名并通过 ssh 连入它们变得简单。
ec2dns 的使用方法
ec2dns 在 ".ec2" 顶级域名下提供 ec2 标签名的 DNS 解析。如果服务器的标签名是 appserver-1
,它可以解析为 appserver-1.ec2
。
ec2dns 允许像处理普通域名一样处理 ec2 标签名,以下是一些示例。
ssh
ssh ubuntu@appserver-2.ec2
ubuntu@ip-1-11-11-11:~$
scp
$ scp ubuntu@appserver-1.ec2:/etc/nginx/nginx.conf .
nginx.conf 100% 221 0.2KB/s 00:00
mysql
$ mysql --host=appserver-1.ec2 --user=someUser --password=somePassword someDatabase
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 348
Server version: 5.5.25a Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
ec2dns 工具
ec2dns 还包括 ssh 和 scp(如果您无法或不想在您的机器上设置 DNS 功能)的包装器,以及一个查找主机名和更新您的 /etc/hosts 文件的工具。
如果您按照下面的安装说明设置了 DNS 功能,则不需要这些包装器工具。
ec2host
获取 EC2 实例列表
$ ec2host
i-12345678: appserver-1 ec9-99-99-99-99.compute-1.amazonaws.com
i-87654321: appserver-2 ec1-11-11-11-11.compute-1.amazonaws.com
通过名称标签获取 EC2 实例的主机名
$ ec2host appserver-1
ec9-99-99-99-99.compute-1.amazonaws.com
通过使用反引号将 ec2host 与其他命令结合使用
$ mysql --host=`ec2host appserver-1` --user=someUser --password=somePassword someDatabase
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 348
Server version: 5.5.25a Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
ec2ssh
通过名称标签 ssh 进入实例
$ ec2ssh ubuntu@appserver-2
ubuntu@ip-1-11-11-11:~$
通过名称标签 ssh 进入实例并执行命令
$ ec2ssh appserver-1 uptime
13:09:10 up 1 day, 14:23, 0 users, load average: 0.35, 0.36, 0.35
$ ec2ssh appserver-1 'uname -a'
Linux ip-10-140-78-75 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
ec2scp
从 EC2 实例复制文件到您的机器
$ ec2scp ubuntu@appserver-1:/etc/nginx/nginx.conf .
nginx.conf 100% 221 0.2KB/s 00:00
ec2updatehostsfile
使用您的 EC2 实例更新 /etc/hosts
$ sudo -E ec2updatehostsfile
Updated/Added 2 hosts.
现在您的机器可以直接通过标签解析您的 EC2 实例,例如以下操作将直接生效
$ ping appserver-1
先决条件
- 显然需要一个 AWS 账户和至少一个正在运行的 EC2 实例。
- 正确设置环境变量
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。 - 您需要 Composer 来安装依赖项 - 您应该全局安装它,如此处所述。
- 您应该有一个
~/bin
目录,并且它应该包含在您的PATH
环境变量中。
安装
基本
- 以下命令通过 Composer 安装 ec2dns。
composer global require "fruux/ec2dns=~2.0.0"
- 确保
~/.composer/vendor/bin/
在您的路径中。
DNS 功能
以下说明适用于 OS X。
- 通过创建文件
/etc/resolver/ec2
并粘贴以下内容来添加 DNS 解析器的配置。
nameserver 127.0.0.1
port 57005
- 通过创建文件
~/Library/LaunchAgents/com.fruux.ec2dns.plist
并使用以下命令创建启动 DNS 服务器的 LaunchAgent 配置。如果您使用 ZSH,则必须将/bin/bash
更改为/bin/zsh
。
tee ~/Library/LaunchAgents/com.fruux.ec2dns.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.fruux.ec2dns</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-i</string>
<string>-l</string>
<string>-c</string>
<string>$HOME/.composer/vendor/bin/ec2dns</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/ec2dns.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/ec2dns.log</string>
</dict>
</plist>
EOF
- 最后,通过在终端粘贴以下内容来激活 LaunchAgent 配置。
launchctl load ~/Library/LaunchAgents/com.fruux.ec2dns.plist
更新
composer global update fruux/ec2dns
launchctl unload ~/Library/LaunchAgents/com.fruux.ec2dns.plist
launchctl load ~/Library/LaunchAgents/com.fruux.ec2dns.plist
贡献
请将所有拉取请求提交给 master 分支。附带 phpunit 测试的代码非常受欢迎。谢谢!
致谢
ec2dns 受到 ec2-ssh 的启发并由 aws/aws-sdk-php 驱动。
版权和许可
版权 (c) fruux GmbH。保留所有权利。
fruux 是一项免费服务,负责您的联系人、日历等,这样您就无需自己管理(由 CardDAV 和 CalDAV 驱动)。
查看 许可。