Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Driver vagrant does not provide a schema. #193

Open
zerchevack opened this issue Oct 3, 2023 · 5 comments
Open

Driver vagrant does not provide a schema. #193

zerchevack opened this issue Oct 3, 2023 · 5 comments

Comments

@zerchevack
Copy link

zerchevack commented Oct 3, 2023

Hello,

I try to run a simple molecule test but the creation fail with the bellow output
I think the vagrant instance is not create and this is the reason of ansible failed but i don't know why the "Create" playbook skip all tasks.

WARNING  Driver vagrant does not provide a schema.
INFO     default scenario test matrix: dependency, create, prepare
INFO     Performing prerun with role_name_check=0...
INFO     Using ~/.ansible/roles/mycompagny/linux_administration symlink to current repository in order to enable Ansible to find the role using its expected full name.
INFO     Running default > dependency
WARNING  Skipping, missing the requirements file.
WARNING  Skipping, missing the requirements file.
INFO     Running default > create

PLAY [Create] ******************************************************************

TASK [Populate instance config dict] *******************************************
skipping: [localhost]

TASK [Convert instance config dict to a list] **********************************
skipping: [localhost]

TASK [Dump instance config] ****************************************************
skipping: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0

INFO     Running default > prepare

PLAY [Prepare] *****************************************************************

TASK [Gather system info] ******************************************************
fatal: [instance]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname instance: Name or service not known", "unreachable": true}

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

CRITICAL Ansible return code was 4, command was: ansible-playbook --inventory ~/.cache/molecule/my-app/default/inventory --skip-tags molecule-notest,notest ~/test-molecule/molecule-venv/lib/python3.10/site-packages/molecule_plugins/vagrant/playbooks/prepare.yml

My molecule.yml file :

  name: galaxy
driver:
  name: vagrant
  provider:
    name: libvirt
platforms:
  - name: instance
    box: generic/debian12
provisioner:
  name: ansible
  log: true
  scenario:
    name: default
verifier:
  name: ansible

My converge file :

- name: Converge
  hosts: all
  gather_facts: false
  tasks:
    - name: Replace this task with one that validates your content
      setup:
      register: facts

    - name: Show facts
      debug:
        var: facts

My pip module installed :

Package                   Version
------------------------- --------
ansible                   8.4.0
ansible-compat            4.1.10
ansible-core              2.15.4
attrs                     23.1.0
bracex                    2.4
cffi                      1.16.0
click                     8.1.7
click-help-colors         0.9.2
cryptography              41.0.4
distro                    1.8.0
enrich                    1.2.7
Jinja2                    3.1.2
jsonschema                4.19.1
jsonschema-specifications 2023.7.1
libvirt-python            9.8.0
markdown-it-py            3.0.0
MarkupSafe                2.1.3
mdurl                     0.1.2
molecule                  6.0.2
molecule-plugins          23.5.0
packaging                 23.2
pip                       22.0.2
pluggy                    1.3.0
pycparser                 2.21
Pygments                  2.16.1
python-vagrant            1.0.0
PyYAML                    6.0.1
referencing               0.30.2
resolvelib                1.0.1
rich                      13.6.0
rpds-py                   0.10.3
selinux                   0.3.0
setuptools                59.6.0
subprocess-tee            0.4.1
wcmatch                   8.5
wheel                     0.37.1

My molecule version :

    ansible:2.15.4
    azure:23.5.0 from molecule_plugins
    containers:23.5.0 from molecule_plugins requiring collections: ansible.posix>=1.3.0 community.docker>=1.9.1 containers.podman>=1.8.1
    default:6.0.2 from molecule
    docker:23.5.0 from molecule_plugins requiring collections: community.docker>=3.0.2 ansible.posix>=1.4.0
    ec2:23.5.0 from molecule_plugins
    gce:23.5.0 from molecule_plugins requiring collections: google.cloud>=1.0.2 community.crypto>=1.8.0
    podman:23.5.0 from molecule_plugins requiring collections: containers.podman>=1.7.0 ansible.posix>=1.3.0
    vagrant:23.5.0 from molecule_plugins

