koh’s blog

Sys Admin who loves automation

Python実行環境構築メモ[Vagrant+Ansible+vscode]

※自分用メモ

AtCoder用のPython実行環境を作る + サンプルのテストの自動化する。
ローカルにpyenvで古いpythonインストールが楽なんだけどイマイチちゃんと動かなかった。

要件

  • AtCoderPythonにバージョンを合わせた実行環境を構築
  • ローカルのmacosには古いpythonはインストールしない (3.4.3)
  • Visual Studio Codeを使えるようにする
  • 各問題のサンプルはコマンド一発でテストできるようにする

手順

vagrantVM作成

Vagrantファイル抜粋

  config.vm.define "vag2" do |node|
    node.vm.box = "generic/ubuntu1804"
    node.vm.hostname = "Vag2"
    node.vm.network :private_network, ip: "192.168.33.12"
    node.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
      vb.customize ["modifyvm", :id, "--cpus", "1"]
      vb.customize ["modifyvm", :id, "--ioapic", "on"]
    end
    node.vm.synced_folder "./syncdir", "/vagrant",
      create: true, owner: "vagrant", group: "vagrant"
    node.vbguest.auto_update = false
  end

メモ

  • boxは generic/ubuntu1804bento/centos-7.7で確認済み
  • vagrant sshではなくターミナルからsshコマンドで接続する
  • ディレクトリ同期する(local:./syncdir to vm:/vagrant)

pythonインストール

Ansible実行。pyenvでpythonとライブラリをインストール

github.com

sample問題取得

下記ツールをローカルで使用する。超便利。

github.com

同期しているディレクトリをworkspaceにして実行

atcoder-tools gen abc148 --lang python --workspace ~/vag_test/syncdir/atcoder

テスト用シェルもコピーしておく

cp -p /path/to/atcoder-python-role/test.sh ~/vag_test/syncdir/atcoder/.

vscodeVagrantVMに接続

marketplace.visualstudio.com

上記extensionを使用

  1. f1を押して、Remote-SSH: Open SSH Host...を選択、VMSSH

  2. SSH先にてpythonのextensionをインストール

  3. /vagrant/atcoderをOpen

コード書いてテスト

  1. 各問題のディレクトリのmain.pyにコードを記載 (Ex: /vagrant/atcoder/abc148/A/main.py)
  2. テストシェル実行 cd /vagrant/atcoder/ && ./test.sh abc148 A

まとめ

職業柄環境構築や自動化のほうが捗る(過去問解け)