如何在3个不同的区域上运行以下命令?

时间:2017-12-12 13:42:35

标签: amazon-web-services jenkins groovy

我编写了以下Groovy代码:

#!/usr/local/bin/groovy
def p = ['/usr/local/bin/aws', 'ec2', 'describe-vpcs'].execute() | 'grep -w CidrBlock'.execute() | ['awk', '{print $2}'].execute() | ['tr', '-d', '"\\"\\|,\\|\\{\\|\\\\["'].execute() | 'uniq'.execute()
p.waitFor()
def output = []
p.text.eachLine { line ->
        output << line
}

output.each {
        println it
}

输出如下:

172.31.0.0/16
172.60.0.0/16
172.54.0.0/16
172.59.0.0/16

此代码的输出将添加到Jenkins的扩展参数中,并显示正在使用的CIDR块列表。

目前,该命令仅返回默认区域us-west-2的输出。

我想运行此代码并收集所有地区使用的所有CIDR块(在我的情况下,它是俄勒冈[us-west-2],爱尔兰[eu-west-1]和弗吉尼亚[我们] -east-1])。

怎么做?

1 个答案:

答案 0 :(得分:1)

对于所有可用区域:

def regions = ['/usr/local/bin/aws', 'ec2', 'describe-regions', '--output', 'text'].execute() | 'cut -f3'.execute()
        regions.waitFor()
        def output = []
        regions.text.eachLine { region ->
            def p = ['/usr/local/bin/aws', 'ec2', 'describe-vpcs', '--region', region].execute() | 'grep -w CidrBlock'.execute() | ['awk', '{print $2}'].execute() | ['tr', '-d', '"\\"\\|,\\|\\{\\|\\\\["'].execute() | 'uniq'.execute()
            p.waitFor()
            p.text.eachLine { line ->
                output << line
            }
        }
        output.each {
            println it
        }