使用curl进行参数启动精简作业

时间:2019-06-13 15:11:07

标签: curl option rundeck

我想在提交后使用gitlab-ci启动rundeck作业。所以我使用curl命令来调用rundeck作业。但是有一个问题,我的工作中未使用选项值,而是使用默认值。但是我的xml响应显示argString存在。

我使用的命令:

curl -X 'POST' -H 'Content-Type: application/json' -H 'X-Rundeck-Auth-Token: <my_token>' --data-urlencode 'argString=-LOCAL_REPO /home/rundeck/ -FILE_NAME archive_test.zip' 'https://<url:port>/api/1/job/<job_id>/run' -k

XML响应:

...
        <name>TEST_2args</name>
        <group></group>
        <project>Rundeck</project>
        <description>Job test </description>
        <options>
          <option name='LOCAL_REPO' value='/tmp/' />
          <option name='FILE_NAME' value='archive.zip' />
        </options>
      </job>
      <description>whoami ('Who am i ?') [... 3 steps]</description>
      <argstring>-LOCAL_REPO /home/rundeck/ -FILE_NAME archive_test.zip</argstring>
    </execution>
  </executions>

我不想使用默认值,而是使用我在参数中传递的选项。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

仅作记录的答案:您可以通过以下方式启动它(如果有人需要,我会添加节点过滤器):

#!/bin/sh

# protocol
protocol="http"
format="json"

# basic rundeck info
rdeck_host="yournode"
rdeck_port="4440"
rdeck_api="36"
rdeck_token="0jEkMXbPBUzx984HeM3RUDQSXg4yJzyT"

# specific api call info
rdeck_job="0745efe5-17c2-44cd-bb59-26706331ea2f"
rdeck_filter="node01"
option_value="YOUR_VALUE"

# api call
curl --location --request POST "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/job/$rdeck_job/run" \
  --header "Accept: application/$format" \
  --header "X-Rundeck-Auth-Token: $rdeck_token" \
  --header "Content-Type: application/$format" \
  --data "{ \"argString\":\"-opt1 $option_value \", \"filter\":\"$rdeck_filter\" }"