Как запустить несколько ролевых тестов kitchen-ansible

Я использую кухню и возможность тестировать конфигурации сервера. Каждый пример, который я могу найти, имеет файл .kitchen.yml в той же папке, что и роль ansible. Я хотел бы выполнить несколько тестов, но, похоже, нет встроенного способа сделать это - kitchen test ожидает один файл .kitchen.yml в папке, в которой он запускается (вместе с файлами спецификаций ruby ​​​​serverspec и файлом default.yml который оборачивает фактическую роль), например.

roles
 - role_1
    - tasks
        mail.yml
    - test/integration/default/serverspec/localhost
        role_spec.rb
    default.yml
    .kitchen.yml

Я бы предпочел отделить файлы, используемые для тестирования, от файлов, используемых для настройки серверов, и с этой целью я создал набор для каждой роли и указал сценарий подготовки в конфигурации пакета:

suites:
  - name: role_1
    provisioner:
      playbook: test/integration/role_1/default.yml
  - name: role_2
    provisioner:
      playbook: test/integration/role_2/default.yml

Тогда мои *_spec.rb файлы должны находиться в папке с именем test/integration/role_1/serverspec

Это также позволяет мне запускать несколько ролевых тестов с помощью одного kitchen test, но я не уверен, что это правильный путь. Если бы у меня был плейбук с несколькими ролями, я не вижу, как я могу повторно использовать файлы *_spec.rb.

Как это должно быть сделано?


person blank    schedule 15.10.2015    source источник


Ответы (2)


Теперь это доступно с последней версией busser-ansiblespec, см.:

https://github.com/neillturner/busser-ansiblespec

https://github.com/neillturner/ansible_repo

https://github.com/neillturner/kitchen-ansible

person neill    schedule 18.12.2015
comment
Вы должны включить ключевые части из ссылок и просто использовать ссылки в качестве ссылок. - person ; 18.12.2015

Что я делаю со своими ролями Ansible, так это следующее. Мой файл .kitchen.yml в "корне" роли:

---
driver:
  name: docker
  provision_command: sed -i '/tsflags=nodocs/d' /etc/yum.conf

provisioner:
  name: ansible_playbook
  ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
  hosts: localhost
  requirements_path: requirements.yml

platforms:
  - name: centos-6.6

verifier:
  ruby_bindir: '/usr/bin' 

suites:
  - name: zabbix-server-mysql
    playbook: zabbix-server-mysql.yml
    provisioner:
        name: ansible_playbook
        playbook: test/integration/zabbix-server-mysql.yml
  - name: zabbix-server-pgsql
    provisioner:
        name: ansible_playbook
        playbook: test/integration/zabbix-server-pgsql.yml

В каталоге "test/integration" у меня есть следующие настройки:

./zabbix-server-mysql/serverspec/localhost/ansible-zabbix-server_spec.rb
./zabbix-server-mysql/serverspec/spec_helper.rb
./zabbix-server-mysql.yml
./zabbix-server-pgsql/serverspec/localhost/ansible-zabbix-server_spec.rb
./zabbix-server-pgsql/serverspec/spec_helper.rb
./zabbix-server-pgsql.yml

Файлы zabbix-server-pgsql.yml и zabbix-server-mysql.yml — это плейбуки, вызывающие саму роль, например:


- hosts: localhost
  roles:
    - role: geerlingguy.mysql
    - role: ansible-zabbix-server
      zabbix_url: zabbix.example.com
      zabbix_version: 2.4
      database_type: mysql
      database_type_long: mysql

Надеюсь, это поможет вам.

Я не знаю, как повторно использовать файлы _spec.rb, поэтому не могу ответить на этот вопрос. (Хочу узнать ответ, поэтому добавлю эту страницу в закладки ;-))

С уважением,

Вернер

person Werner Dijkerman    schedule 14.11.2015