Travis-CI を使えばとても簡単です:
# Run the role/playbook again, checking to make sure it's idempotent.
- >
ansible-playbook -i tests/inventory tests/test.yml --connection=local --sudo --extra-vars "take_ownership_of_tmp=$OWN_TMP"
| grep -q 'changed=0.*failed=0'
&& (echo 'Idempotence test: pass' && exit 0)
|| (echo 'Idempotence test: fail' && exit 1)
しかし、Debian システムで自分の役割をテストする必要があるため、Travis は使用できません。ansible_playbook プロビジョナーで Test-Kitchen を使用しています。
例えば:
私の .kitchen.yml
---
driver:
name: vagrant
provisioner:
name: ansible_playbook
hosts: test-kitchen
ansible_verbosity: 2
ansible_verbose: true
require_ansible_repo: false
require_chef_omnibus: false
require_ansible_omnibus: true
require_chef_for_busser: false
ansible_omnibus_url: https://raw.githubusercontent.com/neillturner/omnibus-ansible/master/ansible_install.sh
platforms:
- name: debian-6.0.10-64-nocm
driver_config:
customize:
memory: 1024
cpus: 2
box: puppetlabs/debian-6.0.10-64-nocm
box_url: https://atlas.hashicorp.com/puppetlabs/boxes/debian-6.0.10-64-nocm/versions/1.0.2/providers/virtualbox.box
suites:
- name: default
verifier:
ruby_bindir: '/usr/bin'
テスト プレイブック (test/integration/default/default.yml) は非常にシンプルです
---
- hosts: all
roles:
- preconf
vars:
#some vars here
preconf ロールの 2 回目の呼び出しを default.yml に追加することはできますが、役に立ちません。
1 回の呼び出しで、kitchen はいくつかの変更された項目を返します。
PLAY RECAP ********************************************************************
localhost : ok=12 changed=8 unreachable=0 failed=0
ただし、2 つの呼び出しでは、2 つの個別の結果ではなく、アイテムの合計を返します。
PLAY RECAP ********************************************************************
localhost : ok=24 changed=10 unreachable=0 failed=0
では、プレイブックを 2 回目に実行して、冪等性テストの結果を確認するにはどうすればよいでしょうか?