apisix shell批量更新upstream routes

修改所有的上游配置http改为https(host port修改参考注释)

#!/bin/bash

# 获取原始数据
response=$(curl -s -H "X-API-KEY: xxx" http://127.0.0.1:9180/apisix/admin/upstreams)

# 修改host和port
# modified_response=$(echo $response | jq  '.list[].value.nodes[].host="0.0.0.0" | .list[].value.nodes[].port=443')
 modified_response=$(echo $response | jq  '.list[].value.scheme="https"')

# 遍历修改后的upstreams,并将每个upstream推送回API
echo $modified_response | jq -c '.list[]' | while read i; do
    id=$(echo $i | jq -r '.value.id')
    value=$(echo $i | jq -r '.value')
    curl -X PUT -d "$value" -H "X-API-KEY: xxx" http://127.0.0.1:9180/apisix/admin/upstreams/$id
done

修改路由中的method和plugins,可以覆盖也可以追加

#!/bin/bash

# 获取原始数据
response=$(curl -s -H "X-API-KEY: xxx" http://127.0.0.1:9180/apisix/admin/routes)

# 修改method and plugins
 modified_response=$(echo $response | jq   '.list[].value.methods=["GET", "POST","HEAD","OPTIONS"] | .list[].value.plugins = {"request-id": {"_meta": {"disable": false}}}')

# 遍历修改后的upstreams,并将每个upstream推送回API
echo $modified_response | jq -c '.list[]' | while read i; do
    id=$(echo $i | jq -r '.value.id')
    value=$(echo $i | jq -r '.value')
    curl -X PUT -d "$value" -H "X-API-KEY: xxx" http://127.0.0.1:9180/apisix/admin/routes/$id
done

你可能感兴趣的:(网关,apisix,运维)