云网牛站
所在位置:首页 > Linux教程 > 在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

2019-12-05 10:48:24作者:戴均益稿源:云网牛站

如果您长期使用Amazon Web Services(AWS)中的实例,则可能会遇到这个常见问题,这不是技术上的问题。在近期未使用过的区域中启动新实例时,可能最终会创建一个新的SSH密钥对,这导致密钥过多,这可能变得复杂且混乱。本文为您提供了一种在所有区域中拥有公钥的方法。假设您有一个Fedora 30或31桌面系统,其中存储了密钥,并且还安装了Ansible(参考:在Fedora系统中获取最新的Ansible 2.8版本)。借助Ansible的ec2_key模块,您可以创建一个简单的playbook,以在所有区域维护您的SSH密钥对。如果您需要添加或删除键,则就像在文件中添加和删除行一样简单。

在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

 

设置和运行playbook

要使用该playbook,请首先为ec2_key模块安装必要的依赖项:

$ sudo dnf install python3-boto python3-boto3

该playbook很简单:您只需更改密钥及其名称,如下面的示例所示。之后,运行playbook并在列出的所有公共AWS区域上进行迭代。如果您有权访问,该示例还包括限制区域。要包含它们,请根据需要取消注释每一行,保存文件,然后再次运行该playbook。

在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

---

- 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)

该playbook 还要求通过API对AWS进行访问。为此,请按以下方式使用环境变量:

$ AWS_ACCESS_KEY="aws-access-key-id" AWS_SECRET_KEY="aws-secret-key-id" ansible-playbook ec2-playbook.yml

playbook完成后,请确认您的密钥在AWS控制台上可用。要做到这一点,请按以下步骤操作:

1、登录到您的AWS控制台。

2、转到EC2 > Key Pairs。

3、您应该会看到列出的密钥,唯一的限制是您必须使用此方法逐个区域检查。

 

另一种方法:在shell中使用快速命令为您执行此检查

首先在playbook上创建一个包含所有区域的变量:

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"

然后执行for循环,您将从aws API获得结果:

for each in ${AWS_REGION} ; do aws ec2 describe-key-pairs --key-name <YOUR KEY GOES HERE> ; done

请记住,要执行上述操作,您需要安装aws cli(参考:在Linux系统上安装和使用AWS CLI的方法)。

 

相关主题

了解AWS中的云存储选项:S3、EBS和EFS介绍

精选文章
热门文章