Commit 2902d3d4 authored by nimrod's avatar nimrod
Browse files

- List testing dependencies at tests/requirements.txt.

- Add pre-commit check for out-of-date dependencies.
- Add flake8 pre-commit check.
- List roles needed for testing (bootstraping) at
tests/requirements.yml, leave other dependencies at meta/main.yml.
- Update molecule.yml, ansible.cfg for newer versions of Molecule.
- Update documentation, playbook accordingly.
parent bd2a4293
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -6,17 +6,30 @@
    -   id: check-xml
    -   id: check-yaml
    -   id: check-merge-conflict
    -   id: flake8
    -   id: check-symlinks
-   repo: https://www.shore.co.il/git/ansible-pre-commit
    sha: v0.4.0
    sha: 0fadd691465b97db8992cfc66650f630e433324b
    hooks:
    -   id: ansible-syntax-check
        always_run: true
        files: tests/playbook.yml
        args: ['tests/playbook.yml']
        args:
        - tests/playbook.yml
-   repo: https://github.com/willthames/ansible-lint
    sha: v3.4.4
    sha: 959ab0f525e9abb19cf75f34381015cf33695f61
    hooks:
    -   id: ansible-lint
        always_run: true
        files: tests/playbook.yml
        args: ['tests/playbook.yml']
        args:
        - tests/playbook.yml
-   repo: local
    hooks:
    -   id: piprot
        name: piprot
        description: Check up-to-date Python requirements
        language: system
        entry: piprot --quiet --outdated tests/requirements.txt
        files: requirements.txt
        always_run: true
+39 −4
Original line number Diff line number Diff line
@@ -8,7 +8,38 @@ more information read the `blog post
Requirements
------------

See :code:`meta/main.yml` and assertions at top of :code:`tasks/main.yml`.
See :code:`meta/main.yml`, :code:`requirements.yml` and assertions at top of
:code:`tasks/main.yml`.

Adding the role as a dependency
-------------------------------

Add the following to your :code:`meta/main.yml`:

.. code:: yaml

    dependencies:
    - src: https://www.shore.co.il/git/ansible-role-example
      scm: git
      name: example

When :code: `ansible-galaxy` downloads your role it will also download its
dependencies, ensuring this role will be present and run everytime your role
runs.

Adding the role to your playbooks
---------------------------------

Add the following to your :code:`requirements.yml`:

.. code:: yaml

    - src: https://www.shore.co.il/git/ansible-role-example
      scm: git
      name: example

and update your roles by running :code: `ansible-galaxy install -r
requirements.yml`.

Role Variables
--------------
@@ -28,17 +59,21 @@ See :code:`tests/playbook.yml`.
Testing
-------

To install the dependencies:
Testing requires Virtualbox and Vagrant (out of scope for this documentation).
Install the Python dependencies, add pre-commit hooks by running:

.. code:: shell

    ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles
    pip install -r tests/requirements.txt
    pre-commit install

To run the full test suite:

.. code:: shell

    molecule test
    ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles
    pre-commit run --all-files
    molecule test --platform all

License
-------
+5 −1
Original line number Diff line number Diff line
[defaults]
library = library
host_key_checking = False
retry_files_enabled = False
roles_path = roles:../:../../:.molecule/roles
roles_path = .molecule/roles:.molecule/../roles:../:../../
command_warnings = True
deprecation_warnings = True

[ssh_connection]
pipelining = True
+5 −5
Original line number Diff line number Diff line
@@ -7,9 +7,9 @@ galaxy_info:
  platforms:
  - name: OpenBSD
    versions:
    - 5.9
    - 6.0
  - name: Ubuntu
    versions:
    - xenial
  galaxy_tags: [ ansible ]
dependencies:
    - src: https://www.shore.co.il/git/ansible-role-openbsd-bootstrap
      scm: git
      role: openbsd_bootstrap
dependencies: []
+5 −5
Original line number Diff line number Diff line
---
ansible:
  verbose: v
  verbose: vv
  playbook: tests/playbook.yml
  diff: True

molecule:
  testinfra_dir: tests
  ansible_config_template: ansible.cfg
  config_file: ../ansible.cfg
  requirements_file: tests/requirements.yml

vagrant:
  providers:
@@ -15,6 +13,8 @@ vagrant:
  platforms:
  - name: openbsd
    box: kaorimatz/openbsd-6.0-amd64
  - name: ubuntu
    box: ubuntu/xenial64
  instances:
  - name: ansible-role-example
    options:
Loading