diff --git a/Makefile b/Makefile index 069a6ff748..4a4f8bb18e 100644 --- a/Makefile +++ b/Makefile @@ -402,6 +402,7 @@ prepare_collection_venv: COLLECTION_TEST_DIRS ?= awx_collection/test/awx COLLECTION_PACKAGE ?= awx COLLECTION_NAMESPACE ?= awx +COLLECTION_INSTALL = ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE)/$(COLLECTION_PACKAGE) test_collection: @if [ "$(VENV_BASE)" ]; then \ @@ -414,27 +415,26 @@ flake8_collection: test_collection_all: prepare_collection_venv test_collection flake8_collection -test_collection_sanity: - rm -rf sanity - mkdir -p sanity/ansible_collections/$(COLLECTION_NAMESPACE) - cp -Ra awx_collection sanity/ansible_collections/$(COLLECTION_NAMESPACE)/awx # symlinks do not work - cd sanity/ansible_collections/$(COLLECTION_NAMESPACE)/awx && git init && git add . # requires both this file structure and a git repo, so there you go - cd sanity/ansible_collections/$(COLLECTION_NAMESPACE)/awx && ansible-test sanity - # WARNING: symlinking a collection is fundamentally unstable # this is for rapid development iteration with playbooks, do not use with other test targets symlink_collection: - rm -rf ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE) - mkdir -p ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE) - ln -s $(shell pwd)/awx_collection ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE)/awx + rm -rf $(COLLECTION_INSTALL) + mkdir -p ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE) # in case it does not exist + ln -s $(shell pwd)/awx_collection $(COLLECTION_INSTALL) build_collection: ansible-playbook -i localhost, awx_collection/template_galaxy.yml -e collection_package=$(COLLECTION_PACKAGE) -e collection_namespace=$(COLLECTION_NAMESPACE) -e collection_version=$(VERSION) ansible-galaxy collection build awx_collection --force --output-path=awx_collection install_collection: build_collection - rm -rf ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE)/awx - ansible-galaxy collection install awx_collection/$(COLLECTION_NAMESPACE)-awx-$(VERSION).tar.gz + rm -rf $(COLLECTION_INSTALL) + ansible-galaxy collection install awx_collection/$(COLLECTION_NAMESPACE)-$(COLLECTION_PACKAGE)-$(VERSION).tar.gz + +test_collection_sanity: install_collection + cd $(COLLECTION_INSTALL) && ansible-test sanity + +test_collection_integration: install_collection + cd $(COLLECTION_INSTALL) && ansible-test integration test_unit: @if [ "$(VENV_BASE)" ]; then \ diff --git a/awx_collection/README.md b/awx_collection/README.md index f91396e59c..da70e001a5 100644 --- a/awx_collection/README.md +++ b/awx_collection/README.md @@ -8,6 +8,25 @@ inside the folder `lib/ansible/modules/web_infrastructure/ansible_tower` as well as other folders for the inventory plugin, module utils, and doc fragment. +## Building and Installing + +This collection templates the `galaxy.yml` file it uses. +Run `make build_collection` from the root folder of the AWX source tree. +This will create the `tar.gz` file inside the `awx_collection` folder +with the current AWX version, for example: `awx_collection/awx-awx-9.2.0.tar.gz`. + +Installing the `tar.gz` involves no special instructions. + +## Running + +Modules in this collection may have any of the following python requirements: + + - the official [AWX CLI](https://docs.ansible.com/ansible-tower/latest/html/towercli/index.html) + - the deprecated `tower-cli` [PyPI](https://pypi.org/project/ansible-tower-cli/) + - no requirements + +See requirements in the `DOCUMENTATION` string specific to each module. + ## Release and Upgrade Notes The release 7.0.0 of the `awx.awx` collection is intended to be identical @@ -27,16 +46,6 @@ The following notes are changes that may require changes to playbooks: - The `variables` parameter in the `tower_group`, `tower_host` and `tower_inventory` modules are now in `dict` format and no longer supports the use of the `C(@)` syntax (for an external `vars` file). - Some return values (e.g., `credential_type`) have been removed. Use of `id` is recommended. -## Running - -To use this collection, the "old" `tower-cli` needs to be installed -in the virtual environment where the collection runs. -You can install it from [PyPI](https://pypi.org/project/ansible-tower-cli/). - -To use this collection in AWX, you should create a custom virtual environment into which to install the requirements. NOTE: running locally, you will also need -to set the job template `extra_vars` to include `ansible_python_interpreter` -to be the Python in that virtual environment. - ## Running Unit Tests Tests to verify compatibility with the most recent AWX code are @@ -95,12 +104,6 @@ cd ~/.ansible/collections/ansible_collections/awx/awx/ ansible-test integration ``` -## Building - -The build target `make build_collection` will template out a `galaxy.yml` file -with automatic detection of the current AWX version. Then it builds the -collection with the `ansible-galaxy` CLI. - ## Licensing All content in this folder is licensed under the same license as Ansible, diff --git a/awx_collection/template_galaxy.yml b/awx_collection/template_galaxy.yml index adf302aa14..efe200a440 100644 --- a/awx_collection/template_galaxy.yml +++ b/awx_collection/template_galaxy.yml @@ -23,7 +23,7 @@ replace: 'extends_documentation_fragment: {{ collection_namespace }}.{{ collection_package }}.auth' loop: "{{ module_files.files }}" loop_control: - label: "{{ item.path[ playbook_dir | length :] }}" + label: "{{ item.path | basename }}" - name: Change files to support desired namespace and package names replace: