If you have EC2 instances on AWS, it is common for them to be layered behind firewalls implemented with VPC Security Groups. That means that if you need to access these servers directly, you may not be able to unless you take measures to make that happen.
In an enterprise AWS account, there are lots of good solutions to this problem. Firstly, if you are far enough down the containerization path, you may argue that directly accessing the instances via SSH is to be avoided, that you should only be building and deploying containers. Alternately, if you do need to access these servers, you can likely do so with a VPN, either hardware or software.
However, for a smaller AWS account, like a small project or small business, these solutions may be more complicated than you desire. I find myself needing to access small AWS accounts from a variety of places, as I move around a fair bit meeting with clients and working, and I need to be able to access EC2 instances on AWS while I do, so I found myself wanting a tool that would allow me to quickly add and remove my current external IP address or particular networks (expressed through CIDR blocks) to an AWS security group.
So I built a little open-source tool. Since the most-popular AWS client library is boto, and since python is a reasonable choice for a simple cross-platform cli tool, I built it in Python. I called it awswl (aws whitelist) and I've been refining it, adding tests, documentation, making sure it works with both python2 and python3. Now it's finally ready to release to the wild.
You can find it on pypi if you want to install it, on GitHub if you want to read the source or contribute, and you can browse the documentation on either one.
Showing posts with label aws. Show all posts
Showing posts with label aws. Show all posts
Wednesday, April 11, 2018
Sunday, September 18, 2016
Host Key Verification and Ansible
I've been using Ansible to configure some instances on Amazon Web Services with a client, for two reasons:
While I was pleased to read the toroid.org post about bugs filed, it doesn't seem to be fixed yet.
Happily, as long as you connect to a single host at at time, everything is fine, and after that you can connect to the group:
- To make it repeatable in the future, if we want to configure an instance again, or another instance.
- Because I will be repeating it immediately now, making more than one server to live behind a load balancer that are meant to be configured identically.
$ ansible servergroup -m ping The authenticity of host '10.0.2.161 ()' can't be established. ECDSA key fingerprint is SHA256:hEdMy3XKWV/zWobmSuwf+b6oI9xt4cYJzM1eAa2T8Ak. Are you sure you want to continue connecting (yes/no)? The authenticity of host '10.0.1.79 ( )' can't be established. ECDSA key fingerprint is SHA256:N5iv0/+zRHk7UTsIQOUlzn2ZiU9L2xL+Fn153nlZdjs. Are you sure you want to continue connecting (yes/no)? yes Please type 'yes' or 'no': yes Please type 'yes' or 'no': yes Please type 'yes' or 'no': yes Please type 'yes' or 'no': yes Please type 'yes' or 'no': yes Please type 'yes' or 'no': ^CProcess WorkerProcess-3: Process WorkerProcess-2: Traceback (most recent call last): [ERROR]: User interrupted execution
While I was pleased to read the toroid.org post about bugs filed, it doesn't seem to be fixed yet.
Happily, as long as you connect to a single host at at time, everything is fine, and after that you can connect to the group:
$ ansible server-one -m ping The authenticity of host '10.0.1.79 (That's fine for a couple of servers, but it wouldn't be fun with a large cluster. If there's a better way, I haven't discovered it yet.)' can't be established. ECDSA key fingerprint is SHA256:N5iv0/+zRHk7UTsIQOUlzn2ZiU9L2xL+Fn153nlZdjs. Are you sure you want to continue connecting (yes/no)? yes server-one | SUCCESS => { "changed": false, "ping": "pong" }
tags:
ansible,
aws,
configuration-management,
hosting,
ssh
Subscribe to:
Posts (Atom)