From 03de272b0005f92a1b483b97df55ee5fbde6d564 Mon Sep 17 00:00:00 2001 From: "Mark J. Horninger" Date: Mon, 5 Feb 2024 21:26:47 -0500 Subject: [PATCH 1/2] Trying to publish to ansible-galaxy --- .../workflows/publish-to-ansible-galaxy.yml | 8 +++ dominion_solutions/netbird/README.md | 3 + dominion_solutions/netbird/galaxy.yml | 69 +++++++++++++++++++ dominion_solutions/netbird/meta/runtime.yml | 52 ++++++++++++++ dominion_solutions/netbird/plugins/README.md | 31 +++++++++ .../netbird/roles/netbird}/README.md | 0 .../netbird/roles/netbird}/defaults/main.yml | 0 .../netbird/roles/netbird}/handlers/main.yml | 0 .../netbird/roles/netbird}/meta/main.yml | 0 .../netbird/roles/netbird}/tasks/main.yml | 0 .../netbird/roles/netbird}/tests/inventory | 0 .../netbird/roles/netbird}/tests/test.yml | 0 .../netbird/roles/netbird}/vars/main.yml | 0 13 files changed, 163 insertions(+) create mode 100644 .github/workflows/publish-to-ansible-galaxy.yml create mode 100644 dominion_solutions/netbird/README.md create mode 100644 dominion_solutions/netbird/galaxy.yml create mode 100644 dominion_solutions/netbird/meta/runtime.yml create mode 100644 dominion_solutions/netbird/plugins/README.md rename {netbird => dominion_solutions/netbird/roles/netbird}/README.md (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/defaults/main.yml (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/handlers/main.yml (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/meta/main.yml (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/tasks/main.yml (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/tests/inventory (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/tests/test.yml (100%) rename {netbird => dominion_solutions/netbird/roles/netbird}/vars/main.yml (100%) diff --git a/.github/workflows/publish-to-ansible-galaxy.yml b/.github/workflows/publish-to-ansible-galaxy.yml new file mode 100644 index 0000000..be86278 --- /dev/null +++ b/.github/workflows/publish-to-ansible-galaxy.yml @@ -0,0 +1,8 @@ +name: publish-to-ansible-galaxy +on: [tags] +jobs: + ansible-publish: + steps: + - uses: ansible/ansible-publish-action@v1.0.0 + with: + api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }} diff --git a/dominion_solutions/netbird/README.md b/dominion_solutions/netbird/README.md new file mode 100644 index 0000000..9dc6d14 --- /dev/null +++ b/dominion_solutions/netbird/README.md @@ -0,0 +1,3 @@ +# Ansible Collection - dominion_solutions.netbird + +Documentation for the collection. diff --git a/dominion_solutions/netbird/galaxy.yml b/dominion_solutions/netbird/galaxy.yml new file mode 100644 index 0000000..0ce70a0 --- /dev/null +++ b/dominion_solutions/netbird/galaxy.yml @@ -0,0 +1,69 @@ +### REQUIRED +# The namespace of the collection. This can be a company/brand/organization or product namespace under which all +# content lives. May only contain alphanumeric lowercase characters and underscores. Namespaces cannot start with +# underscores or numbers and cannot contain consecutive underscores +namespace: dominion_solutions + +# The name of the collection. Has the same character restrictions as 'namespace' +name: netbird + +# The version of the collection. Must be compatible with semantic versioning +version: 1.0.0 + +# The path to the Markdown (.md) readme file. This path is relative to the root of the collection +readme: README.md + +# A list of the collection's content authors. Can be just the name or in the format 'Full Name (url) +# @nicks:irc/im.site#channel' +authors: +- your name + + +### OPTIONAL but strongly recommended +# A short summary description of the collection +description: your collection description + +# Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only +# accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file' +license: +- GPL-2.0-or-later + +# The path to the license file for the collection. This path is relative to the root of the collection. This key is +# mutually exclusive with 'license' +license_file: '' + +# A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character +# requirements as 'namespace' and 'name' +tags: [] + +# Collections that this collection requires to be installed for it to be usable. The key of the dict is the +# collection label 'namespace.name'. The value is a version range +# L(specifiers,https://python-semanticversion.readthedocs.io/en/latest/#requirement-specification). Multiple version +# range specifiers can be set and are separated by ',' +dependencies: {} + +# The URL of the originating SCM repository +repository: http://example.com/repository + +# The URL to any online docs +documentation: http://docs.example.com + +# The URL to the homepage of the collection/project +homepage: http://example.com + +# The URL to the collection issue tracker +issues: http://example.com/issue/tracker + +# A list of file glob-like patterns used to filter any files or directories that should not be included in the build +# artifact. A pattern is matched from the relative path of the file or directory of the collection directory. This +# uses 'fnmatch' to match the files or directories. Some directories and files like 'galaxy.yml', '*.pyc', '*.retry', +# and '.git' are always filtered. Mutually exclusive with 'manifest' +build_ignore: [] + +# A dict controlling use of manifest directives used in building the collection artifact. The key 'directives' is a +# list of MANIFEST.in style +# L(directives,https://packaging.python.org/en/latest/guides/using-manifest-in/#manifest-in-commands). The key +# 'omit_default_directives' is a boolean that controls whether the default directives are used. Mutually exclusive +# with 'build_ignore' +# manifest: null + diff --git a/dominion_solutions/netbird/meta/runtime.yml b/dominion_solutions/netbird/meta/runtime.yml new file mode 100644 index 0000000..20f709e --- /dev/null +++ b/dominion_solutions/netbird/meta/runtime.yml @@ -0,0 +1,52 @@ +--- +# Collections must specify a minimum required ansible version to upload +# to galaxy +# requires_ansible: '>=2.9.10' + +# Content that Ansible needs to load from another location or that has +# been deprecated/removed +# plugin_routing: +# action: +# redirected_plugin_name: +# redirect: ns.col.new_location +# deprecated_plugin_name: +# deprecation: +# removal_version: "4.0.0" +# warning_text: | +# See the porting guide on how to update your playbook to +# use ns.col.another_plugin instead. +# removed_plugin_name: +# tombstone: +# removal_version: "2.0.0" +# warning_text: | +# See the porting guide on how to update your playbook to +# use ns.col.another_plugin instead. +# become: +# cache: +# callback: +# cliconf: +# connection: +# doc_fragments: +# filter: +# httpapi: +# inventory: +# lookup: +# module_utils: +# modules: +# netconf: +# shell: +# strategy: +# terminal: +# test: +# vars: + +# Python import statements that Ansible needs to load from another location +# import_redirection: +# ansible_collections.ns.col.plugins.module_utils.old_location: +# redirect: ansible_collections.ns.col.plugins.module_utils.new_location + +# Groups of actions/modules that take a common set of options +# action_groups: +# group_name: +# - module1 +# - module2 diff --git a/dominion_solutions/netbird/plugins/README.md b/dominion_solutions/netbird/plugins/README.md new file mode 100644 index 0000000..67a66d4 --- /dev/null +++ b/dominion_solutions/netbird/plugins/README.md @@ -0,0 +1,31 @@ +# Collections Plugins Directory + +This directory can be used to ship various plugins inside an Ansible collection. Each plugin is placed in a folder that +is named after the type of plugin it is in. It can also include the `module_utils` and `modules` directory that +would contain module utils and modules respectively. + +Here is an example directory of the majority of plugins currently supported by Ansible: + +``` +└── plugins + ├── action + ├── become + ├── cache + ├── callback + ├── cliconf + ├── connection + ├── filter + ├── httpapi + ├── inventory + ├── lookup + ├── module_utils + ├── modules + ├── netconf + ├── shell + ├── strategy + ├── terminal + ├── test + └── vars +``` + +A full list of plugin types can be found at [Working With Plugins](https://docs.ansible.com/ansible-core/2.16/plugins/plugins.html). diff --git a/netbird/README.md b/dominion_solutions/netbird/roles/netbird/README.md similarity index 100% rename from netbird/README.md rename to dominion_solutions/netbird/roles/netbird/README.md diff --git a/netbird/defaults/main.yml b/dominion_solutions/netbird/roles/netbird/defaults/main.yml similarity index 100% rename from netbird/defaults/main.yml rename to dominion_solutions/netbird/roles/netbird/defaults/main.yml diff --git a/netbird/handlers/main.yml b/dominion_solutions/netbird/roles/netbird/handlers/main.yml similarity index 100% rename from netbird/handlers/main.yml rename to dominion_solutions/netbird/roles/netbird/handlers/main.yml diff --git a/netbird/meta/main.yml b/dominion_solutions/netbird/roles/netbird/meta/main.yml similarity index 100% rename from netbird/meta/main.yml rename to dominion_solutions/netbird/roles/netbird/meta/main.yml diff --git a/netbird/tasks/main.yml b/dominion_solutions/netbird/roles/netbird/tasks/main.yml similarity index 100% rename from netbird/tasks/main.yml rename to dominion_solutions/netbird/roles/netbird/tasks/main.yml diff --git a/netbird/tests/inventory b/dominion_solutions/netbird/roles/netbird/tests/inventory similarity index 100% rename from netbird/tests/inventory rename to dominion_solutions/netbird/roles/netbird/tests/inventory diff --git a/netbird/tests/test.yml b/dominion_solutions/netbird/roles/netbird/tests/test.yml similarity index 100% rename from netbird/tests/test.yml rename to dominion_solutions/netbird/roles/netbird/tests/test.yml diff --git a/netbird/vars/main.yml b/dominion_solutions/netbird/roles/netbird/vars/main.yml similarity index 100% rename from netbird/vars/main.yml rename to dominion_solutions/netbird/roles/netbird/vars/main.yml From b292bb59223896c80be01bf861d61dd995373c8f Mon Sep 17 00:00:00 2001 From: "Mark J. Horninger" Date: Mon, 5 Feb 2024 21:32:49 -0500 Subject: [PATCH 2/2] Updated the version number --- .../workflows/publish-to-ansible-galaxy.yml | 7 +++++- dominion_solutions/netbird/galaxy.yml | 25 +++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/publish-to-ansible-galaxy.yml b/.github/workflows/publish-to-ansible-galaxy.yml index be86278..6136dcf 100644 --- a/.github/workflows/publish-to-ansible-galaxy.yml +++ b/.github/workflows/publish-to-ansible-galaxy.yml @@ -1,5 +1,10 @@ name: publish-to-ansible-galaxy -on: [tags] +on: + tags: + - * + push: + branches: + - main jobs: ansible-publish: steps: diff --git a/dominion_solutions/netbird/galaxy.yml b/dominion_solutions/netbird/galaxy.yml index 0ce70a0..8b5b057 100644 --- a/dominion_solutions/netbird/galaxy.yml +++ b/dominion_solutions/netbird/galaxy.yml @@ -8,7 +8,7 @@ namespace: dominion_solutions name: netbird # The version of the collection. Must be compatible with semantic versioning -version: 1.0.0 +version: 0.0.1 # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: README.md @@ -16,17 +16,17 @@ readme: README.md # A list of the collection's content authors. Can be just the name or in the format 'Full Name (url) # @nicks:irc/im.site#channel' authors: -- your name +- Mark J. Horninger (https://dominion.solutions) ### OPTIONAL but strongly recommended # A short summary description of the collection -description: your collection description +description: A collection of roles and playbooks for managing netbird peers. # Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only # accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file' license: -- GPL-2.0-or-later +- MIT # The path to the license file for the collection. This path is relative to the root of the collection. This key is # mutually exclusive with 'license' @@ -34,7 +34,13 @@ license_file: '' # A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character # requirements as 'namespace' and 'name' -tags: [] +tags: +- netbird +- ansible +- vpn +- network +- virtual +- private # Collections that this collection requires to be installed for it to be usable. The key of the dict is the # collection label 'namespace.name'. The value is a version range @@ -43,16 +49,16 @@ tags: [] dependencies: {} # The URL of the originating SCM repository -repository: http://example.com/repository +repository: https://github.com/dominion-solutions/ansible-netbird-role # The URL to any online docs -documentation: http://docs.example.com +documentation: https://github.com/dominion-solutions/ansible-netbird-role/blob/main/README.md # The URL to the homepage of the collection/project -homepage: http://example.com +homepage: https://github.com/dominion-solutions/ansible-netbird-role # The URL to the collection issue tracker -issues: http://example.com/issue/tracker +issues: https://github.com/dominion-solutions/ansible-netbird-role/issues # A list of file glob-like patterns used to filter any files or directories that should not be included in the build # artifact. A pattern is matched from the relative path of the file or directory of the collection directory. This @@ -66,4 +72,3 @@ build_ignore: [] # 'omit_default_directives' is a boolean that controls whether the default directives are used. Mutually exclusive # with 'build_ignore' # manifest: null -