Shishou Engineering Blog

Aim for Full Stack Engineer.

AnsibleでPython3の環境を構築

最近はPython環境を構築する機会が増えてきたので、久々にAnsibleを使ってみました。

 

実行環境は以下の通りです。

Vagrant 1.9.3

ansible 2.3.2.0

 

Ubuntu 16.04のVM上にPython3.6.1とpyenv、pyenv-virtualenvをインストールし、

アプリケーション用のフォルダを作って実行環境を用意する所までを自動化してみました。

 

Playbookは下記レポジトリにアップしてあります。

https://github.com/hiroki8080/Ansible-Playbooks

(最適化とかはされていないです笑)

 

私が使っていたのは数年前で知識が全く更新されていなかったので、

動くまでに下記のような点で苦労しました。

 

1.Vagrantfileの書き方

vagrantにssh接続するための情報とAnsible実行時に使用するPython3のパスを指定

config.vm.provision "ansible" do |ansible|
 ansible.playbook = "playbooks/site.yml"
 ansible.inventory_path = "playbooks/hosts"
 ansible.extra_vars = {
  ansible_ssh_user: 'vagrant',
  ansible_ssh_private_key_file: '~/.vagrant.d/insecure_private_key',
  ansible_python_interpreter: '/usr/bin/python3',
 }
 ansible.limit = 'vagrant'
 end

 

2.sudo指定方法の変更

sudoオプションではなく、becomeオプションを使用

hostsに全部書けば良いのかと思ったら、become_userだけは

各タスクに書く必要がありました。

(まだbecomeオプション自体にバグが有ったり、ネットの情報では

同時に書いても動いたって人がいたりいなかったりで、動くまでに苦労しました・・) 

- hosts: vagrant
remote_user: vagrant
become: true
become_method: sudo

--各タスクの内容
- name: Install pyenv
become_user: vagrant
git: repo=https://github.com/pyenv/pyenv.git dest={{ pyenv_root }}

 

ちなみに対象のVagrant Boxファイルに最新のOpenSSHが入っていないと、

初めてvagrant upした時にprovisioningだけコケてしまうので、

vagrant up後に別途vagrant provisionを実行する必要があります。

 

他にも使えそうなものがあればPlaybooksに追加していこうと思います。

2017-09-09 18:04:46


About
@hiroki8080

京都在住のフリーランスエンジニアです。

ITやIoT, 自作のCMS開発に関することを書いていきます。


主なスキル

Python, Java, C#

AWS, Unity

アプリケーション、フレームワーク、

ライブラリの設計、開発

お仕事のご依頼について

お仕事のご相談・ご依頼などありましたら、

お気軽にお問い合わせください。

e-mail:hiroki-m@gaia.eonet.ne.jp