【Ansible】Playbookのテストコードサンプル集
はじめに
前回の記事で、Ansibleロール単体テストツール「Molecule」を触ってみたんですけど、
Playbookのテストコードを書くのは初めてだったので、
ちょっと苦労しました。
果たして美しいテストコードかどうかは置いておいて、
Playbookのテストコードのサンプルをメモとして残しておこうと思います。
前提
Ansibleのバージョンは2.9です。
Moleculeで使う前提なので、以下の記述に続く例として書いてます。
--- - name: Verify hosts: all tasks: - name: タスク名 #後述する例です
ファイルの存在チェック(例:/etc/httpd/conf/httpd.conf)
- name: Check that httpd.conf exists stat: path: /etc/httpd/conf/httpd.conf register: result - name: Fail when httpd.conf is not exists fail: msg: "httpd.conf is not exists" when: not result.stat.exists
ファイルの内容チェック(例:/etc/httpd/conf/httpd.confにServerRoot /etc/httpdが設定されているか)
- name: Verify contents in httpd.conf wait_for: path: /etc/httpd/conf/httpd.conf search_regex: "{{ item }}" timeout: 5 with_items: - '^ServerRoot /etc/httpd$' # 検索したい文字列を配列で列挙
パッケージのインストールチェック(例:httpd)
- name: Check yum list shell: yum list installed | grep httpd register: result - name: Check httpd is installed fail: msg: "httpd is not exists" when: result.rc != 0
サービスの起動チェック(例:httpd)
- name: Check Started httpd service: name: httpd state: started check_mode: true register: status_change - name: Fail when httpd is inactive fail: msg: "not started httpd." when: status_change.changed|bool
おわりに
もっといい書き方とか、実はこれはアカンかったとかあれば、
随時更新していこうかと思います。
参考
書籍:インフラCI実践ガイド Ansible/GitLabを使ったインフラ改善サイクルの実現 | 中島 倫明, 佐々木 健太郎, 北山 晋吾, 齊藤 秀喜, 羽深 修 |本 | 通販 | Amazon