mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
PRF:20180210 How to create AWS ec2 key using Ansible.md
@qianghaohao 恭喜你完成了第一篇翻译~
This commit is contained in:
parent
e20c1e9d52
commit
7f0908d99b
@ -1,33 +1,43 @@
|
|||||||
如何使用 Ansible 创建 AWS ec2 密钥
|
如何使用 Ansible 创建 AWS ec2 密钥
|
||||||
======
|
======
|
||||||
我想使用 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 使用。
|
**我想使用 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][2]。为了管理你从各种 PPA(Personal Package Archives)安装软件的仓库,你可以上传 Ubuntu 源码包并编译,然后通过 Launchpad 以 apt 仓库的形式发布。键入如下命令 [apt-get 命令][3]或者 [apt 命令][4]:
|
||||||
|
|
||||||
### 第一步 - [在 Ubuntu 上安装最新版本的 Ansible][1]
|
|
||||||
你必须[给你的系统配置 PPA 来安装最新版的 ansible][2]。为了管理你从各种 PPA(Personal Package Archives) 安装软件的仓库,你可以上传 Ubuntu 源码包并编译,然后通过 Launchpad 以 apt 仓库的形式发布。键入如下命令 [apt-get 命令][3]或者 [apt 命令][4]:
|
|
||||||
```
|
```
|
||||||
$ sudo apt update
|
$ sudo apt update
|
||||||
$ sudo apt upgrade
|
$ sudo apt upgrade
|
||||||
$ sudo apt install software-properties-common
|
$ sudo apt install software-properties-common
|
||||||
```
|
```
|
||||||
接下来给你的系统的软件源中添加 ppa:ansible/ansible
|
|
||||||
|
接下来给你的系统的软件源中添加 `ppa:ansible/ansible`。
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt-add-repository ppa:ansible/ansible
|
$ sudo apt-add-repository ppa:ansible/ansible
|
||||||
```
|
```
|
||||||
更新你的仓库并安装ansible:
|
|
||||||
|
更新你的仓库并安装 Ansible:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt update
|
$ sudo apt update
|
||||||
$ sudo apt install ansible
|
$ sudo apt install ansible
|
||||||
```
|
```
|
||||||
|
|
||||||
安装 boto:
|
安装 boto:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ pip3 install boto3
|
$ pip3 install boto3
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 关于在CentOS/RHEL 7.x上安装Ansible的注意事项
|
#### 关于在CentOS/RHEL 7.x上安装 Ansible 的注意事项
|
||||||
|
|
||||||
你[需要在 CentOS 和 RHEL 7.x 上配置 EPEL 源][5]和 [yum命令][6]
|
你[需要在 CentOS 和 RHEL 7.x 上配置 EPEL 源][5]和 [yum命令][6]
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cd /tmp
|
$ cd /tmp
|
||||||
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
||||||
@ -35,14 +45,17 @@ $ ls *.rpm
|
|||||||
$ sudo yum install epel-release-latest-7.noarch.rpm
|
$ sudo yum install epel-release-latest-7.noarch.rpm
|
||||||
$ sudo yum install ansible
|
$ sudo yum install ansible
|
||||||
```
|
```
|
||||||
|
|
||||||
安装 boto:
|
安装 boto:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ pip install boto3
|
$ pip install boto3
|
||||||
```
|
```
|
||||||
|
|
||||||
### 第二步 2 – 配置 boto
|
### 第二步 2 – 配置 boto
|
||||||
|
|
||||||
你需要配置 AWS credentials/API 密钥。参考 “[AWS Security Credentials][7]” 文档如何创建 API key。用 mkdir 命令创建一个名为 ~/.aws 的目录,然后配置 API key:
|
你需要配置 AWS credentials/API 密钥。参考 “[AWS Security Credentials][7]” 文档如何创建 API key。用 `mkdir` 命令创建一个名为 `~/.aws` 的目录,然后配置 API key:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ mkdir -pv ~/.aws/
|
$ mkdir -pv ~/.aws/
|
||||||
$ vi ~/.aws/credentials
|
$ vi ~/.aws/credentials
|
||||||
@ -54,14 +67,20 @@ aws_secret_access_key = YOUR-SECRET-ACCESS-KEY-HERE
|
|||||||
```
|
```
|
||||||
|
|
||||||
还需要配置默认 [AWS 区域][8]:
|
还需要配置默认 [AWS 区域][8]:
|
||||||
`$ vi ~/.aws/config`
|
|
||||||
|
```
|
||||||
|
$ vi ~/.aws/config
|
||||||
|
```
|
||||||
|
|
||||||
输出样例如下:
|
输出样例如下:
|
||||||
|
|
||||||
```
|
```
|
||||||
[default]
|
[default]
|
||||||
region = us-west-1
|
region = us-west-1
|
||||||
```
|
```
|
||||||
|
|
||||||
通过创建一个简单的名为 test-boto.py 的 python 程序来测试你的 boto 配置是否正确:
|
通过创建一个简单的名为 `test-boto.py` 的 Python 程序来测试你的 boto 配置是否正确:
|
||||||
|
|
||||||
```
|
```
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# A simple program to test boto and print s3 bucket names
|
# A simple program to test boto and print s3 bucket names
|
||||||
@ -72,20 +91,25 @@ for b in t.buckets.all():
|
|||||||
```
|
```
|
||||||
|
|
||||||
按下面方式来运行该程序:
|
按下面方式来运行该程序:
|
||||||
`$ python3 test-boto.py`
|
|
||||||
|
```
|
||||||
|
$ python3 test-boto.py
|
||||||
|
```
|
||||||
|
|
||||||
输出样例:
|
输出样例:
|
||||||
|
|
||||||
```
|
```
|
||||||
nixcraft-images
|
nixcraft-images
|
||||||
nixcraft-backups-cbz
|
nixcraft-backups-cbz
|
||||||
nixcraft-backups-forum
|
nixcraft-backups-forum
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
上面输出可以确定 Python-boto 可以使用 AWS API 正常工作。
|
上面输出可以确定 Python-boto 可以使用 AWS API 正常工作。
|
||||||
|
|
||||||
### 步骤 3 - 使用 Ansible 创建 AWS ec2 密钥
|
### 步骤 3 - 使用 Ansible 创建 AWS ec2 密钥
|
||||||
|
|
||||||
创建一个名为 ec2.key.yml 的 playbook,如下所示:
|
创建一个名为 `ec2.key.yml` 的剧本,如下所示:
|
||||||
|
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
- hosts: local
|
- hosts: local
|
||||||
@ -106,44 +130,54 @@ nixcraft-backups-forum
|
|||||||
|
|
||||||
其中,
|
其中,
|
||||||
|
|
||||||
* ec2_key: – ec2 密钥对。
|
* `ec2_key:` – ec2 密钥对。
|
||||||
* name: nixcraft_key – 密钥对的名称。
|
* `name: nixcraft_key` – 密钥对的名称。
|
||||||
* region: us-west-1 – 使用的 AWS 区域。
|
* `region: us-west-1` – 使用的 AWS 区域。
|
||||||
* register: ec2_key_result : 保存生成的密钥到 ec2_key_result 变量。
|
* `register: ec2_key_result` – 保存生成的密钥到 ec2_key_result 变量。
|
||||||
* 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 文件权限).
|
* `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 改变时才保存。我们不想覆盖你的密钥文件。
|
* `when: ec2_key_result.changed` – 仅仅在 `ec2_key_result` 改变时才保存。我们不想覆盖你的密钥文件。
|
||||||
|
|
||||||
|
你还必须创建如下 `hosts` 文件:
|
||||||
|
|
||||||
你还必须创建如下主机文件:
|
|
||||||
```
|
```
|
||||||
[local]
|
[local]
|
||||||
localhost
|
localhost
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
如下运行你的 playbook:
|
如下运行你的剧本:
|
||||||
`$ ansible-playbook -i hosts ec2.key.yml`
|
|
||||||
|
```
|
||||||
|
$ ansible-playbook -i hosts ec2.key.yml
|
||||||
|
```
|
||||||
|
|
||||||
![](https://www.cyberciti.biz/media/new/faq/2018/02/How-to-create-AWS-ec2-key-using-Ansible.jpg)
|
![](https://www.cyberciti.biz/media/new/faq/2018/02/How-to-create-AWS-ec2-key-using-Ansible.jpg)
|
||||||
|
|
||||||
最后你应该有一个名为 aws.nixcraft.pem 私钥,该私钥可以和 AWS EC2 一起使用。查看你的密钥 [cat 命令][9]:
|
最后你应该有一个名为 `aws.nixcraft.pem 私钥,该私钥可以和 AWS EC2 一起使用。使用 [cat 命令][9]查看你的密钥:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cat aws.nixcraft.pem
|
$ cat aws.nixcraft.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
如果你有 EC2 虚拟机,请按如下方式使用:
|
如果你有 EC2 虚拟机,请按如下方式使用:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ssh -i aws.nixcraft.pem user@ec2-vm-dns-name
|
$ ssh -i aws.nixcraft.pem user@ec2-vm-dns-name
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 查看有关 python 数据结构变量名的信息,比如 ec2_key_result.changed 和 ec2_key_result.key.private_key
|
**查看有关 python 数据结构变量名的信息,比如 ec2_key_result.changed 和 ec2_key_result.key.private_key**
|
||||||
|
|
||||||
你一定在想我是如何使用变量名的,比如 ec2_key_result.changed 和 ec2_key_result.key.private_key。它们在哪里定义过吗?变量的值是通过 API 调用返回的。简单地使用 -v 选项运行 ansible-playbook 命令来查看这样的信息:
|
你一定在想我是如何使用变量名的,比如 `ec2_key_result.changed` 和 `ec2_key_result.key.private_key`。它们在哪里定义过吗?变量的值是通过 API 调用返回的。简单地使用 `-v` 选项运行 `ansible-playbook` 命令来查看这样的信息:
|
||||||
`$ ansible-playbook -v -i hosts ec2.key.yml`
|
|
||||||
|
```
|
||||||
|
$ ansible-playbook -v -i hosts ec2.key.yml
|
||||||
|
```
|
||||||
|
|
||||||
![](https://www.cyberciti.biz/media/new/faq/2018/02/ansible-verbose-output.jpg)
|
![](https://www.cyberciti.biz/media/new/faq/2018/02/ansible-verbose-output.jpg)
|
||||||
|
|
||||||
### 我该如何删除一个密钥?
|
### 我该如何删除一个密钥?
|
||||||
|
|
||||||
使用如下 ec2-key-delete.yml:
|
使用如下 `ec2-key-delete.yml`:
|
||||||
|
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
- hosts: local
|
- hosts: local
|
||||||
@ -160,8 +194,10 @@ $ ssh -i aws.nixcraft.pem user@ec2-vm-dns-name
|
|||||||
```
|
```
|
||||||
|
|
||||||
按照如下方式运行:
|
按照如下方式运行:
|
||||||
`$ ansible-playbook -i hosts ec2-key-delete.yml`
|
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ansible-playbook -i hosts ec2-key-delete.yml
|
||||||
|
```
|
||||||
|
|
||||||
### 关于作者
|
### 关于作者
|
||||||
|
|
||||||
@ -173,7 +209,7 @@ via: https://www.cyberciti.biz/faq/how-to-create-aws-ec2-key-using-ansible/
|
|||||||
|
|
||||||
作者:[Vivek Gite][a]
|
作者:[Vivek Gite][a]
|
||||||
译者:[qianghaohao](https://github.com/qianghaohao)
|
译者:[qianghaohao](https://github.com/qianghaohao)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user