サーバーとしてインストールした Ubuntu だと add-apt-repository コマンドが入っている python-software-properties パッケージが入っていなくて ppa の追加に困ることがありますが、 ansible を使えばサーバー自体に余計なパッケージを入れなくても ppa の apt 設定を追加できました。

動作確認バージョン

  • クライアント側 ansible 1.6.1
  • サーバー側 Ubuntu 12.04

ansible コマンド直接

apt_repository モジュールの引数の repoppa を指定するだけです。

ansible all -s -K -i ./inventory_hosts -m apt_repository -a "repo='ppa:chris-lea/node.js'"

playbook.yml に書く

- apt_repository: repo='ppa:chris-lea/node.js' のように書くだけです。 普通にインストールすればサーバーでも入っていると思うのですが、 python-apt に依存しているので、 - apt: pkg=python-apt も書いておくと良いかもしれません。

nodejs-ppa.yml が実際の使用例です。

nodejs-ppa.yml:

---
- apt: pkg=python-apt
- apt_repository: repo='ppa:chris-lea/node.js'
  when: ansible_distribution_release == "precise"

Debian の場合や ubuntu 14.04 の場合は除外しても良いかと思って、 ubuntu 12.04 の時だけ実行するために when: ansible_distribution_release == "precise" で実行する環境を制限しています。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published