如何使用 Ansible 创建 AWS ec2 密钥 | Linux 中国

2018 年 2 月 22 日 Linux中国 译者qianghaohao
你需要使用 Ansible 的 ec2_key 模块。
-- Vivek Gite

本文导航
编译自 | https://www.cyberciti.biz/faq/how-to-create-aws-ec2-key-using-ansible/ 
 作者 | Vivek Gite
 译者 | qianghaohao

我想使用 Ansible 工具创建 Amazon EC2 密钥对。不想使用 AWS CLI 来创建。可以使用 Ansible 来创建 AWS ec2 密钥吗?

你需要使用 Ansible 的 ec2_key 模块。这个模块依赖于 python-boto 2.5 版本或者更高版本。 boto 是亚马逊 Web 服务的一个 Python API。你可以将 boto 用于 Amazon S3、Amazon EC2 等其他服务。简而言之,你需要安装 Ansible 和 boto 模块。我们一起来看下如何安装 boto 并结合 Ansible 使用。

第一步 - 在 Ubuntu 上安装最新版本的 Ansible

你必须给你的系统配置 PPA 来安装最新版的 Ansible[1]。为了管理你从各种 PPA(Personal Package Archives)安装软件的仓库,你可以上传 Ubuntu 源码包并编译,然后通过 Launchpad 以 apt 仓库的形式发布。键入如下命令 apt-get 命令[2]或者 apt 命令[3]

   
     
     
     
  1. $ sudo apt update

  2. $ sudo apt upgrade

  3. $ sudo apt install software-properties-common

接下来给你的系统的软件源中添加 ppa:ansible/ansible

   
     
     
     
  1. $ sudo apt-add-repository ppa:ansible/ansible

更新你的仓库并安装 Ansible:

   
     
     
     
  1. $ sudo apt update

  2. $ sudo apt install ansible

安装 boto:

   
     
     
     
  1. $ pip3 install boto3

关于在CentOS/RHEL 7.x上安装 Ansible 的注意事项

需要在 CentOS 和 RHEL 7.x 上配置 EPEL 源[4]和 yum命令[5]

   
     
     
     
  1. $ cd /tmp

  2. $ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

  3. $ ls *.rpm

  4. $ sudo yum install epel-release-latest-7.noarch.rpm

  5. $ sudo yum install ansible

安装 boto:

   
     
     
     
  1. $ pip install boto3

第二步 2 – 配置 boto

你需要配置 AWS credentials/API 密钥。参考 “AWS Security Credentials[6]” 文档如何创建 API key。用 mkdir 命令创建一个名为 ~/.aws 的目录,然后配置 API key:

   
     
     
     
  1. $ mkdir -pv ~/.aws/

  2. $ vi ~/.aws/credentials

   
     
     
     
  1. [default]

  2. aws_access_key_id = YOUR-ACCESS-KEY-HERE

  3. aws_secret_access_key = YOUR-SECRET-ACCESS-KEY-HERE

还需要配置默认 AWS 区域[7]

   
     
     
     
  1. $ vi ~/.aws/config

输出样例如下:

   
     
     
     
  1. [default]

  2. region = us-west-1

通过创建一个简单的名为 test-boto.py 的 Python 程序来测试你的 boto 配置是否正确:

   
     
     
     
  1. #!/usr/bin/python3

  2. # A simple program to test boto and print s3 bucket names

  3. import boto3

  4. t = boto3.resource('s3')

  5. for b in t.buckets.all():

  6. print(b.name)

按下面方式来运行该程序:

   
     
     
     
  1. $ python3 test-boto.py

输出样例:

   
     
     
     
  1. nixcraft-images

  2. nixcraft-backups-cbz

  3. nixcraft-backups-forum

上面输出可以确定 Python-boto 可以使用 AWS API 正常工作。

步骤 3 - 使用 Ansible 创建 AWS ec2 密钥

创建一个名为 ec2.key.yml 的剧本,如下所示:

   
     
     
     
  1. ---

  2. - hosts: local

  3.  connection: local

  4.  gather_facts: no

  5.  tasks:

  6.  

  7. - name: Create a new EC2 key

  8.   ec2_key:

  9.   name: nixcraft-key

  10.   region: us-west-1

  11.   register: ec2_key_result

  12.  

  13. - name: Save private key

  14.   copy: content="{{ ec2_key_result.key.private_key }}" dest="./aws.nixcraft.pem" mode=0600

  15.   when: ec2_key_result.changed

