From 49cf1503dee10aab8a02852419c9b3a7e412e7fe Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 16 Jun 2020 15:12:58 -0700 Subject: [PATCH] Updates to support publishing to Ansible Galaxy. --- Ansible/README.md | 17 +++++- Ansible/collection/jfrog/ansible/README.md | 14 ++--- Ansible/collection/jfrog/ansible/galaxy.yml | 29 ++++----- .../jfrog/ansible/jfrog-ansible-1.0.4.tar.gz | Bin 0 -> 25829 bytes .../artifactory-nginx-ssl/defaults/main.yml | 2 - .../artifactory-nginx-ssl/handlers/main.yml | 2 - .../roles/artifactory-nginx-ssl/meta/main.yml | 53 ----------------- .../artifactory-nginx-ssl/tests/inventory | 2 - .../artifactory-nginx-ssl/tests/test.yml | 5 -- .../roles/artifactory-nginx-ssl/vars/main.yml | 2 - .../roles/artifactory-nginx/defaults/main.yml | 2 - .../roles/artifactory-nginx/handlers/main.yml | 2 - .../roles/artifactory-nginx/meta/main.yml | 53 ----------------- .../roles/artifactory-nginx/tasks/Debian.yml | 3 - .../roles/artifactory-nginx/tests/inventory | 2 - .../roles/artifactory-nginx/tests/test.yml | 5 -- .../roles/artifactory-nginx/vars/main.yml | 2 - .../jfrog/ansible/roles/artifactory/README.md | 32 ++++++++++ .../roles/artifactory/meta/exception.yml | 6 -- .../ansible/roles/artifactory/meta/main.yml | 39 ++++--------- .../roles/artifactory/meta/preferences.yml | 2 - .../roles/artifactory/meta/version.yml | 6 -- .../ansible/roles/artifactory/tasks/main.yml | 2 +- .../.travis.yml | 0 .../ansible/roles/artifactory_nginx/README.md | 5 ++ .../roles/artifactory_nginx/defaults/main.yml | 2 + .../files/nginx.conf | 0 .../roles/artifactory_nginx/handlers/main.yml | 2 + .../roles/artifactory_nginx/meta/main.yml | 16 +++++ .../roles/artifactory_nginx/tasks/Debian.yml | 9 +++ .../tasks/RedHat.yml | 0 .../tasks/main.yml | 0 .../templates/artifactory.conf.j2 | 0 .../roles/artifactory_nginx/vars/main.yml | 2 + .../.travis.yml | 0 .../roles/artifactory_nginx_ssl/README.md | 16 +++++ .../artifactory_nginx_ssl/defaults/main.yml | 2 + .../artifactory_nginx_ssl/handlers/main.yml | 2 + .../roles/artifactory_nginx_ssl/meta/main.yml | 16 +++++ .../tasks/main.yml | 2 +- .../templates/artifactory.conf.j2 | 0 .../templates/certificate.key.j2 | 0 .../templates/certificate.pem.j2 | 0 .../roles/artifactory_nginx_ssl/vars/main.yml | 2 + .../jfrog/ansible/roles/postgres/README.md | 14 +++++ .../ansible/roles/postgres/meta/main.yml | 31 ++++------ .../jfrog/ansible/roles/xray/README.md | 22 +++++++ .../jfrog/ansible/roles/xray/meta/main.yml | 55 +++--------------- .../jfrog/ansible/roles/xray/tasks/main.yml | 2 +- .../jfrog/ansible/roles/xray/tests/inventory | 2 - .../jfrog/ansible/roles/xray/tests/test.yml | 5 -- Ansible/examples/playbook-rt-ha.yml | 2 +- Ansible/examples/playbook-ssl.yml | 2 +- .../.gradle/5.2.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/5.2.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../test/tests/.gradle/5.2.1/gc.properties | 0 .../tests/src/test/resources/testenv.yaml | 6 +- 57 files changed, 218 insertions(+), 281 deletions(-) create mode 100644 Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/defaults/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/handlers/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/meta/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tests/test.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/vars/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/defaults/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/handlers/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/meta/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tests/test.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/vars/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/README.md delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/exception.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx}/.travis.yml (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/files/nginx.conf (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/tasks/RedHat.yml (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/tasks/main.yml (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/templates/artifactory.conf.j2 (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx_ssl}/.travis.yml (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/tasks/main.yml (95%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/artifactory.conf.j2 (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/certificate.key.j2 (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/certificate.pem.j2 (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/postgres/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/xray/README.md delete mode 100644 Ansible/collection/jfrog/ansible/roles/xray/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml create mode 100644 Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin create mode 100644 Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock create mode 100644 Ansible/test/tests/.gradle/5.2.1/gc.properties diff --git a/Ansible/README.md b/Ansible/README.md index 7903b00..048d3e3 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -9,13 +9,18 @@ This Ansible directory consists of the following directories that support the JF ## Getting Started - 1. Install this collection or the roles in your Ansible path using your ansible.cfg file. The following is an example: + 1. Download and nstall this collection or the roles in your Ansible path using your ansible.cfg file. The following is an example: ``` # Installs collections into [current dir]/ansible_collections/namespace/collection_name collections_paths = ~/.ansible/collections:/usr/share/ansible/collections:collection # Installs roles into [current dir]/roles/namespace.rolename roles_path = Ansible/collection/jfrog/ansible/roles +``` + +Or install this collection from Ansible Galaxy. +``` +ansible-galaxy collection install jfrog.ansible ``` 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. @@ -64,4 +69,12 @@ ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A us eg. ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' -``` \ No newline at end of file +``` + +## Building the Collection Archive +1. Go to the [collection/jfrog/ansible directory](collection/jfrog/ansible). +2. Update the galaxy.yml meta file as needed. Update the version. +3. Build the archive. +``` +ansible-galaxy collection build +``` diff --git a/Ansible/collection/jfrog/ansible/README.md b/Ansible/collection/jfrog/ansible/README.md index 2dc13bd..22c888c 100644 --- a/Ansible/collection/jfrog/ansible/README.md +++ b/Ansible/collection/jfrog/ansible/README.md @@ -1,12 +1,12 @@ # Ansible -This repo contains the Ansible collection for JFrog roles. These roles allow you to provision Artifactory for High-Availability using a Primary node and multiple Secondary nodes. Additionally, a Postgresql role is provided for installing an Artifactory Postgresql database. +This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment. ## Roles Provided ### artifactory -The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory-nginx to install nginx. +The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory_nginx to install nginx. -### artifactory-nginx-ssl -The artifactory-nginx-ssl role installs and configures nginx for SSL. +### artifactory_nginx_ssl +The artifactory_nginx_ssl role installs and configures nginx for SSL. ### postgres The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. @@ -35,15 +35,15 @@ The following Vars must be configured. * _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. **If specified, this file will be used rather than constructing a file from the parameters above.** * _binary_store_file_: Your own [binary store file](https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore) can be used. If specified, the default cluster-file-system will not be used. -### primary vars +### primary vars (vars used by the primary Artifactory server) * _artifactory_is_primary_: For the primary node this must be set to **true**. * _artifactory_license1 - 5_: These are the cluster licenses. * _artifactory_license_file_: Your own license file can be used. **If specified, a license file constructed from the licenses above will not be used.** -### secondary vars +### secondary vars (vars used by the secondary Artifactory server) * _artifactory_is_primary_: For the secondary node(s) this must be set to **false**. -### ssl vars (Used with artifactory-nginx-ssl role) +### ssl vars (Used with artifactory_nginx_ssl role) * _certificate_: This is the SSL cert. * _certificate_key_: This is the SSL private key. diff --git a/Ansible/collection/jfrog/ansible/galaxy.yml b/Ansible/collection/jfrog/ansible/galaxy.yml index 2b44148..38e2cc5 100644 --- a/Ansible/collection/jfrog/ansible/galaxy.yml +++ b/Ansible/collection/jfrog/ansible/galaxy.yml @@ -3,40 +3,43 @@ # 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: jfrog +namespace: "jfrog" # The name of the collection. Has the same character restrictions as 'namespace' -name: ansible +name: "ansible" # The version of the collection. Must be compatible with semantic versioning -version: 1.0.0 +version: "1.0.4" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection -readme: README.md +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 + - "Jeff Fry " ### OPTIONAL but strongly recommended # A short summary description of the collection -description: your collection description +description: "This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment." # 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 + - "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: '' +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: + - artifactory + - xray + - jfrog # 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 @@ -45,13 +48,13 @@ tags: [] dependencies: {} # The URL of the originating SCM repository -repository: http://example.com/repository +repository: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to any online docs -documentation: http://docs.example.com +documentation: "https://www.jfrog.com/confluence/display/JFROG/" # The URL to the homepage of the collection/project -homepage: http://example.com +homepage: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to the collection issue tracker -issues: http://example.com/issue/tracker +issues: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" diff --git a/Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz b/Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..36c6956a8c87b4ad0856469925c304db88004e26 GIT binary patch literal 25829 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" + description: "The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory_nginx to install nginx." + company: JFrog - platforms: - - name: Debian - versions: - - all - - name: EL - versions: - - 7 - - 8 - - name: Fedora - versions: - - all - - name: OpenSUSE - versions: - - all - - name: Ubuntu - versions: - - bionic + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 galaxy_tags: - artifactory - - centos - - redhat - - server - - system + - jfrog -dependencies: [] +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml deleted file mode 100644 index e7fdebf..0000000 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tox_parallel: yes diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml deleted file mode 100644 index ea2ef8f..0000000 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -project_name: JFrog -reference: "https://github.com/robertdebock/ansible-role-artifactory/blob/master/defaults/main.yml" -versions: - - name: Artifactory - url: "https://dl.bintray.com/jfrog/artifactory/" diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml index 04b3a8e..6c59717 100644 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml @@ -2,7 +2,7 @@ # tasks file for artifactory - name: install nginx include_role: - name: artifactory-nginx + name: artifactory_nginx - name: create group for artifactory group: diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/.travis.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/.travis.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/.travis.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/.travis.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md new file mode 100644 index 0000000..6a6cb60 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md @@ -0,0 +1,5 @@ +# artifactory_nginx +This role installs NGINX for artifactory. This role is automatically called by the artifactory role and isn't intended to be used separately. + +## Role Variables +* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml new file mode 100644 index 0000000..5818d2b --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/files/nginx.conf b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/files/nginx.conf similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/files/nginx.conf rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/files/nginx.conf diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml new file mode 100644 index 0000000..f07f4d4 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml new file mode 100644 index 0000000..f8548e0 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml @@ -0,0 +1,16 @@ +galaxy_info: + author: "Jeff Fry " + description: "This role installs NGINX for artifactory. This role is automatically called by the artifactory role and isn't intended to be used separately." + company: JFrog + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + + galaxy_tags: + - artifactory + - jfrog + +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml new file mode 100644 index 0000000..cc41ad0 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml @@ -0,0 +1,9 @@ +--- +- name: apt-get update + apt: + update_cache: yes + register: package_res + retries: 5 + delay: 60 + become: yes + until: package_res is success diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/RedHat.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/RedHat.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/main.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/main.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/templates/artifactory.conf.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/templates/artifactory.conf.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/templates/artifactory.conf.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/templates/artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml new file mode 100644 index 0000000..7d43ed5 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/.travis.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/.travis.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/.travis.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/.travis.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md new file mode 100644 index 0000000..9a32719 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md @@ -0,0 +1,16 @@ +# artifactory_nginx_ssl +The artifactory_nginx_ssl role installs and configures nginx for SSL. + +## Role Variables +* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" +* _certificate_: This is the SSL cert. +* _certificate_key_: This is the SSL private key. + +## Example Playbook +``` +--- +- hosts: primary + roles: + - artifactory + - artifactory_nginx_ssl +``` diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml new file mode 100644 index 0000000..5818d2b --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml new file mode 100644 index 0000000..f07f4d4 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml new file mode 100644 index 0000000..3ca0601 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml @@ -0,0 +1,16 @@ +galaxy_info: + author: "Jeff Fry " + description: "The artifactory_nginx_ssl role installs and configures nginx for SSL." + company: JFrog + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + + galaxy_tags: + - artifactory + - jfrog + +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml similarity index 95% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml index ba37c53..ea18fe2 100644 --- a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml @@ -1,5 +1,5 @@ --- -# tasks file for artifactory-nginx +# tasks file for artifactory_nginx - name: configure the artifactory nginx conf template: src: artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/artifactory.conf.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/artifactory.conf.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/artifactory.conf.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.key.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.key.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.key.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.key.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.pem.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.pem.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.pem.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.pem.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml new file mode 100644 index 0000000..7d43ed5 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/postgres/README.md b/Ansible/collection/jfrog/ansible/roles/postgres/README.md new file mode 100644 index 0000000..f8740f1 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/postgres/README.md @@ -0,0 +1,14 @@ +# postgres +The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. + +### Role Variables +* _db_users_: This is a list of database users to create. eg. db_users: - { db_user: "artifactory", db_password: "Art1fAct0ry" } +* _dbs_: This is the database to create. eg. dbs: - { db_name: "artifactory", db_owner: "artifactory" } + +## Example Playbook +``` +--- +- hosts: database + roles: + - postgres +``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml index cc79dee..aa5edc7 100644 --- a/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml @@ -1,25 +1,16 @@ ---- - galaxy_info: - role_name: postgres_server - author: Jeff Fry - description: Installation of Postgres for Artifactory HA + author: "Jeff Fry " + description: "The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server." company: JFrog - min_ansible_version: 2.8 - platforms: - - name: Fedora - versions: - - 27 - - 29 - - name: Ubuntu - versions: - - xenial - - bionic - - name: Debian - versions: - - stretch + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + galaxy_tags: - postgres - - postgresql + - jfrog -dependencies: [] +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/README.md b/Ansible/collection/jfrog/ansible/roles/xray/README.md new file mode 100644 index 0000000..ba758f9 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/xray/README.md @@ -0,0 +1,22 @@ +# xray +The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. + +### Role Variables +* _xray_version_: The version of Artifactory to install. eg. "3.3.0" +* _jfrog_url_: This is the URL to the Artifactory base URL. eg. "http://ec2-54-237-207-135.compute-1.amazonaws.com" +* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _db_type_: This is the database type. eg. "postgresql" +* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" +* _db_url_: This is the database url. eg. "postgres://10.0.0.59:5432/xraydb?sslmode=disable" +* _db_user_: The database user to configure. eg. "xray" +* _db_password_: The database password to configure. "xray" +* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. + +## Example Playbook +``` +--- +- hosts: xray + roles: + - xray +``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml index 227ad9c..a5b8978 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml @@ -1,53 +1,16 @@ galaxy_info: - author: your name - description: your role description - company: your company (optional) + author: "Jeff Fry " + description: "The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required." + company: JFrog - # If the issue tracker for your role is not on github, uncomment the - # next line and provide a value - # issue_tracker_url: http://example.com/issue/tracker + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" - # Choose a valid license ID from https://spdx.org - some suggested licenses: - # - BSD-3-Clause (default) - # - MIT - # - GPL-2.0-or-later - # - GPL-3.0-only - # - Apache-2.0 - # - CC-BY-4.0 - license: license (GPL-2.0-or-later, MIT, etc) + license: license (GPL-2.0-or-later) min_ansible_version: 2.9 - # If this a Container Enabled role, provide the minimum Ansible Container version. - # min_ansible_container_version: + galaxy_tags: + - xray + - jfrog - # - # Provide a list of supported platforms, and for each platform a list of versions. - # If you don't wish to enumerate all versions for a particular platform, use 'all'. - # To view available platforms and versions (or releases), visit: - # https://galaxy.ansible.com/api/v1/platforms/ - # - # platforms: - # - name: Fedora - # versions: - # - all - # - 25 - # - name: SomePlatform - # versions: - # - all - # - 1.0 - # - 7 - # - 99.99 - - galaxy_tags: [] - # List tags for your role here, one per line. A tag is a keyword that describes - # and categorizes the role. Users find roles by searching for tags. Be sure to - # remove the '[]' above, if you add tags to this list. - # - # NOTE: A tag is limited to a single word comprised of alphanumeric characters. - # Maximum 20 tags per role. - -dependencies: [] - # List your role dependencies here, one per line. Be sure to remove the '[]' above, - # if you add dependencies to this list. - \ No newline at end of file +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml index fd879fe..2361d9f 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml @@ -44,7 +44,7 @@ owner: "{{ xray_user }}" group: "{{ xray_group }}" become: yes - + - name: configure system yaml template: src: system.yaml.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory b/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory deleted file mode 100644 index 878877b..0000000 --- a/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory +++ /dev/null @@ -1,2 +0,0 @@ -localhost - diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml b/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml deleted file mode 100644 index f296da6..0000000 --- a/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- hosts: localhost - remote_user: root - roles: - - xray \ No newline at end of file diff --git a/Ansible/examples/playbook-rt-ha.yml b/Ansible/examples/playbook-rt-ha.yml index 73c4791..151d2df 100644 --- a/Ansible/examples/playbook-rt-ha.yml +++ b/Ansible/examples/playbook-rt-ha.yml @@ -6,4 +6,4 @@ - hosts: primary:secondary roles: - artifactory - - artifactory-nginx-ssl \ No newline at end of file + - artifactory_nginx_ssl \ No newline at end of file diff --git a/Ansible/examples/playbook-ssl.yml b/Ansible/examples/playbook-ssl.yml index 359472b..33d84c2 100644 --- a/Ansible/examples/playbook-ssl.yml +++ b/Ansible/examples/playbook-ssl.yml @@ -6,4 +6,4 @@ - hosts: primary roles: - artifactory - - artifactory-nginx-ssl + - artifactory_nginx_ssl diff --git a/Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin b/Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock b/Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..ceb38cc88f35a1c014e507af3e74c5a2b2a4d9d1 GIT binary patch literal 17 ScmZQ}3FHq8H4&T700jUW9s)c7 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/.gradle/5.2.1/gc.properties b/Ansible/test/tests/.gradle/5.2.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/Ansible/test/tests/src/test/resources/testenv.yaml b/Ansible/test/tests/src/test/resources/testenv.yaml index 55ff648..9cb1760 100644 --- a/Ansible/test/tests/src/test/resources/testenv.yaml +++ b/Ansible/test/tests/src/test/resources/testenv.yaml @@ -1,6 +1,6 @@ artifactory: - url: urlval - external_ip: ipval + url: http://Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com + external_ip: Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com distribution: artifactory_ha rt_username: admin - rt_password: passval \ No newline at end of file + rt_password: password \ No newline at end of file