地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

ansibleのテストで使えるモジュール

wait_for

wait_for – Waits for a condition before continuing — Ansible Documentation

タスクを適度に待たせて適切なタイミングで実行させるモジュール。

サービスを起動させた直後にポートチェックや、ログファイルの出力がきちんとされているか遅延実行させたい場合に使える。

- name: Waits for port 8000 of any IP to close active connections, don't start checking for 10 seconds
  wait_for:
    host: 0.0.0.0
    port: 8000
    delay: 10
    state: drained

assert

assert – Asserts given expressions are true — Ansible Documentation

プログラミングでもおなじみのassert。インフラのテストでも使えます。

特定のサービスが上がっているかどうか。コマンドがインストールされているかどうか、パッケージのバージョンが正しく入っているかどうか。といったテストを記述することができます。

- shell: rpm -qi nginx
  register: p_installed

- shell: chkconfig --list | grep nginx
  register: p_enabled

- shell: ps aux | grep nginx
  register: p_running

- shell: netstat -ant | grep 80
  register: p_listen

- stat: path=/etc/nginx/nginx.conf
  register: p_exist

- shell: cat /etc/nginx/nginx.conf
  register: p_cat

- assert:
    that:
       - p_installed is defined
       - p_enabled is defined
       - p_running is defined
       - p_listen is defined
       - p_exist.stat.exists
       - "'worker_connections  1024;' in p_cat.stdout"

fail

fail – Fail with custom message — Ansible Documentation

- name: OS check
  fail: msg="not supported."
  when:
    - ansible_distribution == "CentOS"
    - ansible_distribution_major_version|int < 7