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