Молекула жалуется на «[703] Следует изменить метаданные по умолчанию: описание» при выполнении основного теста - PullRequest
1 голос
/ 19 сентября 2019

Я не смог запустить команду molecule test, так как она выдает ошибку ниже, в то время как я могу запускать отдельные команды без ошибок (также при условии --debug o / p ниже)

[701] Role info should contain platforms
/root/.config/pip/molecule-testing/meta/main.yml:1
{'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

[703] Should change default metadata: author
/root/.config/pip/molecule-testing/meta/main.yml:1
{'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

[703] Should change default metadata: description
/root/.config/pip/molecule-testing/meta/main.yml:1
{'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

[703] Should change default metadata: company
/root/.config/pip/molecule-testing/meta/main.yml:1...

однако, еслиЯ запускаю команды ниже, это работает отлично.Итак, кто-нибудь может указать, почему весь тест не проходит, что мне делать?

  1. молекула создания
  2. список молекул
Validation completed successfully.
Instance Name    Driver Name    Provisioner Name    Scenario Name    Created    Converged
---------------  -------------  ------------------  ---------------  ---------  -----------
instance         docker         ansible             default          true       false

молекулы сходятся
Validation completed successfully.
--> Test matrix

└── default
    ├── dependency
    ├── create
    ├── prepare
    └── converge

--> Scenario: 'default'
--> Action: 'dependency'
Skipping, missing the requirements file.
--> Scenario: 'default'
--> Action: 'create'
Skipping, instances already created.
--> Scenario: 'default'
--> Action: 'prepare'
Skipping, prepare playbook not configured.
--> Scenario: 'default'
--> Action: 'converge'

    PLAY [Converge] ****************************************************************

    TASK [Gathering Facts] *********************************************************
    ok: [instance]

    TASK [molecule-testing : Molecule Hello World!] ********************************
    ok: [instance] => {
        "msg": "Hello, World!"
    }

    PLAY RECAP *********************************************************************
    instance                   : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

список молекул
 molecule list
--> Validating schema /root/.config/pip/molecule-testing/molecule/default/molecule.yml.
Validation completed successfully.
Instance Name    Driver Name    Provisioner Name    Scenario Name    Created    Converged
---------------  -------------  ------------------  ---------------  ---------  -----------
instance         docker         ansible             default          true       true
молекула уничтожить список молекул
--> Validating schema /root/.config/pip/molecule-testing/molecule/default/molecule.yml.
Validation completed successfully.
Instance Name    Driver Name    Provisioner Name    Scenario Name    Created    Converged
---------------  -------------  ------------------  ---------------  ---------  -----------
instance         docker         ansible             default          true       false

структура папок выглядит следующим образом

.
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── molecule
│   └── default
│       ├── Dockerfile.j2
│       ├── INSTALL.rst
│       ├── molecule.yml
│       ├── playbook.yml
│       └── tests
│           ├── test_default.py
│           └── test_default.pyc
├── README.md
├── tasks
│   └── main.yml
└── vars
    └── main.yml

молекуле

tasks \ main.yml ->

---
# tasks file for molecule-testing
- name: Molecule Hello World!
  debug:
    msg: Hello, World!

версия молекулы и ансибл следующие:

molecule --version
molecule, version 2.22

ansible --version
ansible 2.8.4
 config file = None
 configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
 ansible python module location = /root/molecule_ansible2.7/lib/python2.7/site-packages/ansible
 executable location = /root/molecule_ansible2.7/bin/ansible
 python version = 2.7.5 (default, Jun 11 2019, 14:33:56) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

docker images

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    7                   67fa590cfc1c        4 weeks ago         202 MB

пример выводаиз molecule --debug test это


DEBUG: COMMAND
/root/molecule_ansible2.7/bin/ansible-lint -v --exclude=/root/.cache/molecule/molecule-testing/default /root/.config/pip/molecule-testing/molecule/default/playbook.yml

    Examining /root/.config/pip/molecule-testing/molecule/default/playbook.yml of type playbook
    Examining /root/.config/pip/molecule-testing/tasks/main.yml of type tasks
    Examining /root/.config/pip/molecule-testing/handlers/main.yml of type handlers
    Examining /root/.config/pip/molecule-testing/meta/main.yml of type meta
    [701] Role info should contain platforms
    /root/.config/pip/molecule-testing/meta/main.yml:1
    {'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

    [703] Should change default metadata: author
    /root/.config/pip/molecule-testing/meta/main.yml:1
    {'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

    [703] Should change default metadata: description
    /root/.config/pip/molecule-testing/meta/main.yml:1
    {'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

    [703] Should change default metadata: company
    /root/.config/pip/molecule-testing/meta/main.yml:1
    {'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

    [703] Should change default metadata: license
    /root/.config/pip/molecule-testing/meta/main.yml:1
    {'meta/main.yml': {'__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'dependencies': [], u'galaxy_info': {u'description': u'your description', u'license': u'license (GPLv2, CC-BY, etc)', u'author': u'your name', u'company': u'your company (optional)', u'galaxy_tags': [], '__line__': 2, '__file__': u'/root/.config/pip/molecule-testing/meta/main.yml', u'min_ansible_version': 1.2}, '__line__': 1}}

An error occurred during the test sequence action: 'lint'. Cleaning up.

1 Ответ

1 голос
/ 19 сентября 2019

TLDR;

Это ошибки / передовые практики, о которых ansible-lint сообщает, что вы должны исправить.Вы можете запустить этап lint самостоятельно, просто запустив molecule lint.

. Из вашего текущего вывода вам нужно всего лишь добавить некоторую информацию в meta/main.yml в вашей роли.

То, что происходит в точности

Каждая команда molecule (например, converge, create, destroy, test ...) запускает серию шагов (последовательность) для вашей роли.Вы можете увидеть список шагов в выводе команды, как в следующем примере, взятом из вашего вопроса, когда вы запустили converge:

└── default
    ├── dependency
    ├── create
    ├── prepare
    └── converge

Эти последовательности настроены по умолчанию, но могут быть настроены в molecule.yml в вашем каталоге сценариев.Вы можете взглянуть на настройку для роли с открытым исходным кодом, которую я поддерживаю , если вы заинтересованы в теме.

По умолчанию последовательность converge не содержит lintэтап.Таким образом, вы можете запустить тестовую книгу без необходимости проверять все.

С другой стороны, последовательность test включает в себя все следующие шаги:

└── default
    ├── lint
    ├── dependency
    ├── cleanup
    ├── destroy
    ├── syntax
    ├── create
    ├── prepare
    ├── converge
    ├── idempotence
    ├── side_effect
    ├── verify
    ├── cleanup
    └── destroy

Как видите,первый - lint, который (по умолчанию снова) должен запускать yamllint для всех ваших файлов yml, затем ansible-lint для вашей ролевой и тестовой пьесы и, наконец, flake8 в файлах Python (testinfra тесты, пользовательские модули, пользовательские фильтры плагинов ...).

Ваш полный тест не пройден, так как программа проверки лучших практикansible-lint сообщает о проблемах, которые вы должны исправить.Из того, что я вижу, они довольно тривиальны и должны уйти с парой строк в вашем meta/main.yml

...