AnsibleのLXDコネクションプラグインを試してみた
LXDを使うとなるとAnsibleのLXDコネクションプラグインが欲しいなと思ってansible/ansibleのgithubのレポジトリを眺めていたら lib/ansible/plugins/connection/lxd.py に既に作られていることに気付きました。
ソースを見ると lxc
コマンドを使った実装になっていました。aptでインストールしたansible 2.0.0.2にこのファイルだけ追加して使えないか試してみたのですが、 AttributeError: 'PlayContext' object has no attribute 'executable'
というエラーが出て使えませんでした。
そこでvirtualenvで環境を作ってpipでgithubのmasterのansibleをインストールして試してみました。
インストール手順
インストール手順は以下の通りです。 まず、virtualenv環境でAnsibleをインストールするのに必要なパッケージをインストールします。
sudo apt update
sudo apt install -y virtualenv build-essential python-dev libffi-dev libssl-dev
作業ディレクトリを作ってそこに移動し、virtualenvで環境を作ってansibleをインストールします。
mkdir ~/ansible-lxd-example
cd ~/ansible-lxd-example
virtualenv venv
. venv/bin/activate
pip install git+https://github.com/ansible/ansible
使ってみる
以下のような設定ファイルとテスト用のプレイブックを作りました。
$ cat ansible.cfg
[defaults]
inventory = hosts
$ cat hosts
[containers]
cent01 ansible_connection=lxd
cent02 ansible_connection=lxd
$ cat test.yml
---
- hosts: containers
remote_user: root
tasks:
- debug: msg=ipv4_address={{ ansible_default_ipv4.address }}
実行してみると、問題なく動作しました。
$ ansible-playbook test.yml
PLAY [containers] **************************************************************
TASK [setup] *******************************************************************
ok: [cent01]
ok: [cent02]
TASK [debug] *******************************************************************
ok: [cent01] => {
"msg": "ipv4_address=10.155.92.101"
}
ok: [cent02] => {
"msg": "ipv4_address=10.155.92.103"
}
PLAY RECAP *********************************************************************
cent01 : ok=2 changed=0 unreachable=0 failed=0
cent02 : ok=2 changed=0 unreachable=0 failed=0