vme*_*zes 3 ubuntu systemd docker
我知道在 Docker 容器上不推荐 Systemd,但有可能吗?
我在使用 Ansible 部署的 Ubuntu 18.04 云虚拟机上有临时/生产环境;
我当前的开发环境是 Ubuntu 18.04 Vagrantfile,它使用与playbook.ymlstaging/prod相同的 Ansible
现在我正在尝试Vagrantfile用Dockerfilefor development替换 ,但是playbook.yml在应用 systemd 模块时Ansible失败。我也想systemd在我的开发环境中使用,以便我可以在playbook.yml本地测试更改。知道我该怎么做吗?
如果我尝试使用Dockerfile和playbook.yml如下构建,则会出现错误Failed to find required executable systemctl in paths。
如果我添加RUN apt-get install systemd到并Dockerfile尝试构建,我会收到一个错误System has not been booted with systemd as init system
样品Dockerfile:
FROM ubuntu:18.04
ADD . /app
WORKDIR /app
# Install Python3 pip used to install Ansible
RUN apt-get update && apt-get install -y \
python3-pip \
# Install Ansible
RUN pip3 install --trusted-host pypi.python.org ansible
RUN ansible-playbook playbook.yml -i inventory
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
样品playbook.yml:
---
- name: Ansible playbook to setup dev environment
hosts: all
vars:
ansible_python_interpreter: "/usr/bin/python3"
debug: True
become: yes
become_method: sudo
tasks:
- name: Copy App Gunicorn systemd config
template:
src: app_gunicorn.service
dest: /etc/systemd/system/
- name: Enable App Gunicorn on systemd
systemd: state=started name=app_gunicorn
Run Code Online (Sandbox Code Playgroud)
样品inventory:
docker-dev ansible_host=localhost ansible_connection=local
Run Code Online (Sandbox Code Playgroud)
这是应该使用docker-systemctl-replacement脚本的完美示例。
它的开发允许 ansible 脚本同时针对虚拟机和 docker 容器。您不需要启用真正的 systemd,只需在其他受 systemd 控制的操作系统中覆盖 /usr/bin/systemctl 即可。然后 docker 容器对于 ansible 来说看起来已经足够好了,而我更习惯于使用通用的 'service:' 模块而不是特定的 'systemd:' 模块。
| 归档时间: |
|
| 查看次数: |
9427 次 |
| 最近记录: |