2

我正在使用厨房和 ansible 来测试服务器配置。我能找到的每个示例.kitchen.yml在与 ansible 角色相同的文件夹中都有一个文件。我想执行多个测试,但似乎没有内置的方法来执行此操作 -kitchen test期望.kitchen.yml在它运行的文件夹中有一个文件(以及 serverspec ruby​​ 规范文件和包装的 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 文件。

这是怎么做的?

4

2 回答 2

2

现在可以使用最新的 busser-ansiblespec 看到:

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

https://github.com/neillturner/ansible_repo

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

于 2015-12-18T17:27:28.160 回答
1

我对我的 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

在“测试/集成”目录中,我有以下设置:

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

亲切的问候,

维尔纳

于 2015-11-14T12:48:28.403 回答