クラウドフロントインスタンスのDNS名(たとえば、1234567890abcd.cloudfront.net)を取得する必要があり、AWS CLIに頼らずにAnabilitiesでこれを取得する方法が素早くあるのだろうかと思いました。アブソリュートを使用したクラウドフロントの事実
エクストラモジュールのソースには、このためのモジュールがないと思われます。他の人はどのようにこの属性を取得していますか?
クラウドフロントインスタンスのDNS名(たとえば、1234567890abcd.cloudfront.net)を取得する必要があり、AWS CLIに頼らずにAnabilitiesでこれを取得する方法が素早くあるのだろうかと思いました。アブソリュートを使用したクラウドフロントの事実
エクストラモジュールのソースには、このためのモジュールがないと思われます。他の人はどのようにこの属性を取得していますか?
あなた自身のモジュールを書くことも、いくつかの行にフィルタプラグインを書き込んで同じことを達成することもできます。
フィルタをAnsibleに書き込む例。このプラグインを使用するために名前あなたのfilter_pluginsでこのファイルaws.py/aws.py
import boto3
import botocore
from ansible import errors
def get_cloudfront_dns(region, dist_id):
""" Return the dns name of the cloudfront distribution id.
Args:
region (str): The AWS region.
dist_id (str): distribution id
Basic Usage:
>>> get_cloudfront_dns('us-west-2', 'E123456LHXOD5FK')
'1234567890abcd.cloudfront.net'
"""
client = boto3.client('cloudfront', region)
domain_name = None
try:
domain_name = (
client
.get_distribution(Id=dist_id)['Distribution']['DomainName']
)
except Exception as e:
if isinstance(e, botocore.exceptions.ClientError):
raise e
else:
raise errors.AnsibleFilterError(
'Could not retreive the dns name for CloudFront Dist ID {0}: {1}'.format(dist_id, str(e))
)
return domain_name
class FilterModule(object):
''' Ansible core jinja2 filters '''
def filters(self):
return {'get_cloudfront_dns': get_cloudfront_dns,}
にすることができます、あなたはそれを呼び出す必要があります。
dns_entry: "{{ 'us-west-2' | get_cloudfront_dns('123434JHJHJH') }}"
に注意してください、あなたはboto3が必要になりますし、このこのプラグインを使用するためには、インストールさbotocore。
は私がAnsible 2.3.0に受け入れられてきた私のレポlinuxdynasty ld-ansible-filters repo
私はこの(cloudfront_facts.py)用のモジュールを書くことになったに位置して例の束を持っています。
ありがとうございました。簡単な方法があると思っていましたが、モジュールを作成する必要があります。 –
私の意見では、プラグインの作成はこのような要求を得るためには簡単です。あなたがたくさんのオプションを持っていない限り。モジュールよりも最適なルートになります。 – linuxdynasty