LoginSignup
22
22

More than 5 years have passed since last update.

ansible の条件判定でホストグループ別に実行を分けたいとき

Last updated at Posted at 2015-01-08

メールサーバでは、localhost 以外のサーバからの smpt を受付け
アプリケーションサーバでは、自サーバでエラーが起こった時だけログをメールで送信したいとします。

その時に、postfix の設定ファイルを入れ分けたいので ansible でどうやってやるのか調べました。

参考にさせてもらったサイト①
http://d.hatena.ne.jp/akishin999/20130820/1377013914

- name: mailserver setting copy /etc/postfix/main.cf
  copy: src={{ item }} dest=/etc/postfix/ owner=root group=root mode=0644
  with_items:
  - mailserver_setting/main.cf
  when: hosts == “mailservergroup” ×

- name: default setting copy /etc/postfix/main.cf
  copy: src={{ item }} dest=/etc/postfix/ owner=root group=root mode=0644
  with_items:
  - default_setting/main.cf
  when: hosts == “apservergroup” ×

これだと hosts には実行対象のホスト名が入ってくるのでダメです。

今度は、”inventory” というキーワードで調べて見つけたのが inventory_hostname ですが結果は同じ。。。

参考にさせてもらったサイト②
http://ameblo.jp/pioho07/entry-11954301615.html

when: inventory_hostname == “mailservergroup” ×

そっかホスト名しかダメなのか〜と思って

参考にさせてもらったサイト③:
https://groups.google.com/forum/#!topic/ansible-project/lr7nXyGw0UY

 when: inventory_hostname in groups['mailservergroup'] ×

これだと上記のように相対する処理を入れていた時に、該当しない方がエラーとなってしまいました。。。

TASK: [postfix | mailserver setting copy /etc/postfix/main.cf] ****************
ok: [test-mailserver] => (item=mailserver_setting/main.cf)

TASK: [postfix | default setting copy /etc/postfix/main.cf] *******************
fatal: [test-mailserver] => error while evaluating conditional: inventory_hostname in groups['apservergroup']

FATAL: apservergroup hosts have already failed -- aborting

でも、近づいてきた気がする!!!

ここで “inventory_hostname” を忘れて、②のサイトをよくよく見てみると下の方に “グループ分け” って書いてある!!

when: "'mailservergroup' in group_names"

表記はこんな感じです。

- name: mailserver setting copy /etc/postfix/main.cf
  copy: src={{ item }} dest=/etc/postfix/ owner=root group=root mode=0644
  with_items:
  - mailserver_setting/main.cf
  when: “’mailservergroup’ in group_names"

- name: default setting copy /etc/postfix/main.cf
  copy: src={{ item }} dest=/etc/postfix/ owner=root group=root mode=0644
  with_items:
  - default_setting/main.cf
  when: “’appservergroup’ in group_names"

$ansible-playbook mailservergroup のホストゆけー!

TASK: [postfix | mailserver setting copy /etc/postfix/main.cf] ****************
ok: [test-mailserver] => (item=mailserver_setting/main.cf)

TASK: [postfix | default setting copy /etc/postfix/main.cf] *******************
skipping: [test-mailserver] => (item=default_setting/main.cf)

行った!

22
22
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22