目前我正在使用ansible中的任务。该任务包括aws cli命令,如下所示:
command: aws ec2 describe-instances --region myregion --profile myawsprofile --filters
在运行
时效果很好ansible-playbook my.yml
现在我的问题是:我有多个aws配置文件,并且不想在aws cli命令(任务中)中使用硬代码。
想要将变量用于配置文件,因此,无论传递给配置文件的任何变量,它都将执行任务并运行ansible-playbook。
要求任何人建议如何进行此操作。
我在aws cli中查看了环境变量,但并没有太大帮助。
答案 0 :(得分:1)
如果您确实要使用命令任务而不是ec2_instance任务,则可以这样做:
@Sql(scripts = "classpath:my-function-registration-script.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
然后运行您的剧本
command: aws ec2 describe-instances --region myregion --profile {{ myawsprofile }} --filters
答案 1 :(得分:0)
使用ec2_instance会更好。
除此之外,您可能还想查看其他100多个Amazon模块。
答案 2 :(得分:0)
您有两个选择(将下面的[profile name]
更改为实际值):
--profile [profile name]
作为命令选项。或者,设置配置文件以用作环境变量。在Mac和Linux上,使用AWS_PROFILE
或AWS_DEFAULT_PROFILE
$ export AWS_PROFILE=[profile name]
或在Windows上
C:\> setx AWS_PROFILE [profile name]
使用后一种方法的优势在于,配置完成后,它将在终端会话期间(或直到被另一个配置文件名称替换之前)保持其值。
参考:AWS CLI文档的Named Profiles章