fruux/ec2dns

ec2dns 是一组命令行工具,它使得通过标签名显示 EC2 实例的公共主机名和通过 ssh 连入它们变得简单。

2.0.2 2016-04-28 13:02 UTC

This package is auto-updated.

Last update: 2024-09-06 01:59:37 UTC


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_IDAWS_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 驱动)。

查看 许可