使用配置文件作为变量的aws cli命令

时间:2019-05-03 05:14:02

标签: amazon-web-services ansible aws-cli

目前我正在使用ansible中的任务。该任务包括aws cli命令,如下所示:

command: aws ec2 describe-instances --region myregion --profile myawsprofile --filters

在运行

时效果很好
ansible-playbook my.yml 

现在我的问题是:我有多个aws配置文件,并且不想在aws cli命令(任务中)中使用硬代码。
想要将变量用于配置文件,因此,无论传递给配置文件的任何变量,它都将执行任务并运行ansible-playbook。

要求任何人建议如何进行此操作。

我在aws cli中查看了环境变量,但并没有太大帮助。

3 个答案:

答案 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_PROFILEAWS_DEFAULT_PROFILE

    $ export AWS_PROFILE=[profile name]
    

    或在Windows上

    C:\> setx AWS_PROFILE [profile name]
    

使用后一种方法的优势在于,配置完成后,它将在终端会话期间(或直到被另一个配置文件名称替换之前)保持其值。

参考:AWS CLI文档的Named Profiles