- Add pre-validation.
- MOLECULE_ special variables available in molecule.yml.
- Log Vagrant stdout to a file in MOLECULE_EPHEMERAL_DIRECTORY.
- Reintroduce base config merging.
- Corrected unit tests to work with tox.
- Add verifier mutually exclusive checking.
- UTF-8 issue in idempotence.
- Made prepare playbook optional.
- Bundle common playbooks.
- Added Goss linter.
- Disallow verifier.options with Goss and Inspec.
- MOLECULE_ special variables available in molecule.yml.
- Molecule introduces a new CLI option --base-config, which is loaded prior to each scenario's molecule.yml. This allows developers to specify a base config, to help reduce repetition in their molecule.yml files. The default base config is ~/.config/molecule/config.yml.
- Prepare playbook no longer needs to exist, unless using it.
- Molecule bundles Docker and Vagrant create/destroy playbooks.
- Enable Ansible 2.4 support with py36.
- Allow the destroying of remote libvirt instances.
- Bumped testinfra version for Ansible 2.5.1 compatibility.
- Added RuboCop as Inspec's linter.
- Minor fixes to Goss verifier playbook.
- Update documentation for verify and idempotency checks.
- Added Inspec verifier.
- Support Void Linux when using Docker driver.
- Converge with built in Molecule skip tags.
- Render inventory links relative to scenario dir.
- Disallow null provider.env values.
- Log vagrant errors.
- Enable py36 support for Ansible 2.5.
- Retry downloading goss 3 times.
- Delegated driver should report unknown on molecule list.
- Correct Docker container terminal sizing.
- Bumped Ansible 2.4 minor version in tox.
- Add docker_host attribute to templates to allow talking to a remote docker daemon.
- Across-the-board requirements update.
- Add parameter for Vagrant provider override.
- Add 'halt' option to Vagrant module.
- Python 3.6 support.
- Added Inspec verifier.
- Added RuboCop linter for Inspec.
- Render inventory links relative to scenario dir instead of ephemeral dir. Unfortunately, this was a side effect of #1218.
- Disable pytest caching plugin.
- No longer need to .gitignore the .pytest_cache/ directory.
- Ensure prune properly removes empty dirs.
- Allow verify playbook to be shared.
- Added cookiecutter tests.
- Moved temporary files to $TMPDIR.
- Added and tested Ansible 2.5 support.
- Remove include tasks from driver playbooks.
- Set delete_fip = yes for os_server resources.
- Relaxed schema validation for which allows unknown keys in molecule.yml.
- Corrected AnsibleLint -x example.
- Added dind support and docs.
- Exclude .venv directory from yamllint.
- Move Molecule playbook vars into host inventory.
- Switch functional tests to pytest.raises.
- Molecule writes temporary files to $TMPDIR hashed as molecule/$role_name/$scenario_name/. Temporary files are no longer written to $scenario_directory/.molecule/.
- No longer need to .gitignore the .molecule/ directory.
- Users of the Goss verifier will need to change their verifier.yml playbook to verify.yml.
- Correct verbose flag options with --debug.
- Bumped Ansible 2.4 and 2.3 minor versions.
- Reimplemented schema validation with Cerberus.
- Bumped version of jinja2.
- Move merge_dicts into util.
- Forward port Molecule v1 shell dependency manager.
- Vagrantfile cleanup.
- Ability to log into a Docker registry.
- Reimplemented schema validation with Cerberus. The Molecule file is thoroughly validated. This may result in validation errors if the developer's molecule.yml is doing something unusual.
- Cleaned up the Vagrantfile, and allow the developer to change options on the base Vagrant config object.
- Changed Vagrant's molecule.yml raw_config_args to provider_raw_config_args for differentiating instance_raw_config_args.
- Correct Vagrant to automatically insert a keypair.
- Corrected synced_folders usage.
- Properly skipping Vagrant speedup keys in provider.
- Allow Vagrant to automatically insert a keypair.
- Correct molecule_vagrant.py bug where provider_options would cause Vagrant to fail if keys from #1147 were provided.
- Fix line length in cookie cutter README.
- PR #1147 reduced Vagrant create time, which disabled Vagrant from automatically inserting a keypair. Molecule's default is now changed back to Vagrant's default of True, which may reduce the speed of Vagrant create as fixed by #1147.
- Bumped yamllint version.
- Namespaced Docker registry.
- Reduce create time with Vagrant driver.
- Replace >>> with $ in documentation.
- Moved prune to run after destroy.
- Fix confusion between exposed and published ports in docker create playbook.
- Add basic support for libvirt in Vagrant driver.
- Ignore psutil on cygwin platform.
- Corrected ability to set multiple x options in provisioner's lint.
- Disallow privilege_escalation via schema.
- Validate schema for invalid ansible config options.
- Adding provision option for Vagrant driver.
- These changes do not impact existing projects. However, if one was using the old syntax, and upgraded create.yml, changes would be required. The Docker driver's registry has been moved to a key named url under registry.
driver:
name: docker
platforms:
- name: instance
image: image_name:tag
registry:
url: registry.example.com
- Fix confusion between exposed and published ports in docker create playbook.
driver:
name: docker
platforms:
- name: instance
image: image_name:tag
exposed_ports:
- "53/udp"
- "53/tcp"
published_ports:
- "0.0.0.0:8053:53/udp"
- "0.0.0.0:8053:53/tcp"
- Corrected ansible args.
- Reverted, release does not exist.
- Improved quickstart video.
- Ability to specify a custom registry to Docker driver.
- Add a link to talk demo.
- Corrected incorreclty fixed bug when tags provided to provisioner.
- Corrected dependency scenario functional tests.
- Corrected incorrectly fixed bug when providing provisioner lint options.
- Regexp support in additional_files_or_dirs.
- Add custom nameserver to Docker container.
- Add network create and destroy support to Docker driver.
- The verifier's additional_files_or_dirs option is relative to the test directory, as opposed to the scenario directory.
- The verifier's additional_files_or_dirs option now supports regexp. Molecule will add additional files or directories, only when the glob succeeds. Directories must be appended with the regexp to match, further details in the verifier's documentation.
- Ability to set a ulimit for the Docker driver.
- Switching log_driver from none to json-file to for compatibility with Ansible 2.2.
- Default to always destroy strategy.
- Support linked_clone for Vagrant 2.X.
- Bump tree-format to 0.1.2.
- Correct starting container on Docker edge by changing log_driver to none.
- Make psutil installation platform-dependent.
- Path searching to check ephemeral dir first.
- Update Goss verifier.yml.
- Bump ansible-lint version.
- Added example for setting Vagrant proxy settings for Linux.
- Never destroy instances if --destroy-never requested.
- Variable Molecule Ephemeral Directory.
- Added systemd example.
- Ignore provisioner.options when in the create/destroy provisioner.
- Switched Docker driver to a portable default command.
- Parallel instance management.
- Added Azure driver.
- Corrected testinfra SystemInfo tests.
- Execute dependency on check and converge sequence.
- Updated Docs usage of dependency role-file instead of requirements_file.
- Cleaned up YAML syntax.
- Execute linting first in test sequence.
- Support expose_ports option in docker driver.
- Corrected missing code block inside documentation.
- Bump ansible-lint version.
- Added yamlint to init scenario.
- Correct env path qualification.
- Add sudo package to Fedora section of Dockerfile template.
- Correct ANSIBLE_ROLES_PATH path component.
- Allow re-run of prepare playbook.
- Report friendly error message when interpolation fails.
- Added a new line after printing matrix.
- Added molecule header to generated Dockerfiles.
- Check supported python and ansible versions when executing Molecule.
- Sanitize user provided config options.
- Sanitize user provided env options.
- Added shell friendly env output
- Ensure setup is run for prepare to correct ssh connection failures.
- Ability to execute a prepare playbook post create.
- Log deprecation warning when missing prepare.yml.
- Support Ansible 2.4.
- Revert "Add support import data from original ansible.cfg".
- Changed testinfra command to py.test.
- Add a destroy strategy to the test action.
- Delegated driver may or may not manage instances.
- Fix Dockerfile for Fedora.
- Generate host/group vars when host vars missing.
- Pass the provisioner's env to the verifier.
- Corrected init scenario validation.
- Major overhaul of Molecule.
- Ansible playbooks to manage instances.
- Vagrant is managed through a custom Ansible module bundled with Molecule.
- Addition of Scenarios.
- Addition of a Delegated Driver to test instances managed outside of Molecule.
- Promoted Goss Verifier to a supported verifier.
- Added GCE Driver, EC2 Driver, LXC Driver, LXD Driver , and OpenStack Driver native Molecule drivers.
- Not compatible with Molecule v1 style config.
- Demoted serverspec support entirely.
- Does not support all of the Molecule v1 functionality or flexibility, in favor of simplicity and consistency throughout.
- Ansible 2.2 and 2.3 support only.
- See Molecule v1 to v2 Porting Guide.
- Molecule no longer defaults to passing the --become flag to the ansible-playbook command.
- Roles are linted with Yamllint vs v1's custom linter.
- Update ansible-lint for Ansible 2.4 compatibility.
- Display output when idempotence fails.
- Changed basebox to ubuntu/trusty64 for molecule init.
- Allow disable_cache parameter for Docker containers enhancement.
- Update goss verifier.
- Add a 'private' parameter in OpenStack driver.
- Support Ansible 2.3.
- Clean up {group,host}_vars on destroy.
- Globally disable cowsay, since it impacts the idempotence check.
- Added ungrouped hosts under all.
- Prescriptive ansible.cfg defaults.
- Ansible v2 has deprecated ansible_ssh_{host,port,user}.
- Docker driver: use POSIX shell and support more linux package systems.
- Add quotes around ansible_ssh_private_key_file format.
- Ansible 1.9 No longer supported.
- Handling of networks with Docker driver.
- Corrected None RepoTags bug with docker driver.
- No longer skip setting hostname with Vagrant's libvirt provider.
- Openstack: Allow using ssh keys from ssh-agent.
- Obtain driver from state file if set.
- Updated to Goss 0.3.0.
- Remove terminal warnings while running apt.
- Support for new docker sdk.
- Updated doc for docker driver links.
- The docker-py pip package has been deprecated in favor of docker.
- Version bump, network interuption while uploading package to pypi.
- Correct testinfra tests discovered twice.
- Correct too many authentication failures error.
- Expose network configuration to docker driver.
- Openstack: Performance improvements for multiinstance setups.
- Do not require a project_config when a local_config is present.
- Corrected molecule.yml's group_vars/host_vars.
- The host_vars and group_vars section of molecule.yml no longer accepts a list, rather a dict similar to Ansible's vars usage.
- Openstack: Use configured ssh key.
- Properly handle testinfra verbose flag setting.
- Add raw_config_args option to providers.
- Convert vagrantfile from relying on jinja.
- Make Openstack ssh timeout configurable.
- Fix availability timeout in Openstack driver.
- Do not alter users known_hosts file in Openstack driver.
- Allow using environment variables in molecule.ym.
- Make ansible.cfg settings configurable through molecule.yml.
- Add multiple network support in Openstack driver.
- Add links functionality to Docker driver.
- Switched options from 'sudo' to 'become'.
- Create test skeleton with molecule init when initializing a role in current directory.
- Fix unittests to allow ls to be in both /usr/bin and /bin.
- Force raw_env_vars to string for ansible-playbook.
- Correct functional tests.
- Correct locale issues with print class of methods.
- Correct ansible-lint exit error when role dependency is in newer dictionary format.
- Pass env to ansible-lint.
- Cleanup sphinx doc generation.
- Bumped testinfra requirement which drops the now useless installation of which in centos and fedora images.
- Made OpenStack's ip pool configurable.
- Corrected Docker's overlayfs for RPM based distros.
- Fixed OpenStack's security_groups default for newer shade versions.
- Added missing bash completion targets.
- Removed check mode from running in test cycle.
- Molecule no longer runs in "Dry Mode" as part of molecule test. If one wishes to incorporate check as part of test, molecule.yml can be updated to include this as part of the test sequence.
- Slightly improved unit test coverage.
- Various doc improvements.
- Added Gilt usage to docs.
- Reimplemented info, error, debug message handling.
- Nice error message when rake and/or rubocop missing.
- Fix task determination on idempotence failure.
- Added a github issue template.
- Logging of dependency command execution.
- Added a shell dependency manager.
- Created a CI section to documentation with Tox details.
- Rename dependencies key to dependency.
- The galaxy override options have been moved to the dependency section of molecule's config. No longer support a top level dependencies config key. This functionality was added in 1.14, and this follow-up corrects the usage, before 1.14 was utilized.
- Fix openstack driver login and ssh key generation.
- Made improvements to unit/functional tests.
- Fixed Goss verifier under Ansible 2.2.
- Removed testinfra config backward compatibility.
- Broke out role dependency into a subcommand.
- The testinfra override options have been moved to the verifier section of molecule's config. No longer support a top level testinfra config key.
- The galaxy override options have been moved to the dependencies section of molecule's config. No longer support a galaxy key inside the top level ansible section.
- Implement environment handling in docker driver.
- Added vmware_workstation provider to vagrant.
- Improved overall logging, including logging of sh commands when debug flag set.
- Avoid images with <none> tag.
- Support and test ansible 2.2 and 2.1.2.
- Allow nested testinfra test directory structure.
- Ability to pass arbitrary ansible cli flags to converge.
- Added IRC info to docs.
- Return exit code from goss verifier.
- General cleanup of modules and documentation.
- Bumped requirements versions.
- Disable diff when executing idempotent check.
- Make sure ansible-lint respects the molecule ignore_paths.
- Convert readthedocs links for their .org->.io migration for hosted projects.
- Increased test coverage.
- Allow group/host vars in molecule.yml to work with ansible 1.9.
- Pass HOME to ansible-lint environment.
- Expose driver to login.
- Improved login error message messaging.
- Added a private disabled top level key. Do not use or rely on this key. Added for our molecule adoption.
- Added a coverage minimum.
- More unit and functional coverage.
- Write templates even when a custom ansible.cfg is specified.
- Removed default multiple-instances from init.
- Preserve ansible.cfg when supplying a custom one.
- Additional command tests.
- Changed connection to ansible_connection.
- Implemented click vs docopt. This slightly changes the CLI's semantics.
- Removed the driver python packages from installing with molecule.
- Set ssh key if specified in OpenStack driver.
- Using py.test as functional test runner.
- Added a Gemfile to
molecule init
serverspec verifier. - Added SUSE docker driver support.
- Display the list of non-idempotent tasks with
molecule idempotence
.
- The
--debug
flag is no longer passed to the subcommand. The command and subcommand args were getting munged together, and passed to the core. They are now handled separately. - Removed the
--debug
subcommand flag from all usage -- it was never used. - The
init
subcommand requires an optional--role
flag vs a role argument when naming the role to initialize. - The
init
subcommand requires a--driver
flag when creating a driver other than vagrant. - The
init
subcommand requires a--verifier
flag when creating a verifier other than testinfra. - The
login
subcommand requires a--host
flag when more than one instance exists. - One must install the appropriate python package based on the driver used.
- Set ssh key if specified with the OpenStack driver.
- Pass ANSIBLE_CONFIG when executing ansible-lint.
- Hide ansible-lint stacktrace on
molecule verify
. - Corrected linked clone platform options checking.
- Handle when a container is stopped outside of molecule, when running
molecule status
.
- Preserve sudo passed in verifier options.
- Corrected bug when passing the
--platform
flag.
- General cleanup of core module.
- Various documentation updates.
- Pull molecule status from state file when using Vagrant driver.
- Added alpha Goss verifier support.
- Updated runtime requirements to current versions.
- Implemented
molecule check
subcommand. - Configure verifier to be test kitchen like.
- Ability to declare multiple drivers in config.
- Implement ansible groups inheritance.
Previously molecule would execute a test framework based on the existence of a directory structure. This is no longer the case. Molecule will execute the configured suite, where testinfra is the default. See docs.
- Reimplemented idempotence handling. Removed the idempotence ansible callback plugin, in favor of a native implementation.
There is no change in workflow. Molecule still reports if a converge was idempotent or not. However, it no longer reports which task(s) are not idempotent.
- Removed pytest-xdist from runtime deps. This allows testinfra's dependency on pytest to properly install.
- Pinned to explicit version of testinfra, due to pytest incompatabilities.
- Added ability to specify custom dockerfile.
- Added ability to generate and destroy temporary openstack keypair and ssh key file if they are not specified in the molecule.yml.
- Implemented Cookiecutter for
molecule init
. - Documentation improvements.
Roles may fail to converge due to the introduction of additional verifiers.
- Added flake8 linter to testinfra verifier.
- Implemented ansible lint.
- Correct a converge --debug bug.
- Correct ansible galaxy role path.
- Restructured and reogranized internal code, tests, and docs.
- Added functional scenario tests.
- Improved unit tests/coverage.
- Added auto docker api version recognition to prevent api mismatch errors.
- Added fallback status for vagrant driver.
- Control over ansible galaxy options.
- Display molecule status when not created.
- Added dependency installation state, and installation step for syntax check.
- Pinned runtime requirements.
- Update login to use state data.
- Ability to target ansible groups with testinfra.
- Ability to target docker hosts with serverspec.
- Added ../../ to rolepath to fix ansible 2.1.1 default role search.
- Added docker volume mounting.
- Add support for Docker port bindings.
- Implemented a new core config class.
- Existing Testinfra tests which use the Docker driver need updating as described in 398.
- Fixed role_path with ansible 2.1.1.
- Fixed passing flags to molecule test.
- Fixed a bad reference to the molecule_dir config variable.
- Fixed a bug where molecule would fail if .molecule/ didn't already exist.
- Added native support for OpenStack provider.
- Fixed a bug where testinfra_dir config option wasn't being handled.
- Fixed a bug with
molecule login
where its host matching didn't work with overlapping names.
- It's now possible to define host_vars and group_vars in ansible section of molecule.yml.
- The --platform CLI option now supports
all
. - Corrected issue with specifying serverspec args in molecule.yml.
- Updated config parsing so that testinfra.sudo and testinfra.debug can be set in molecule.yml.
- Demo role now pulls in correct serverspec config.
- Added inventory-file flag to
molecule check
to address Ansible 1.9.x specific issue.
- Fixed a bug preventing
molecule test
from working. - Added a demo role for functional testing.
- Added --offline option to
molecule init
. molecule status
now shows hosts by default.molecule test
will now fail immediately when encountering an error.- Switched to Python's logging module for displaying STDOUT, STDERR.
- Added support for libvirt provider.
- Added
molecule check
to check playbook syntax. - Testinfra parameters can now be set as vars in molecule.yml.
- Running testinfra tests in parallel is no longer the default behaviour.
- Fixed issue with testinfra and serverspec attempting to share args.
- Added --sudo option for testinfra.
- Added tab completion support.
- Misc. Docker updates and fixes.
- Added support for Docker provisioner.
- Added support for group_vars.
- Made "append_platform_to_hostname" False by default.
- Testinfra tests now run in parallel.
init
now generates testinfra tests by default.- Testinfra env vars (including ssh) are now consistent with what is passed to ansible-playbook.
- Fixed a bug where testinfra_dir wasn't being used.
- Changed append_platform_to_hostname to default to False.
- Updated
init
to install role dependencies from Ansible Galaxy. - Now using DocOpt subcommands to dispatch commands internally.
- Updated
login
command to take no hostname (for single instances) and partial hostnames. - Improved visibility when running (and not running) tests.
- Can now pass multiple instances of --tags for specifying more than one tag.
- Can now pass --destroy flag to
test
with various options suitable for use in CI. - Numerous small bug fixes.
- Added very basic support for the vagrant-triggers plugin.
- Fixed a bug introduced in 1.2.3 preventing
init
from working.
- Fixed a bug where
destroy
would fail on VMs that hadn't been created. Caused errors runningtest
. - Moved rubocop, rake, and testinfra into validators. Added tests.
- Moved ansible-playbook logic out of core, commands and into a dedicated class. Added tests.
- Provisioner logic moved to its own class outside of core.
- Added a CLI option for the
list
command to make the output machine readable. - Refactored commands.py to be more conducive to dispatch from DocOpt (#76).
- Fixed issue #82 where callback plugin path wasn't being properly merged with user-defined values.
- Fixed issue #84 where
molecule init
would produce a molecule.yml that contained trailing whitespace. - Fixed issue #85 preventing user-defined serverspec directory from being used.
- Updated idempotence plugin path to be appended to existing plugin path rather than overwriting it.
- Fixed case where idempotence plugin would crash when unable to read response dictionary.
- Added support for Vagrant 1.8's linked_clone option.
- Updated idempotence test to use an Ansible callback plugin that will print failed tasks.
- Path to templates can now be relative to a user's home directory.
- box_url in Vagrantfile is no longer set if box_version is defined.
- Uses the latest version of python-vagrant.
- Fixed a bug where inventory wasn't getting created on a new converge.
- Linting now targets a specific list of file extensions.
- Hostname created during
init
is now sanitized. - Creattion of python cache directory is now disabled by default.
- Fixed a bug where calling
create
separately fromconverge
wasn't generating an inventory file.
- Cleaned up state file management logic to be more concise, functional for other purposes.
- Removed --fast flag from converge in favor of using state file for fast converging.
- Instance hostname is now printed during serverspec runs.
- Fixed a bug where loading template files from absolute paths didn't work.
- Added support for static inventory where molecule can manage existing sites, not just vagrant instances.
- Added support for skipping instance/inventory creation during
molecule converge
by passing it --fast. MUCH faster.
- Fixed a bug preventing vagrant raw_config_args from being written to vagrantfile template.
- Cleaned up error messaging when attempting to molecule login to a non-existent host.
- Added release engineering documentation.
- Moved commands into a separate module.
- Switched to using yaml.safe_load().
- Added more debugging output.
- Added support for Vagrant box versioning. This allows teams to ensure all members are using the correct version in their development environments.
- Fixed a bug where specifying an inventory script was causing molecule to create it.
- config_file and inventory_file specified in ansible block are now treated as overrides for molecule defaults.
- Updated format of config.yml and molecule.yml so they use the same data structure for easier merging. In general it's more clear and easy to understand.
- Defaults are now loaded from a defaults file (YAML) rather than a giant hash. Maintaining data in two formats was getting tiresome.
- Decoupled main() from init() in Molecule core to make future tests easier.
- Removed mock from existing tests that no longer require it now that main() is decoupled.
- Moved all config handling to an external class. Greatly simplified all logic.
- Added tests for new config class.
- Cleaned up all messages using format() to have consistent syntax.
- Fixed status command to not fire unless a vagrantfile is present since it was triggering vagrant errors.
- Renamed _init_new_role() to init() to be consistent with other commands.
- Fixed incorrect messaging in _print_valid_providers().
- Fixed edge case in vagrantfile template to make sure we always have default cpus/memory set for virtualbox instances.
- Leveraged new config flexibility to clean up old hack for molecule init.
- Fixed utility test for deep_merge that was failing.
- Made print_line two different functions for stdout and stderr.
- Updated print functions to be Python 3 ready.
- Moved template creation into a generic function.
- Test all the (moved) things.
- Updated image assets.
- Removed aio/mcp naming from docs and templates.
- Switched to deep merging of config dicts rather than using update().
- Fixed trailing validator, and broke out into a module.
- Initial release.