読者です 読者をやめる 読者になる 読者になる

cloverrose's blog

Python, Machine learning, Emacs, CI/CD, Webアプリなど

Ansibleをローカルで使ってみた

Ansible Python

Ansibleを選ぶまでに調べたこととAnsibleをローカルで動かす方法でつまづいたのでメモしておきます。

構成管理ツール選び

サーバー環境をきちんと管理したくなったのでいろいろ調べてみました。

Rubyではchefが有名です。

Pythonで調べるとAnsibleかSaltがヒットしました(Google トレンド)。

ChefやAnsible、Saltは何回実行しても同じ結果になる冪等性を保証しているツールです。
一方そうでないツール(主な用途がデプロイ用)っていうのもあってPythonだとFabricというのがありました。
今日からすぐに使えるデプロイ・システム管理ツール Fabric 入門 - 科学と非科学の迷宮
Chefに挫折したあなたへ。Fabricのすすめ
このFabricに冪等性を保証するような拡張を加えたものもあります(名前失念cuisine)。


最終的にAnsible(AnsibleWorks | Radically simple IT orchestration)を使うことにしました。

ローカルで動かす

実際に使おうとするとどうもVagrantと併用するパターンが主流で、ローカルで動かすサンプルが見つからず困っていた時に助言を頂きました。



調べると公式にもちゃんとありました(Advanced Playbooks | AnsibleWorks)
次のようにしてローカルでとりあえず試すことに成功しました。

まずはplaybool.ymlの内容ですが、安心のためvirtualenv環境のpipにインストールするようなものにしました。

---
- hosts: 127.0.0.1
  user: rose
  tasks:
  - name: Pip install some packages
    pip: name=$item
    with_items:
      - pep8
      - pytest

次に環境変数ANSIBLE_HOSTSを設定します

echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_HOSTS=~/ansible_hosts

最後にローカルでAnsibleを実行します

ansible-playbook playbook.yml --connection=local