日: 2018年8月28日

  • Ansibleで特定サーバのみ振る舞いを変える

    Ansibleで特定サーバのみ振る舞いを変える

    はじめに

    Ansibleで構成管理をしていると、ある全台ではなくある特定のサーバだけ設定を変えたい時がある。WEBサーバ全体ではなく、その中の1台のみ実施したいという時だ。Ansibleのtipsを紹介。

    Ansibleで特定サーバのみ振る舞いを変える

    例えばcronをコメントアウトすることを例にする。

    1. Ansibleのinventoriesのhostsファイルを変更
      以下の通り
      [web]
      web01 ansible_host=192.168.10.10 ansible_ssh_private_key_file=~/.ssh/key
      web02 ansible_host=192.168.10.11 ansible_ssh_private_key_file=~/.ssh/key
      
      
    2. ansible-playlistを編集し、サーバ名を取得する。
      - name: check Hostname
      hostname:
      name: '{{ inventory_hostname }}'
      tags: edit_cron

      inventoriesでいうところのweb01やweb02がこれに該当する

    3. replaceを使う
      特定サーバの場合振る舞いを変える
      web02だけあるcronを変えたい場合
      - name: comment out for 02
      replace:
      path: /var/spool/cron/cronuser
      regexp: '^\* \* \* \* \* echo hello'
      replace: '#* * * * * echo hello'
      when: inventory_hostname is search("02")
      tags: edit_cron

      を定義することにより、02のecho helloだけコメントアウトされる