其中,

◈  ec2_key: – ec2 密钥对。
◈  name: nixcraft_key – 密钥对的名称。
◈  region: us-west-1 – 使用的 AWS 区域。
◈  register: ec2_key_result – 保存生成的密钥到 ec2 keyresult 变量。
◈  copy: content="{{ ec2_key_result.key.private_key }}" dest="./aws.nixcraft.pem" mode=0600 – 将  ec2_key_result.key.private_key 的内容保存到当前目录的一个名为  aws.nixcraft.pem 的文件中。设置该文件的权限为  0600 (unix 文件权限)。
◈  when: ec2_key_result.changed – 仅仅在  ec2_key_result 改变时才保存。我们不想覆盖你的密钥文件。

你还必须创建如下 hosts 文件:

   
     
     
     
  1. [local]

  2. localhost

如下运行你的剧本:

   
     
     
     
  1. $ ansible-playbook -i hosts ec2.key.yml

最后你应该有一个名为 `aws.nixcraft.pem 私钥,该私钥可以和 AWS EC2 一起使用。使用 cat 命令[8]查看你的密钥:

   
     
     
     
  1. $ cat aws.nixcraft.pem

如果你有 EC2 虚拟机,请按如下方式使用:

   
     
     
     
  1. $ ssh -i aws.nixcraft.pem user@ec2-vm-dns-name

查看有关 python 数据结构变量名的信息,比如 ec2keyresult.changed 和 ec2keyresult.key.private_key

你一定在想我是如何使用变量名的,比如 ec2_key_result.changed 和 ec2_key_result.key.private_key。它们在哪里定义过吗?变量的值是通过 API 调用返回的。简单地使用 -v 选项运行 ansible-playbook 命令来查看这样的信息:

   
     
     
     
  1. $ ansible-playbook -v -i hosts ec2.key.yml

我该如何删除一个密钥?

使用如下 ec2-key-delete.yml

   
     
     
     
  1. ---

  2. - hosts: local

  3.  connection: local

  4.  gather_facts: no

  5.  tasks:

  6.  

  7. - name: Delete a EC2 key

  8.   ec2_key:

  9.   name: nixcraft-key

  10.   region: us-west-1

  11. # absent means delete keypair

  12.   state: absent

按照如下方式运行:

   
     
     
     
  1. $ ansible-playbook -i hosts ec2-key-delete.yml

关于作者

作者是 nixCraft 的创始人,是一个经验丰富的系统管理员,DevOps 工程师,同时是一个 Linux 操作系统/Unix shell 脚本培训师。通过 RSS/XML 提要[9]每周邮件简讯[10]获得关于系统管理,Linux/Unix和开放源码主题的最新教程。


via: https://www.cyberciti.biz/faq/how-to-create-aws-ec2-key-using-ansible/

作者:Vivek Gite[12] 译者:qianghaohao 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者
qianghaohao 🌟
共计翻译: 1 篇
贡献时间:5 天

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达




登录查看更多
0

相关内容

由亚马逊云平台提供的一种信息服务。
CVPR 2020 最佳论文与最佳学生论文!
专知会员服务
35+阅读 · 2020年6月17日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度学习自然语言处理概述,116页ppt,Jiří Materna
专知会员服务
79+阅读 · 2020年3月10日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
使用tinc构建full mesh结构的VPN
运维帮
68+阅读 · 2018年12月1日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Arxiv
9+阅读 · 2018年3月23日
VIP会员
相关VIP内容
CVPR 2020 最佳论文与最佳学生论文!
专知会员服务
35+阅读 · 2020年6月17日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度学习自然语言处理概述,116页ppt,Jiří Materna
专知会员服务
79+阅读 · 2020年3月10日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
相关资讯
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
使用tinc构建full mesh结构的VPN
运维帮
68+阅读 · 2018年12月1日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
Top
微信扫码咨询专知VIP会员