Skip to content

Instantly share code, notes, and snippets.

@onigra
Last active August 29, 2015 14:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save onigra/1fd3b6e744bc23071bf3 to your computer and use it in GitHub Desktop.
Save onigra/1fd3b6e744bc23071bf3 to your computer and use it in GitHub Desktop.
ansible雑感

Ansible使ってみた雑感

まずはアンケート

  • 構成管理ツール何使ってますか?
    • chef: 10人ちょいぐらい?
    • ansible: 3-4人
    • puppet: 0人
    • itamae: 4-5人
    • shell script: 4-5人

以前Chef使ってたけど、Ansibleに乗り換えた

  • 久しぶりにサーバ構築業することになり、Itamae使おうとしたけどchefのDSL完全に忘れていて、じゃあ初めからやるならとansible使い始めた
    • あとその時chefよりもansibleがイケてるみたいな流れがあった気がする
    • chefが嫌いになったからじゃないです

Ansibleとは?

Python製のサーバ構成管理ツール

  • 同様のものにchef、puppet、itamae

Chefとの違い

学習コストが低い?

  • Chefに比べて学習コストが低く、敷居が低い(と、世間一般で言われてる気がする)
  • 実際自分もそれを真に受けてはじめた

実際は

  • yamlの書き方覚えるのとChefのDSL覚えるのと学習コストの差は無い気がする
  • 個人の感想です

一方で

  • 人に教える時のコストは低いと感じる(個人の感想です)
  • 極端な言い方をすれば、linuxコマンドが分かるならyamlの内容がなんとなく読めるのでは
  • 個人の感想です

雑感

Ansible Vault便利

  • ファイルを暗号化できるコマンド
  • ansibleインストールすると一緒に入る
  • 環境変数に入れる値を暗号化してcommitしている
    • 調べたらchef-vaultってのもあるみたい
  • Vaultも出ましたね

複雑なことはできない

  • 条件分岐やループもできるけど、結構辛い
    • yamlは表現力に限界があるので、複雑なことをしたければmoduleを好きな言語で書いてね、というスタンス
    • ansibleでmoduleを作ってみる
  • playbook(recipe)内で複雑なことやりたいのであればchefがいいと思う
  • あんまり複雑になりすぎないようにしておける方が個人的には好み

playbookの構成が悩む

ansible-extraのmoduleを使うときは注意

  • ドキュメントがパッと見core moduleと区別がつきにくいと感じた
    • alternatives
    • This is an Extras Moduleのくだりはページの上に移動してもいいんじゃないかなと思った
  • 前に一回使ってハマった
  • 使ってみてちゃんと動かなかったらおとなしくshellcommand moduleでやるのがいいと思う

Dynamic Inventoryスクリプト便利

  • AWS等、動的にIPアドレスが変わるIaaSで使う場合は必須
    • GCEのはバグってたのでプルリク出した

プルリクとissueの消化が追いついてなさそうだけど大丈夫かな...

  • issues: 500, Pull requests: 372
    • 前述のプルリクも2ヶ月ほど残ってる
  • v2.0に向けて今頑張ってるみたい

Ansible以外の構成管理ツールを使ってる人は

  • 乗り換える必要は無いと思います
    • 今使い慣れてるものを捨てるほどの優位性は無いと思うよ、という意味です
  • 僕はansible気に入ってますし、今の所機能面での不満は無いので使います

packerと組み合わせて

  • packerから使う場合はami作成のために立てたインスタンスでlocal実行しかできない
    • エージェントレスの意味ないじゃん...
    • local実行のためにinstallしてプロビジョニングが終わったらuninstallすればいいかな
    • 試す
@shirou
Copy link

shirou commented May 20, 2015

複雑なことはできない

YAMLでは所詮表現力に限界があるので、複雑なことをしたいのであればモジュールを自分で書いて下さい、というスタンスです。
そのために、モジュールは自分が得意な言語で書けるようになっています。

@onigra
Copy link
Author

onigra commented May 20, 2015

@shirou ありがとうございます。そうですね、その旨追記します。

@shirou
Copy link

shirou commented May 20, 2015

あと、すいません。

ドキュメントがパッと見core moduleと区別がつかない

ですが、 きちんと This is an Extras Module と書かれているので、区別がつかないということはないかと思います。モジュール一覧 (http://docs.ansible.com/list_of_all_modules.html) でも (E) と書かれていますし…

@onigra
Copy link
Author

onigra commented May 20, 2015

@shirou 確かに、パッと見区別がつきにくいというのは主観なので、表現を改めました。
ブログにも書いたんですが、This is an Extras Moduleのくだりはページの上部に移動してもいいんじゃないかなと個人的には思ってます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment