繁体   English   中英

在 Jenkins 容器中运行 ansible-playbook

[英]Run ansible-playbook in Jenkins container

问题:是否可以使用 docker-compose 文件在 Jenkins 容器中运行 ansible-playbook?

总结:我有一个 Jenkins 容器(containerA),我想运行 ansible-playbook。 但是,由于容器在执行后停止,我不知道如何在docker-compose中定义非运行容器。

我已经发布了 docker docker ps -a的输出,docker docker-compose和 ansible ansible-playbook的 Dockerfile

如果我的问题不清楚,请告诉我。 PG

root@jenkins1:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                                                                   NAMES
c47a4ee06d71        jenkins/jenkins     "/sbin/tini -- /usr/…"   2 months ago        Up 2 months               0.0.0.0:50000->50000/tcp, 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp   jenkins1
956309ae7370        foo/ansible       "ansible-playbook"       2 months ago        Exited (2) 2 months ago                                                                           hopeful_hypatia

cat /opt/docker_jenkins/docker-compose.yml
version: '3.2'
services:
  jenkins:
    restart: always
    image: 'jenkins/jenkins'
    container_name: jenkins1
    ports:
      - '80:8080'
      - '443:8443'
      - '50000:50000'
    volumes:
      - type: volume
        source: jenkins_home
        target: /var/jenkins_home
        volume:
          nocopy: true
      - type: bind
        source: /var/lib/bin
        target: /root/.local/bin

volumes:
  jenkins_home:
FROM alpine:3.7

ENV ANSIBLE_VERSION 2.8.6

ENV BUILD_PACKAGES \
  bash \
  curl \
  tar \
  openssh-client \
  sshpass \
  git \
  python \
  py-boto \
  py-dateutil \
  py-httplib2 \
  py-jinja2 \
  py-paramiko \
  py-pip \
  py-yaml \
  ca-certificates

# If installing ansible@testing
#RUN \
#   echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> #/etc/apk/repositories

RUN set -x && \
    \
    echo "==> Adding build-dependencies..."  && \
    apk --update add --virtual build-dependencies \
      gcc \
      musl-dev \
      libffi-dev \
      openssl-dev \
      python-dev && \
    \
    echo "==> Upgrading apk and system..."  && \
    apk update && apk upgrade && \
    \
    echo "==> Adding Python runtime..."  && \
    apk add --no-cache ${BUILD_PACKAGES} && \
    pip install --upgrade pip && \
    pip install python-keyczar docker-py && \
    \
    echo "==> Installing Ansible..."  && \
    pip install ansible==${ANSIBLE_VERSION} && \
    \
    echo "==> Cleaning up..."  && \
    apk del build-dependencies && \
    rm -rf /var/cache/apk/* && \
    \
    echo "==> Adding hosts for convenience..."  && \
    mkdir -p /etc/ansible /ansible && \
    echo "[local]" >> /etc/ansible/hosts && \
    echo "localhost" >> /etc/ansible/hosts

ENV ANSIBLE_GATHERING smart
ENV ANSIBLE_HOST_KEY_CHECKING false
ENV ANSIBLE_RETRY_FILES_ENABLED false
ENV ANSIBLE_ROLES_PATH /ansible/playbooks/roles
ENV ANSIBLE_SSH_PIPELINING True
ENV PYTHONPATH /ansible/lib
ENV PATH /ansible/bin:$PATH
ENV ANSIBLE_LIBRARY /ansible/library

WORKDIR /ansible/playbooks

ENTRYPOINT ["ansible-playbook"]

只有当有任何进程或服务让该容器运行时,docker 容器才会启动。

在您的 docker 文件中,您正在执行ansible-playbook命令,这将显示ERROR! You must specify a playbook file to run ERROR! You must specify a playbook file to run与帮助选项一起ERROR! You must specify a playbook file to run

如果要执行 ansible playbook,则必须传递更多参数

成功的剧本执行就像这样。

ansible-playbook -i <inventory_file> <playbook_name> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM