红联Linux门户
Linux协助

怎么运用Ansible创立AWS ec2密钥

发布时刻:2018-02-23 10:50:07来历:linux.cn作者: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。为了办理你从各种 PPA(Personal Package Archives)装置软件的库房,你能够上传 Ubuntu 源码包并编译,然后经过 Launchpad 以 apt 库房的方法发布。键入如下指令 apt-get 指令或许 apt 指令:
$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install software-properties-common
接下来给你的体系的软件源中增加 ppa:ansible/ansible。
$ sudo apt-add-repository ppa:ansible/ansible
更新你的库房并装置 Ansible:
$ sudo apt update 
$ sudo apt install ansible
装置 boto:
$ pip3 install boto3
关于在CentOS/RHEL 7.x上装置 Ansible 的注意事项
你需求在 CentOS 和 RHEL 7.x 上装备 EPEL 源和 yum指令
$ cd /tmp 
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
$ ls *.rpm 
$ sudo yum install epel-release-latest-7.noarch.rpm 
$ sudo yum install ansible
装置 boto:
$ pip install boto3
 
第二步 2、装备 boto
你需求装备 AWS credentials/API 密钥。参阅 “AWS Security Credentials”(https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html) 文档怎么创立 API key。用 mkdir 指令创立一个名为 ~/.aws 的目录,然后装备 API key:
$ mkdir -pv ~/.aws/ 
$ vi ~/.aws/credentials
[default]
aws_access_key_id = YOUR-ACCESS-KEY-HERE
aws_secret_access_key = YOUR-SECRET-ACCESS-KEY-HERE
还需求装备默许 AWS 区域:
$ vi ~/.aws/config
输出样例如下:
[default]
region = us-west-1
经过创立一个简略的名为 test-boto.py 的 Python 程序来测验你的 boto 装备是否正确:
#!/usr/bin/python3
# A simple program to test boto and print s3 bucket names
import boto3
t = boto3.resource('s3')
for b in t.buckets.all():
print(b.name)
按下面方法来运转该程序:
$ python3 test-boto.py
输出样例:
nixcraft-images
nixcraft-backups-cbz
nixcraft-backups-forum
上面输出能够确认 Python-boto 能够运用 AWS API 正常作业。
 
过程 3、运用 Ansible 创立 AWS ec2 密钥
创立一个名为 ec2.key.yml 的剧本,如下所示:
---
- hosts: local
  connection: local
  gather_facts: no
  tasks:
 - name: Create a new EC2 key
   ec2_key:
   name: nixcraft-key
   region: us-west-1
   register: ec2_key_result
 - name: Save private key
   copy: content="{{ ec2_key_result.key.private_key }}" dest="./aws.nixcraft.pem" mode=0600
   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 文件:
[local]
localhost
如下运转你的剧本:
$ ansible-playbook -i hosts ec2.key.yml
怎么运用Ansible创立AWS ec2密钥
最终你应该有一个名为 `aws.nixcraft.pem 私钥,该私钥能够和 AWS EC2 一同运用。运用 cat 指令检查你的密钥:
$ cat aws.nixcraft.pem
假如你有 EC2 虚拟机,请按如下方法运用:
$ 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 指令来检查这样的信息:
$ ansible-playbook -v -i hosts ec2.key.yml
怎么运用Ansible创立AWS ec2密钥
 
我该怎么删去一个密钥?
运用如下 ec2-key-delete.yml:
---
- hosts: local
  connection: local
  gather_facts: no
  tasks:
 - name: Delete a EC2 key
   ec2_key:
   name: nixcraft-key
   region: us-west-1
# absent means delete keypair
   state: absent
依照如下方法运转:
$ ansible-playbook -i hosts ec2-key-delete.yml
 
运用Ansible让你的体系办理自动化:http://www.138comgov138.com/linux/33201.html
运用Ansible Container构建和测验运用程序:http://www.138comgov138.com/linux/32933.html
运用Ansible办理CoreOS:http://www.138comgov138.com/linux/32557.html
Ansible起步攻略:http://www.138comgov138.com/linux/27752.html
用Ansible来交给Vagrant实例:http://www.138comgov138.com/linux/25257.html