如果你长期使用亚马逊 Web 服务(AWS)中的实例,你可能会遇到下面这个常见的问题,它不是因为技术性的原因导致的,更多的是因为人类追求方便舒适的天性:当你登录一台你最近没有使用的区域的新实例,你最终会创建一个新的 SSH 密钥对,久而久之这最终就会造成个人拥有太多密钥,导致管理起来复杂混乱。
公司主营业务:成都网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出钟山免费做网站回馈大家。
本文将会介绍一种在所有区域中使用你的公钥的方法。最近,一篇 Fedora Magazine 的文章介绍了另一种解决方案。但本文中的解决方案可以进一步的以更简洁和可扩展的方式实现自动化。
假设你有一个 Fedora 30 或 31 系统,其中存储了你的密钥,并且还安装了 Ansible。当这两件事同时满足时,就提供了解决这个问题的办法,甚至它还能做到更多。
使用 Ansible 的 ec2_key 模块,你可以创建一个简单的 Ansible 剧本来在所有区域中维护你的 SSH 密钥对。如果你需要增加或者删除密钥,在 Ansible 中这就像从文件中添加和删除行一样简单。
如果要使用剧本,首先需要安装 ec2_key
模块的必要依赖项:
$ sudo dnf install python3-boto python3-boto3
该剧本很简单:你只需要像下面的例子一样,修改其中的密钥及其对应的名称。然后,运行该剧本,它会帮你遍历所有列出的公共 AWS 区域。该示例还包括一些你可能要访问的受限区域,只需根据需要来取消对应行的注释,然后,保存文件重新运行剧本即可。
---
- name: Maintain an ssh key pair in ec2
hosts: localhost
connection: local
gather_facts: no
vars:
ansible_python_interpreter: python
tasks:
- name: Make available your ssh public key in ec2 for new instances
ec2_key:
name: "YOUR KEY NAME GOES HERE"
key_material: 'YOUR KEY GOES HERE'
state: present
region: "{{ item }}"
with_items:
- us-east-2 #US East (Ohio)
- us-east-1 #US East (N. Virginia)
- us-west-1 #US West (N. California)
- us-west-2 #US West (Oregon)
- ap-east-1 #Asia Pacific (Hong Kong)
- ap-south-1 #Asia Pacific (Mumbai)
- ap-northeast-2 #Asia Pacific (Seoul)
- ap-southeast-1 #Asia Pacific (Singapore)
- ap-southeast-2 #Asia Pacific (Sydney)
- ap-northeast-1 #Asia Pacific (Tokyo)
- ca-central-1 #Canada (Central)
- eu-central-1 #EU (Frankfurt)
- eu-west-1 #EU (Ireland)
- eu-west-2 #EU (London)
- eu-west-3 #EU (Paris)
- eu-north-1 #EU (Stockholm)
- me-south-1 #Middle East (Bahrain)
- sa-east-1 #South America (Sao Paulo)
# - us-gov-east-1 #AWS GovCloud (US-East)
# - us-gov-west-1 #AWS GovCloud (US-West)
# - ap-northeast-3 #Asia Pacific (Osaka-Local)
# - cn-north-1 #China (Beijing)
# - cn-northwest-1 #China (Ningxia)
这个剧本需要通过 API 访问 AWS,为此,请使用环境变量,如下所示:
$ AWS_ACCESS_KEY="aws-access-key-id" AWS_SECRET_KEY="aws-secret-key-id" ansible-playbook ec2-playbook.yml
另一个方式是安装 aws 命令行工具并添加凭据,如以前的一篇 Fedora Magazine 文章所述。如果你在线存储它们,这些参数将不建议插入到剧本中!你可以在 GitHub 中找到本文的剧本代码。
完成该剧本之后,请确认你的密钥在 AWS 控制台上可用。为此,可以做如下操作:
另一种方法是在 shell 中使用一个快速命令来为你做这些检查。
首先在剧本上创建一个包含所有区域的变量:
AWS_REGION="us-east-1 us-west-1 us-west-2 ap-east-1 ap-south-1 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 eu-north-1 me-south-1 sa-east-1"
然后,执行如下循环,你就可以从 aws 的 API 获得结果:
for each in ${AWS_REGION} ; do aws ec2 describe-key-pairs --key-name ; done
请记住,要执行上述操作,你需要安装 aws 命令行。
标题名称:在AWS中使用Ansible来管理你的SSH密钥
本文链接:http://www.stwzsj.com/qtweb/news32/14332.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联