当前位置: 首页 > 知识库问答 >
问题:

在Jenkins容器中运行ansible-playbook

左丘昕
2023-03-14

如果我的问题不清楚,请让我知道。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"]

共有1个答案

益何平
2023-03-14

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

在您的docker文件中,您正在执行ansible-playbook命令,这将错误输出,说明error!您必须指定要运行的剧本文件以及帮助选项。

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

ansible-playbook -i <inventory_file> <playbook_name> 
 类似资料:
  • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

  • 问题内容: 我要完成的工作是在已经使用Ansible在Digital Ocean Ubuntu / Docker Droplet上创建的Docker容器内运行命令。 似乎找不到任何东西,或者我主要是缺少一些东西。这是我在剧本中完成的任务。我对Ansible非常陌生,因此任何建议或智慧都将不胜感激。 问题答案: 您应该能够使用以下命令执行脚本(包含命令序列): 应该可以通过Ansible流程访问。

  • 我不能和docker一起经营jenkins的形象。它在运行时卡住: afik@ubuntu:~$docker run——名称myjenkins-p8080:8080-p50000:50000-v/var/jenkins_home jenkins

  • 我在用“docker外面的docker”和jenkins运行一个容器。我的docker是: 所以所有从“jenkins容器”启动的容器都在主机中运行。 但是,当我试图在需要卷的作业中运行“jenkins容器”中的docker compose时,它采用的是来自主机的路径,而不是jenkins的路径。我是说,当我和docker合作时 它安装在主机的/var/jenkins_home/workspace

  • 我找到了很多关于如何在中运行的博客,但没有一个真正解释这样做的好处。 1)我希望服务器的大部分配置都在版本控制之下。 2)当我尝试新功能或配置时,我希望能够在我的计算机上本地运行构建服务器 3)我希望能够轻松地在一个新的环境中建立一个构建服务器(例如。在本地服务器上,或在云环境(如AWS)中)

  • 问题内容: 我在Docker容器中安装了Jenkins,但它不会自动运行。我必须运行/etc/init.d/jenkins start。然后一切都变得顺畅而美好。我遵循的所有教程都说,安装后应默认运行,但不是。 有什么想法吗? 问题答案: 如果你喜欢在各种詹金斯图像的Dockerfile(如官方一个),你会发现为什么詹金斯“自动运行”: ( 是用于采用僵尸进程的脚本,这是我之前在“ [ ”中介绍的