
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
isortdevcontainerでは、Docker Composeで先ほど作ったDockerfileから作成されたイメージを起動します。以下が、docker-compose.ymlです。
やってることの概要は以下です。
build: . 先ほど作成したDockerfileからイメージを作成します。/var/run/docker.sock:/var/run/docker.sockDocker 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