紅聯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 [email protected]
查看有關 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.4179693.live/linux/33201.html
使用Ansible Container構建和測試應用程序:http://www.4179693.live/linux/32933.html
使用Ansible管理CoreOS:http://www.4179693.live/linux/32557.html
Ansible起步指南:http://www.4179693.live/linux/27752.html
用Ansible來交付Vagrant實例:http://www.4179693.live/linux/25257.html
601268股票行情中心