![](/img/trans.png)
[英]How can I run ansible-playbook on docker container to execute commands on an AWS EC2 Ubuntu instance?
[英]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.