在Jenkins容器中运行ansible剧本



问题:有可能让一个docker compose文件在Jenkins容器中运行ansible playbook吗?

摘要:我有一个Jenkins容器(containerA(,我想运行一个可靠的剧本。然而,由于容器在执行后停止,我不知道如何在docker compose中定义一个未运行的容器。

我已经发布了docker ps -a的输出、docker-composeansible-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和帮助选项。

如果你想执行易出错的剧本,你必须传递更多的参数

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

ansible-playbook -i <inventory_file> <playbook_name> 

最新更新