🎧
Ansibleを使ってPython仮想環境を構築する(bluepy)
関連キーワードで検索すると、Python仮想環境上へAnsibleをインストールする記事はよく出てくるのですが、逆(?)のAnsibleを使ってPython仮想環境を構築する記事があまりなかったので書きました。
やりたいこと
仮想サーバ上でBlutoothデバイスを触りたかったので、仮想環境上へpipコマンドでbluepyをインストールします。グローバルにbluepyをインストールしようとすると、PEP668エラーで怒られてしまうので、Python仮想環境を作成しました。AnsibleのPlaybookを使って、仮想サーバ上へPython仮想環境を構築します。これにより、仮想サーバを壊しても簡単に環境を復元できます。
前提環境
- Debian 12.8
- Ansible Core 2.14.18
- Python 3.11.2
- ターゲットサーバの/home/user/venvにPython仮想環境を作成
Ansible Playbook
早速ですがPlaybookの中身です。Ansibleを触るのは初めてなので、イケてない書き方があったらご容赦ください。。。
# Targets section
- name: Play-set-blupy-env
hosts: targets #targetsは別ファイルで指定しています
become: yes
gather_facts: yes
# Tasks section
tasks:
- name: install package from apt
ansible.builtin.apt:
name:
- libglib2.0-dev
- python3
- python3-pip
- python3-venv
- bluez
state: present
when: ansible_distribution == 'Debian'
- name: Create venv dir
ansible.builtin.file:
path: /home/user
state: directory
mode: 0755
- name: Create venv
command:
cmd: python3 -m venv /home/user/venv
- name: activate VENV pip
ansible.builtin.pip:
name: pip
virtualenv: /home/user/venv
- set_fact:
# ターゲットサーバ上で使用するPython実行ファイルとしてPython仮想環境の実行ファイルを登録
ansible_python_interpreter: /home/user/venv/bin/python3.11
- name: install python packages from pip
ansible.builtin.pip:
name:
- bluepy
state: present
Discussion