如何运行多个厨房 - 安全角色测试

时间:2015-10-15 14:48:05

标签: ansible test-kitchen

我正在使用kitchen和ansible来测试驱动器服务器配置。我找到的每个示例都在ansible角色所在的文件夹中有一个.kitchen.yml文件。我想执行多个测试,但似乎没有内置的方法 - kitchen test期望在其运行的文件夹中有一个.kitchen.yml文件(以及serverspec ruby​​) spec文件和包装实际角色的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文件。

这是怎么回事?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我对Ansible角色的处理如下。 我的.kitchen.yml文件位于" root"角色:

---
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

在"测试/集成"目录我有以下设置:

./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文件,因此我无法对该文件给出答案。 (我想知道答案,所以我将此页面加入书签;-))

亲切的问候,

沃纳