社区编辑申请
注册/登录
如何使用Ansible创建AWS EC2密钥
系统 Linux 系统运维
我想使用 Ansible 工具创建 Amazon EC2 密钥对。不想使用 AWS CLI 来创建。可以使用 Ansible 来创建 AWS ec2 密钥吗?简而言之,你需要安装 Ansible 和 boto 模块。我们一起来看下如何安装 boto 并结合 Ansible 使用。

https://s4.51cto.com/oss/201802/23/3d2b6bf178e83eea78050153bd5deead.jpeg

我想使用 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。为了管理你从各种 PPA(Personal Package Archives)安装软件的仓库,你可以上传 Ubuntu 源码包并编译,然后通过 Launchpad 以 apt 仓库的形式发布。键入如下命令 apt-get 命令或者 apt 命令

  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 源yum命令

  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” 文档如何创建 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 区域

  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 – 保存生成的密钥到 ec2keyresult 变量。
  • 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 命令查看你的密钥:

  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.changedec2_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

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2022-06-15 08:21:49

Linux运维工程师

2022-06-09 13:45:18

vivoK8S集群Kubernetes

2022-04-11 16:40:16

AWSAzure微软

2022-04-07 13:56:17

Azure谷歌云AWS

2022-06-06 08:47:32

Ansible配置文件

2022-06-25 21:22:30

编程Rust代码

2022-06-24 11:34:38

云计算应用安全

2022-05-28 10:44:43

云成本云架构多云

2022-06-15 10:12:04

Ansible命令Linux

2022-05-24 15:55:37

避障小车华为

2022-05-11 11:13:19

亚马逊云科技无服务器数据库

2022-06-15 14:40:54

英特尔漏洞

2022-05-31 16:06:24

udp通信wifi鸿蒙

2021-11-15 13:24:02

2022-05-06 12:04:24

Ansible管理工具

2022-05-13 17:03:13

红帽AzureAnsible

2020-10-10 20:30:05

Ansible自动化工具系统运维

2022-02-21 14:14:03

SSH加密密钥

2022-06-27 05:42:28

Redis数据迁移

2022-05-11 07:17:29

同话题下的热门内容

用这些开源工具在 Linux 上编辑 PDF 文件Linux 网络性能的 15 个优化建议Docker Compose:搭建开发环境的好方式在 Linux 上玩电子游戏的三种方式为什么命令行在 Linux 生态系统中如此重要在 Linux 上使用 WineZGUI 运行 Windows 应用和游戏Docker 暴重大安全漏洞:外部网络可直接访问映射到 127.0.0.1 的本地服务如何构建自己的可引导 Linux Live CD

编辑推荐

Linux系统下安装MySQL的步骤详解CentOS与Ubuntu有什么不同?Linux下如何使用minicom USB串口为什么你可能想要略过Ubuntu 17.04?Linux中7个判断文件系统类型的方法
我收藏的内容
点赞
收藏

51CTO技术栈公众号