我在 Windows 10 Professional 上使用 AWSCLI 和 GitBash。我需要按帐户列出所有正在运行的 AWS 实例。将开始在帐户中执行操作以创建列表来填充来自用户的公钥。
基于这些网站:
使用 Ansible 自动将 SSH 密钥添加到 EC2 实例
AWS 文档:
并已完成:
aws ec2 describe-instances --filters Name=instance-state-name,Values=running
但是这个命令的输出生成了很多信息。我尝试查看公共 IP 并生成少一点的信息,只是为了进行过滤测试。
$ aws ec2 describe-network-interfaces --query NetworkInterfaces[].Association.PublicIp
[
"5.1.210.2",
"5.9.236.6",
"5.25.225.6",
"3.2.254.5",
"3.9.237.67",
"4.5.183.15",
"8.6.37.159",
"5.0.128.119",
"5.8.74.231",
"4.2.37.138",
"5.8.103.63",
"4.1.17.9",
"4.4.216.193",
"4.9.147.45",
"4.7.169.22"
]
出于安全考虑,我对一些八位数字进行了更改。输出效果更好,但我不知道如何正确过滤第一个例子。
我的 add-key.yml
[root@devops list]# cat add-key.yml
- name: "Playbook to Add Key to EC2 Instances"
hosts: hosts_to_add_key
vars:
- status : "present"
- key : "user_rsa_key.pub"
tasks:
- name: "Copy the authorized key file from"
authorized_key:
user: "{{ansible_user}}"
state: "{{status}}"
key: "{{ lookup('file', '{{ key }}')}}"
我的hosts_to_add_key:
[root@devops list]# cat hosts_to_add_key
[hosts_to_add_key]
bacula ansible_host=3.2.1.43 ansible_user=centos
1.2.1.20 ansible_host=10.9.1.50 ansible_user=centos
devops ansible_host=localhost ansible_user=centos
docker ansible_host=52.87.108.170 ansible=ec2-user
jenkins ansible_host=52.7.6.214 ansible_user=ec2-user
jira ansible_host=54.175.104.102 ansible_user=ec2-user
[hosts_to_add_key:vars]
ansible_ssh_common_args="-o StrictHostKeyChecking=no"
删除了上面的一些主机以显示几行。如果有人能指出有关 describe-instances 的信息以获得更好的结果,那就太好了(按名称、按 VPC)
答案1
您可以通过设置 aws cli 来实现此目的:
下载并设置 AWS CLI
配置AWS ie
aws configure
(提供你的账户访问密钥和密钥ID)运行以下代码,列出正在运行的实例以及私有 IP
aws ec2 describe-instances \ --filter "Name=instance-state-name,Values=running" \ --query "Reservations[*].Instances[*].[PrivateIpAddress, Tags[?Key=='Name'].Value|[0]]" \ --output table > ec2_list.txt
这也将表格输出到ec2_list.txt
文件中,以便于共享。