前提
uraura@rosemary$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.1
BuildVersion: 16B2555
uraura@rosemary$ docker version
Client:
Version: 1.13.0-rc2
API version: 1.25
Go version: go1.7.3
Git commit: 1f9b3ef
Built: Wed Nov 23 17:40:58 2016
OS/Arch: darwin/amd64
Server:
Version: 1.13.0-rc2
API version: 1.25
Minimum API version: 1.12
Go version: go1.7.3
Git commit: 1f9b3ef
Built: Wed Nov 23 17:40:58 2016
OS/Arch: linux/amd64
Experimental: true
概要
- Ansibleを使ってMacのセットアップをしたかった
- Ansibleをどうやって入れるのよ?
- pythonの依存モジュールがいくつか必要だけどシステムのPythonにインストールするのはちょっと...
- pythonセットアップ...?
と,なんか堂々巡りになってしまったのでdockerコンテナからできればいいなと思いました.
やったこと
dockerイメージの作成
Dockerfile
FROM python:alpine
RUN set -x \
&& apk add --no-cache gcc libffi-dev musl-dev openssl-dev openssh \
&& pip install ansible
ENTRYPOINT [ "ansible" ]
CMD [ "--version" ]
uraura@rosemary$ docker build -t ansible .
:
中略
:
Successfully built 690d16250387
セットアップ
- System Preferences > Sharing > Remote Login をONにすると勝手にMacOSのsshdが起動します
-
ssh-keygen
とかで適当な鍵を作り,public keyをauthorized_keysに書きこんでおく
uraura@rosemary$ docker run --rm -it -v $HOME/.ssh:/ssh ansible all -i $(ipconfig getifaddr en0), -u $USER --private-key /ssh/id_ed25519 --ssh-extra-args='-o StrictHostKeyChecking=no' -m ping
10.0.1.105 | SUCCESS => {
"changed": false,
"ping": "pong"
}
まとめ
- dockerべんり
- dockerコンテナからホストへsshする
- ホストディレクトリをマウントして鍵を使わせればいいのでイメージにうめこんだりしなくていい
これでホストのpythonを汚さずにansibleでごにょることが可能になりました.