如何扩展ansible aws模块?

时间:2015-07-30 19:04:03

标签: python amazon-s3 ansible

当我将它作为本地库模块而不是作为核心模块运行时,我从ansible s3模块获得了不同的行为。

我想将以下内容添加到s3.py模块https://github.com/ansible/ansible-modules-core/blob/stable-1.9/cloud/amazon/s3.py

if mode == 'config':
    # Lets check to see if bucket exists to get ground truth.
    bucketrtn = bucket_check(module, s3, bucket)
    if bucketrtn is False:
        create_bucket(module, s3, bucket, location)
    configure_website(s3, bucket, suffix, error_key, redirect_all_requests_to)

要使用ansible s3模块进行测试,请在我的剧本中执行以下任务:

- s3: "bucket=testsite.com mode=put object=index.html src=index.html"

这没有任何问题,但是如果我在名为s3_v21.py的s3.py库的本地副本上使用相同的行,即:

 - s3_v21: "bucket=testsite.com mode=put object=index.html src=index.html"

bucket_check的结果总是错误的。

1 个答案:

答案 0 :(得分:0)

从进一步调试开始,问题会追溯到Boto库。

以下行修复了boto库https://github.com/boto/boto/issues/2836

中的此问题
if '.' in bucket:
    aws_connect_kwargs['calling_format'] = OrdinaryCallingFormat()

问题是,在设置此调用格式s3.lookup("bucketnamewith.period")时,在我的S3 ansible模块版本中返回none。但是从基础S3模块继续工作得很好。我必须采用的解决方法是停止使用具有句点的存储桶名称。