【发布时间】:2020-11-27 12:05:40
【问题描述】:
我正在尝试在 Docker 容器中设置 Rundeck。我想使用 Rundeck 来配置和管理我的 Docker 舰队。我发现了一个带有 ansible-plugin 的图像。到目前为止,运行简单的剧本和自动发现我的 Pi 节点都可以工作。
Docker 脚本:
echo "[INFO] prepare rundeck-home directory"
mkdir ../../target/work/home
mkdir ../../target/work/home/rundeck
mkdir ../../target/work/home/rundeck/data
echo -e "[INFO] copy host inventory to rundeck-home"
cp resources/inventory/hosts.ini ../../target/work/home/rundeck/data/inventory.ini
echo -e "[INFO] pull image"
docker pull batix/rundeck-ansible
echo -e "[INFO] start rundeck container"
docker run -d \
--name rundeck-raspi \
-p 4440:4440 \
-v "/home/sebastian/work/workspace/workspace-github/raspi/target/work/home/rundeck/data:/home/rundeck/data" \
batix/rundeck-ansible
现在我想为容器提供剧本,这些剧本应该成为在 Rundeck 中运行的作业。谁能给我一个提示,告诉我如何从外部创建 Rundeck 作业(应该调用 ansible 剧本)?通过api?
我能想到的一种方法是手动创建一次作业并将它们导出为 XML 或 YAML。当容器和 Rundeck 启动并运行时,我可以自动导入作业。 rundeck-home 中是否有某个文件夹或我可以放置这些文件以进行自动导入的某个文件夹?还是有 API 调用什么的?
Jenkins 是否比 Rundeck 更适合这项任务?
编辑:刚刚更改为 Dockerfile
FROM batix/rundeck-ansible:latest
COPY resources/inventory/hosts.ini /home/rundeck/data/inventory.ini
COPY resources/realms.properties /home/rundeck/etc/realms.properties
COPY resources/tokens.properties /home/rundeck/etc/tokens.properties
# import jobs
ENV RD_URL="http://localhost:4440"
ENV RD_TOKEN="yJhbGciOiJIUzI1NiIs"
ENV rd_api="36"
ENV rd_project="Test-Project"
ENV rd_job_path="/home/rundeck/data/jobs"
ENV rd_job_file="Ping_Nodes.yaml"
# copy job definitions and script
COPY resources/jobs-definitions/Ping_Nodes.yaml /home/rundeck/data/jobs/Ping_Nodes.yaml
RUN curl -kSsv --header "X-Rundeck-Auth-Token:$RD_TOKEN" \
-F yamlBatch=@"$rd_job_path/$rd_job_file" "$RD_URL/api/$rd_api/project/$rd_project/jobs/import?fileformat=yaml&dupeOption=update"
你知道我可以如何将 curl 延迟到 rundeck 服务启动并运行之后吗?
【问题讨论】: