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

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

メールサーバでは、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)

行った!

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
ユーザーは見つかりませんでした