新聞中心
如果你長期使用亞馬遜 Web 服務(wù)(AWS)中的實(shí)例,你可能會(huì)遇到下面這個(gè)常見的問題,它不是因?yàn)榧夹g(shù)性的原因?qū)е碌模嗟氖且驗(yàn)槿祟愖非蠓奖闶孢m的天性:當(dāng)你登錄一臺(tái)你最近沒有使用的區(qū)域的新實(shí)例,你最終會(huì)創(chuàng)建一個(gè)新的 SSH 密鑰對(duì),久而久之這最終就會(huì)造成個(gè)人擁有太多密鑰,導(dǎo)致管理起來復(fù)雜混亂。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出鐘山免費(fèi)做網(wǎng)站回饋大家。
本文將會(huì)介紹一種在所有區(qū)域中使用你的公鑰的方法。最近,一篇 Fedora Magazine 的文章介紹了另一種解決方案。但本文中的解決方案可以進(jìn)一步的以更簡(jiǎn)潔和可擴(kuò)展的方式實(shí)現(xiàn)自動(dòng)化。
假設(shè)你有一個(gè) Fedora 30 或 31 系統(tǒng),其中存儲(chǔ)了你的密鑰,并且還安裝了 Ansible。當(dāng)這兩件事同時(shí)滿足時(shí),就提供了解決這個(gè)問題的辦法,甚至它還能做到更多。
使用 Ansible 的 ec2_key 模塊,你可以創(chuàng)建一個(gè)簡(jiǎn)單的 Ansible 劇本來在所有區(qū)域中維護(hù)你的 SSH 密鑰對(duì)。如果你需要增加或者刪除密鑰,在 Ansible 中這就像從文件中添加和刪除行一樣簡(jiǎn)單。
設(shè)置和運(yùn)行 Ansible 劇本
如果要使用劇本,首先需要安裝 ec2_key 模塊的必要依賴項(xiàng):
$ sudo dnf install python3-boto python3-boto3
該劇本很簡(jiǎn)單:你只需要像下面的例子一樣,修改其中的密鑰及其對(duì)應(yīng)的名稱。然后,運(yùn)行該劇本,它會(huì)幫你遍歷所有列出的公共 AWS 區(qū)域。該示例還包括一些你可能要訪問的受限區(qū)域,只需根據(jù)需要來取消對(duì)應(yīng)行的注釋,然后,保存文件重新運(yùn)行劇本即可。
---
- 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)
這個(gè)劇本需要通過 API 訪問 AWS,為此,請(qǐng)使用環(huán)境變量,如下所示:
$ AWS_ACCESS_KEY="aws-access-key-id" AWS_SECRET_KEY="aws-secret-key-id" ansible-playbook ec2-playbook.yml
另一個(gè)方式是安裝 aws 命令行工具并添加憑據(jù),如以前的一篇 Fedora Magazine 文章所述。如果你在線存儲(chǔ)它們,這些參數(shù)將不建議插入到劇本中!你可以在 GitHub 中找到本文的劇本代碼。
完成該劇本之后,請(qǐng)確認(rèn)你的密鑰在 AWS 控制臺(tái)上可用。為此,可以做如下操作:
- 登錄你的 AWS 控制臺(tái)
- 轉(zhuǎn)到 “EC2 > Key Pairs”
- 你應(yīng)該會(huì)看到列出的密鑰。唯一的限制是你必須使用此方法逐個(gè)區(qū)域來檢查。
另一種方法是在 shell 中使用一個(gè)快速命令來為你做這些檢查。
首先在劇本上創(chuàng)建一個(gè)包含所有區(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
請(qǐng)記住,要執(zhí)行上述操作,你需要安裝 aws 命令行。
網(wǎng)站名稱:在AWS中使用Ansible來管理你的SSH密鑰
本文來源:http://www.dlmjj.cn/article/djdopii.html


咨詢
建站咨詢
