新聞中心
如果你長期使用亞馬遜 Web 服務(wù)(AWS)中的實例,你可能會遇到下面這個常見的問題,它不是因為技術(shù)性的原因?qū)е碌?,更多的是因為人類追求方便舒適的天性:當(dāng)你登錄一臺你最近沒有使用的區(qū)域的新實例,你最終會創(chuàng)建一個新的 SSH 密鑰對,久而久之這最終就會造成個人擁有太多密鑰,導(dǎo)致管理起來復(fù)雜混亂。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出鐘山免費做網(wǎng)站回饋大家。
本文將會介紹一種在所有區(qū)域中使用你的公鑰的方法。最近,一篇 Fedora Magazine 的文章介紹了另一種解決方案。但本文中的解決方案可以進一步的以更簡潔和可擴展的方式實現(xiàn)自動化。
假設(shè)你有一個 Fedora 30 或 31 系統(tǒng),其中存儲了你的密鑰,并且還安裝了 Ansible。當(dāng)這兩件事同時滿足時,就提供了解決這個問題的辦法,甚至它還能做到更多。
使用 Ansible 的 ec2_key 模塊,你可以創(chuàng)建一個簡單的 Ansible 劇本來在所有區(qū)域中維護你的 SSH 密鑰對。如果你需要增加或者刪除密鑰,在 Ansible 中這就像從文件中添加和刪除行一樣簡單。
設(shè)置和運行 Ansible 劇本
如果要使用劇本,首先需要安裝 ec2_key 模塊的必要依賴項:
$ sudo dnf install python3-boto python3-boto3
該劇本很簡單:你只需要像下面的例子一樣,修改其中的密鑰及其對應(yīng)的名稱。然后,運行該劇本,它會幫你遍歷所有列出的公共 AWS 區(qū)域。該示例還包括一些你可能要訪問的受限區(qū)域,只需根據(jù)需要來取消對應(yīng)行的注釋,然后,保存文件重新運行劇本即可。
---
- name: Maintain an ssh key pair in ec2
hosts: localhost
connection: local
gather_facts: no
vars:
ansible_python_interpreter: python
tasks:
- name: Make available your ssh public key in ec2 for new instances
ec2_key:
name: "YOUR KEY NAME GOES HERE"
key_material: 'YOUR KEY GOES HERE'
state: present
region: "{{ item }}"
with_items:
- us-east-2 #US East (Ohio)
- us-east-1 #US East (N. Virginia)
- us-west-1 #US West (N. California)
- us-west-2 #US West (Oregon)
- ap-east-1 #Asia Pacific (Hong Kong)
- ap-south-1 #Asia Pacific (Mumbai)
- ap-northeast-2 #Asia Pacific (Seoul)
- ap-southeast-1 #Asia Pacific (Singapore)
- ap-southeast-2 #Asia Pacific (Sydney)
- ap-northeast-1 #Asia Pacific (Tokyo)
- ca-central-1 #Canada (Central)
- eu-central-1 #EU (Frankfurt)
- eu-west-1 #EU (Ireland)
- eu-west-2 #EU (London)
- eu-west-3 #EU (Paris)
- eu-north-1 #EU (Stockholm)
- me-south-1 #Middle East (Bahrain)
- sa-east-1 #South America (Sao Paulo)
# - us-gov-east-1 #AWS GovCloud (US-East)
# - us-gov-west-1 #AWS GovCloud (US-West)
# - ap-northeast-3 #Asia Pacific (Osaka-Local)
# - cn-north-1 #China (Beijing)
# - cn-northwest-1 #China (Ningxia)
這個劇本需要通過 API 訪問 AWS,為此,請使用環(huán)境變量,如下所示:
$ AWS_ACCESS_KEY="aws-access-key-id" AWS_SECRET_KEY="aws-secret-key-id" ansible-playbook ec2-playbook.yml
另一個方式是安裝 aws 命令行工具并添加憑據(jù),如以前的一篇 Fedora Magazine 文章所述。如果你在線存儲它們,這些參數(shù)將不建議插入到劇本中!你可以在 GitHub 中找到本文的劇本代碼。
完成該劇本之后,請確認你的密鑰在 AWS 控制臺上可用。為此,可以做如下操作:
- 登錄你的 AWS 控制臺
- 轉(zhuǎn)到 “EC2 > Key Pairs”
- 你應(yīng)該會看到列出的密鑰。唯一的限制是你必須使用此方法逐個區(qū)域來檢查。
另一種方法是在 shell 中使用一個快速命令來為你做這些檢查。
首先在劇本上創(chuàng)建一個包含所有區(qū)域的變量:
AWS_REGION="us-east-1 us-west-1 us-west-2 ap-east-1 ap-south-1 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 eu-north-1 me-south-1 sa-east-1"
然后,執(zhí)行如下循環(huán),你就可以從 aws 的 API 獲得結(jié)果:
for each in ${AWS_REGION} ; do aws ec2 describe-key-pairs --key-name ; done
請記住,要執(zhí)行上述操作,你需要安裝 aws 命令行。
標(biāo)題名稱:在AWS中使用Ansible來管理你的SSH密鑰
本文URL:http://www.5511xx.com/article/djdopii.html


咨詢
建站咨詢
