Help us understand the problem. What is going on with this article?

Ansibleの事例とちょっとしたTips

More than 5 years have passed since last update.

2013/11/30時点でAnsibleについて書いてくれる方が8名(私除く)もいて嬉しいです!
まだまだ枠には余裕がありますので、できれば2回書いてください(笑)
Ansibleを使っているけど、また登録してない!という方の参加もお待ちしています。
ちなみに、Qiita以外(はてなブログなど)に書くなどでもOKです。
カレンダーへの記事登録時にコメント欄にブログのURLを書けばリンクされるようです。

技術的なTipsを書こうかと思ったのですが、1日目なのでかるーいお話です。

Ansibleってどんなところで使われているの?

Ansibleのユーザカンファレンスで国外での事例が紹介されています。
基本的には自社向けにライブラリを自製しているところが多いようです。
ライブラリの作りやすさというのも良さの1つだと思います。

海外事例 Ansible Fest - Ansible User Conference

2013/10/22にサンフランシスコ(RackSpace社オフィス)で行われました。
RackSpace,Google,Redhat,Arista,Kiip,MapRの方が講演しています。
海外ではこんなところで使われているようです。

AnsibleFestの資料のリンクがMLにあったので、転載します。
Jesse Keating, Rackspace -- ansible -- turbo
http://prezi.com/tyasc3-vj_id/ansible-turbo/
Eric Johnson, Google - ansible and GCE
https://speakerdeck.com/erjohnso/ansible-with-google
Adam Miller, Red Hat - deploying OpenShift Origin with Ansible
https://speakerdeck.com/maxamillion/deploying-openshift-origin-with-ansible
Peter Sprygada, Arista - Ansible and EOS
https://speakerdeck.com/privateip/automation-from-the-inside-out-with-ansible-and-eos
Robby Colvin, Kiip - MIgrating from Another Configuration Management System
https://speakerdeck.com/geetarista/migrating-from-another-configuration-management-system

(Redhat+RackSpaceと言えばOpenstackが思い浮かびますが、Openstackの簡易インストーラーであるRDOはpuppetを使っていました。Ansibleに切り替わったりしませんかね。。)

国内事例

国内だとBacklogやCacooで有名なヌーラボさんで既に運用しているようです。
ヌーラボさんでの事例はこちらにあります。


Ansibleで困ったときにはどうすればいいの?

メーリングリスト

Ansibleのメーリングリストは3つ(ユーザ用・開発用・広報用)あります。
もともとユーザ用の1つあり、2013年9月頃に2つ(開発用・広報用)が追加されています。
ちなみに全部英語です。

  • ユーザ用ML ansible-project
    最も活発なMLです。
    2013/11/30(JST)までの時点で2525 件のスレッドが有ります。
    最初の投稿が2012/02/25で、およそ1日に4件ほど新規投稿されています。
    ただ、直近の3ヶ月以内では600件の新規投稿があったので、徐々に活発になってきているようです。

  • 開発用ML ansible-devel
    開発用のMLです。
    2013/11/30までの時点で39 件のスレッドが有ります。
    最初の投稿が2013/09/14で、およそ2日に1回に投稿されています。

  • 広報用ML ansible-announce
    広報用のMLです。Read−Onlyで、ぶっちゃけ、意味はないような気がしますが、AnsibleWorks CTOのMichael DeHaanさんご本人が書いています。
    2013/11/30までの時点で7 件のスレッドが有ります。
    最初の投稿が2013/09/13で、およそ10日に1回に投稿されています。

Twitter

#ansibleで呟くと誰か助けれくれるかもしれません。

Ansibleの人気ってどうなの?

Google Trend

ユーザ用MLの盛り上がりとともに、人気度が上がっています。

http://www.google.co.jp/trends/explore?q=ansible#q=ansible&date=today%2012-m&cmpt=q

chef, puppet, fabricとかと比較して見たかったのですが、他の用語と混じってうまく行きませんでしたorz


Tips

さて、ここからはAdventCalendarらしく技術的なTipsです。
MLで見かけたTipsを少しだけやってみました。
Mac(OS X 10.7.5)に次のバージョンのAnsibleをインストールしています。
インストールターゲットはCentOS 6.4です。

$ ansible-playbook --version
ansible-playbook 1.4.1 (1.4.1 7bf799af65) last updated 2013/11/30 14:23:28 (GMT +900)

Reboot

AnsibleのTask内で再起動させたい時のTipsです。(どうもPyfesでの@r_rudiさんのスライドと、重複してしまったようですorz)
URL:https://groups.google.com/forum/#!msg/ansible-project/9KVUY8yBKww/FHnX6FUvrH8J

wait_forモジュールを使用することで、Ansibleの実行を待機させることが出来ます。

次はSElinuxをpermissiveに変更、再起動してSELinuxの設定を確認するサンプルです。

---
- name: Install libselinux-python
  yum: name=libselinux-python state=present

- name: Check status of selinux
  shell: getenforce

- name: Permissive selinux
  selinux: policy=targeted state=permissive

- name: reboot after change selinux
  shell: sleep 2s && /sbin/reboot &

- name: wait for the server to go down (reboot)
  local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped

- name: wait for the server to come up
  local_action: wait_for host={{ inventory_hostname }} port=22 delay=30

- name: Check status of selinux
  shell: getenforce

wait_forのdelay=30で30秒間待機するように指定しています。

action文の分割

actionを複数行で書きたい時のTipsです。
URL:https://groups.google.com/forum/#!searchin/ansible-project/yum/ansible-project/07MZw5Qd9zs/2PS7JjepqW4J

ML上で推奨されていた2つやり方を紹介します。
(サンプル中の(1)~(4)はML上での採番に合わせています。)

まずは普通の書き方です。

- name: Normal Template epel.repo
  template: src=epel.repo dest=/etc/yum.repos.d/epel.repo mode=0644

複数行での書き方その1( : でkey-valueをつなぐ)

- name: MultiLine(1) Template epel.repo
  template: 
    src: epel.repo
    dest: /etc/yum.repos.d/epel.repo
    mode: 0644

複数行での書き方その2( = でkey-valueをつなぐ)

- name: MultiLine(3) Template epel.repo
  template: 
    src=epel.repo
    dest=/etc/yum.repos.d/epel.repo
    mode=0644

なお、actionは省略できるので、次のようにactionでモジュールを指定するやり方は推奨していないようです。

- name: MultiLine(4) Template epel.repo
  action: template
    src=epel.repo
    dest=/etc/yum.repos.d/epel.repo
    mode=0644

明日(2日目)はmyaaaaa_chanさんです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした