地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

DockerでPython開発環境を爆速で作る

DockerでPythonの開発環境を爆速で作ってみる

$ sudo docker pull python:3.6
3.6: Pulling from library/python
f49cf87b52c1: Pull complete
7b491c575b06: Pull complete
b313b08bab3b: Pull complete
51d6678c3f0e: Pull complete
09f35bd58db2: Pull complete
0f9de702e222: Pull complete
73911d37fcde: Pull complete
99a87e214c92: Pull complete
Digest: sha256:98149ed5f37f48ea3fad26ae6c0042dd2b08228d58edc95ef0fce35f1b3d9e9f
Status: Downloaded newer image for python:3.6

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              3.6                 c1e459c00dc3        6 weeks ago         692MB

イメージは公式のDocker Hubから入手している。 あとはコンテナを起動する。

$ sudo docker run -it --name pytest python:3.6 /bin/bash

コンテナ内に入ってpythonを見てみる

$ python --version
Python 3.6.2

一瞬でpython 3.6の環境が作れた Dokcerって素晴らしい。何だこれ。仕組みについてはいつの日か勉強したいな。 コンテナってなんだろ namespaceだったりcgroupsとか正直ちんぷんかんぷんだ。

ansible-playbook

-k, --ask-pass SSH のパスワードを尋ねる(プロンプトが出る)

-K, --ask-sudo-pass sudo のパスワードを尋ねる(プロンプトが出る)

-C, --check インストールなどの変更は行わないが、条件の確認などは実行する

-c CONNECTION, --connection=CONNECTION local, ssh, paramiko から選択。デフォルトは paramiko。古い OpenSSH で ssh を指定する場合は ANSIBLE_SSH_ARGS="" と環境変数を空で上書きする必要がある

-D, --diff file や template の差分(diff)を表示する。--check と一緒に使うと便利

-e EXTRA_VARS, --extra-vars=EXTRA_VARS 追加の変数を key=value で指定する。playbook に書かれている変数の上書きはされない

-f FORKS, --forks=FORKS 並列実行する数(デフォルトは5)

-h, --help このヘルプメッセージを表示して終了する

-i INVENTORY, --inventory-file=INVENTORY インベントリファイルを指定する(デフォルトは /etc/ansible/hosts)

-l SUBNET, --limit=SUBNET 対象サーバーを指定のものだけに制限する

--list-hosts それぞれの playbook の対象ホスト一覧を表示して終了する。playbook の実行はされない

--list-tasks 各 playbook のタスク一覧を表示して終了する

-M MODULE_PATH, --module-path=MODULE_PATH モジュールファイルのディレクトリを指定する(デフォルトは /usr/share/ansible)

--private-key=PRIVATE_KEY_FILE SSH の秘密鍵ファイルを指定する

--start-at-task=START_AT 指定の task から開始する

--step ひとつの task ごとに "Perform task: タスク名 (y/n/c):" と確認される。y: (yes) 実行する、n: (no) 実行しない、c: (continue) 以降を確認なしで実行する

-s, --sudo 対象サーバーでの task を sudo で実行する

-U SUDO_USER, --sudo-user=SUDO_USER sudo での実行ユーザーを指定する(デフォルトは root)

--syntax-check playbook の文法チェックだけを行う

-t TAGS, --tags=TAGS 指定の tag が付けられた task のみを実行する

-T TIMEOUT, --timeout=TIMEOUT SSH のタイムアウトを指定する(デフォルトは10秒)

-u REMOTE_USER, --user=REMOTE_USER SSH で接続するユーザー名を指定する

-v, --verbose 冗長モード (-vvv でより冗長な出力になる)

--version バージョンを表示して終了する