Could you you help me ?
Have you an idea ?

Thanks

@shmii
Copy link

shmii commented Jan 8, 2024

Hi,

You should set more things for your vagrant box on your molecule.yml file.

  • Memory
  • CPU
  • Network and IP adresse configuration

For IP I use : 192.168.10.42 but chose apropriate one for your tests ;)

---
role_name_check: 1
dependency:
  name: galaxy
driver:
  name: vagrant
  provider:
    name: libvirt
    type: libvirt
    options:
      memory: 192
      cpus: 2

platforms:
  - name: instance
    box: generic/debian12
    interfaces:
      - auto_config: true
        network_name: private_network
        type: static
        ip: 192.168.10.42
    groups:
      - molecule_vm


provisioner:
  name: ansible
  log: true
  lint:
    name: ansible-lint
  scenario:
    name: default
verifier:
  name: ansible

@konstruktoid
Copy link
Contributor

Related: #175

@MaKaNu
Copy link

MaKaNu commented Jul 22, 2024

@apatard This is my Response to #175

So since the docker plugin does not yet provide schema like the vagrant my only options are:

  1. Ignore until a schema is provided
  2. learn what schema actually is and contribute to the project

Did I miss anything?

@apatard
Copy link
Member

apatard commented Jul 23, 2024

@apatard This is my Response to #175

So since the docker plugin does not yet provide schema like the vagrant my only options are:

1. Ignore until a schema is provided

2. learn what schema actually is and contribute to the project

Did I miss anything?

there's a 3rd option:

  • create a venv
  • install ansible/molecule/-plugins in it
  • take the schema from I gave you and put it into your venv
  • test to check if it's fine
  • report here and if fine, I'll try to open a PR soon-ish

@haxorof
Copy link

haxorof commented Sep 14, 2024

@apatard This is my Response to #175
So since the docker plugin does not yet provide schema like the vagrant my only options are:

1. Ignore until a schema is provided

2. learn what schema actually is and contribute to the project

Did I miss anything?

there's a 3rd option:

  • create a venv
  • install ansible/molecule/-plugins in it
  • take the schema from I gave you and put it into your venv
  • test to check if it's fine
  • report here and if fine, I'll try to open a PR soon-ish

I got the same error as this issue is about and when I tried manually adding the json inside venv under vagrant/schema/driver.json it didn't pick it up. Looking around a in molecule delegated driver I conclude that a the following needed to be defined in end of driver.py:

    def schema_file(self):
        return os.path.join(os.path.dirname(__file__), "schema", "driver.json")

After adding it I do not get WARNING Driver vagrant does not provide a schema. anymore. I also tested to add something wrong to see the validation is actually working (notvalid: true) and seems fine since I got the following error:

CRITICAL Failed to validate ##REDACTED##/extensions/molecule/default/molecule.yml

["Additional properties are not allowed ('notvalid' was unexpected)"]

Versions I was using when testing this:

molecule 24.9.0 using python 3.11 
    ansible:2.17.4
    azure:23.5.3 from molecule_plugins
    containers:23.5.3 from molecule_plugins requiring collections: ansible.posix>=1.3.0 community.docker>=1.9.1 containers.podman>=1.8.1
    default:24.9.0 from molecule
    docker:23.5.3 from molecule_plugins requiring collections: community.docker>=3.4.11 ansible.posix>=1.4.0
    ec2:23.5.3 from molecule_plugins
    gce:23.5.3 from molecule_plugins requiring collections: google.cloud>=1.0.2 community.crypto>=1.8.0
    openstack:23.5.3 from molecule_plugins requiring collections: openstack.cloud>=2.1.0
    podman:23.5.3 from molecule_plugins requiring collections: containers.podman>=1.7.0 ansible.posix>=1.3.0
    vagrant:23.5.3 from molecule_plugins

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants