2023.03.05
devcontainerでAnsibleの開発環境を作成したいと思います。
以下のものが利用可能な開発環境を作成していきます。
開発環境用のDockerイメージを作成していきます。以下がDockerfileです。
やっていることの概要は以下です。
FROM python:3.9
COPY ./requirements.txt /tmp/
RUN pip3 install --no-cache-dir -r /tmp/requirements.txt && \
apt-get -y update && \
apt-get -y install \
ca-certificates \
curl \
gnupg \
lsb-release && \
mkdir -m 0755 -p /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get -y update && \
apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
apt-get -y install rsync
ENV ANSIBLE_PIPELINE=True \
ANSIBLE_SSH_ARGS="-o ControlMaster=auto -o ControlPersist=30m -o ConnectionAttempts=100 -o UseKnownHostsFile=/dev/null" \
ANSIBLE_FORKS=20 \
ANSIBLE_HOST_KEY_CHECKING=False \
ANSIBLE_GATHERING="smart" \
ANSIBLE_CACHE_PLUGIN="jsonfile" \
ANSIBLE_CACHE_PLUGIN_CONNECTION="/tmp" \
ANSIBLE_CACHE_PLUGIN_TIMEOUT=86400
WORKDIR /root/workstation
以下がrequirements.txtです。
ansible==7.3.0
ansible-lint==6.13.0
molecule[docker]==4.0.4
pytest-testinfra==7.0.0
flake8
black
isort
devcontainerでは、Docker Composeで先ほど作ったDockerfileから作成されたイメージを起動します。以下が、docker-compose.ymlです。
やってることの概要は以下です。
build: .
先ほど作成したDockerfileからイメージを作成します。/var/run/docker.sock:/var/run/docker.sock
Docker outside of Dockerの設定です。---
version: "3"
services:
ansible:
build: .
command: /bin/bash
volumes:
- ../:/root/workstation
- /var/run/docker.sock:/var/run/docker.sock
tty: true
以下がdevcontainer.jsonです。
{
"name": "dev-container",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "ansible",
"workspaceFolder": "/root/workstation",
"customizations": {
"vscode": {
"extensions": [
"redhat.ansible",
"ms-python.python"
],
"settings": {
"python.formatting.provider": "black",
"[python]": {
"editor.defaultFormatter": null,
"editor.formatOnSave": false
},
"files.associations": {
"*.yml": "ansible",
"docker-compose*.yml": "dockercompose"
}
}
}
},
"shutdownAction": "stopCompose"
}
開発フォルダのルートに、以下の階層で作成したファイルを配置します。
.
└── .devcontainer
├── Dockerfile
├── devcontainer.json
├── docker-compose.yml
└── requirements.txt
以上で完了です。
あとは、devcontainerを起動すると、いい感じに開発できます。
© 2023 Wenpe