首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jenkins容器中运行ansible-playbook

在Jenkins容器中运行ansible-playbook
EN

Stack Overflow用户
提问于 2020-02-22 05:26:04
回答 1查看 1.3K关注 0票数 0

问:有没有可能在Jenkins容器中有一个docker-compose文件来运行ansible-playbook?

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

我已经发布了docker ps -adocker-composeansible-playbook的posted文件的输出

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

代码语言:javascript
复制
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:
代码语言:javascript
复制
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"]
EN

回答 1

Stack Overflow用户

发布于 2020-02-22 18:41:40

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

在您的docker文件中,您正在执行ansible-playbook命令,这将错误地声明ERROR! You must specify a playbook file to run以及帮助选项。

如果你想执行ansible playbook,你必须传递更多的参数

一个成功的剧本执行过程是这样的。

代码语言:javascript
复制
ansible-playbook -i <inventory_file> <playbook_name> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60346402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档