歡迎光臨
每天分享高質量文章

如何使用 Ansible 創建 AWS ec2 密鑰 | Linux 中國

你需要使用 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 – 儲存生成的密鑰到 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 命令[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)

分享創造快樂