Python 如何访问AWS';使用结构的动态EC2库存?
Fabric有一个设置来指定要SSH连接到的计算机 AmazonWeb服务有更多的动态资源清册,可以使用python中的工具(如)进行查询 有没有办法将这两种服务结合起来?理想情况下,我想要一些简单的东西,比如使用一个清单文件和一个外部文件 更具体地说,这个用例是否有预烘焙的解决方案?理想情况下,我希望运行这样简单的操作:Python 如何访问AWS';使用结构的动态EC2库存?,python,amazon-web-services,fabric,ansible-inventory,Python,Amazon Web Services,Fabric,Ansible Inventory,Fabric有一个设置来指定要SSH连接到的计算机 AmazonWeb服务有更多的动态资源清册,可以使用python中的工具(如)进行查询 有没有办法将这两种服务结合起来?理想情况下,我想要一些简单的东西,比如使用一个清单文件和一个外部文件 更具体地说,这个用例是否有预烘焙的解决方案?理想情况下,我希望运行这样简单的操作: from fabric.api import env, task import ec2 env.roledefs = ec2.Inventory() @task def c
from fabric.api import env, task
import ec2
env.roledefs = ec2.Inventory()
@task
def command():
run("lsb_release -a")
并像这样运行它,假设存在env.roledefs['nginx']
:
$ fab -R nginx command
从
你可以看到,如果你设置
env.hosts=['my_server1'、'my_server2']
然后,您将能够以这些主机为目标
对于boto,如果你有一个函数
ec2_连接。仅获取__实例(筛选器={'tag':小菜一碟 您可以同时使用fabric和boto。 首先,您需要从控制台导出aws_secret_密钥、aws_secret_access_密钥和默认区域。结构文件名应为fabfile.py,而不应为ec2.py/other
import boto, urllib2
from boto.ec2 import connect_to_region
from fabric.api import env, run, cd, settings, sudo
from fabric.api import parallel
import os
import sys
REGION = os.environ.get("AWS_EC2_REGION")
env.user = "ec2-user"
env.key_filename = ["/home/user/uswest.pem"]
@task
def command():
run("lsb_release -a")
def _create_connection(region):
print "Connecting to ", region
conn = connect_to_region(
region_name = region,
aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY")
)
print "Connection with AWS established"
return connection
最后,使用下面的命令可以执行这个程序
$ fab command
你是从哪里得到这个的?看起来很有用,但我得好好玩玩。