From 27d41ff3443325a1850dbc055b3fbd4e48831694 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Fri, 19 Jun 2020 10:57:05 -0700 Subject: [PATCH] Documentation updates. Fixes AWS test/playbook. --- Ansible/README.md | 16 ++- .../jfrog/installers/README.md | 102 +++++++----------- .../jfrog/installers/galaxy.yml | 6 +- .../installers/jfrog-installers-1.0.5.tar.gz | Bin 25876 -> 0 bytes .../installers/jfrog-installers-1.0.6.tar.gz | Bin 0 -> 25663 bytes Ansible/examples/playbook-rt-ha.yml | 4 + Ansible/examples/playbook-rt-xray.yml | 6 ++ Ansible/examples/playbook-rt.yml | 4 + Ansible/examples/playbook-ssl.yml | 4 + Ansible/examples/playbook-xray.yml | 2 + Ansible/pipelines.yaml | 12 +++ Ansible/test/aws/playbook.yaml | 4 +- 12 files changed, 89 insertions(+), 71 deletions(-) delete mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz create mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.6.tar.gz diff --git a/Ansible/README.md b/Ansible/README.md index f08e7dd..591c237 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -10,9 +10,23 @@ This Ansible directory consists of the following directories that support the JF ## Getting Started 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. + ``` ansible-galaxy collection install jfrog.installers ``` + + Ensure you reference the collection in your playbook when using these roles. + + ``` + --- + - hosts: xray + collections: + - jfrog.installers + roles: + - xray + + ``` + 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. 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. @@ -21,7 +35,7 @@ This Ansible directory consists of the following directories that support the JF 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. - ``` +``` ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" ``` diff --git a/Ansible/ansible_collections/jfrog/installers/README.md b/Ansible/ansible_collections/jfrog/installers/README.md index e0449a9..bb6b243 100644 --- a/Ansible/ansible_collections/jfrog/installers/README.md +++ b/Ansible/ansible_collections/jfrog/installers/README.md @@ -1,70 +1,42 @@ # JFrog Ansible Installers Collection -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. - -### 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. - -### xray -The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. - -## Vars Required -The following Vars must be configured. - -### databsase vars -* _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" } - -### artifactory vars -* _artifactory_version_: The version of Artifactory to install. eg. "7.4.1" -* _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_download_url_: This is the download URL for the JDBC driver for your database. eg. "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" -* _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 JDBC database url. eg. "jdbc:postgresql://10.0.0.120:5432/artifactory" -* _db_user_: The database user to configure. eg. "artifactory" -* _db_password_: The database password to configure. "Art1fact0ry" -* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" -* _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 (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 (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) -* _certificate_: This is the SSL cert. -* _certificate_key_: This is the SSL private key. - -### xray vars -* _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 Inventory and Playbooks -Example playbooks are located in the [examples](../examples) directory. This directory contains several example inventory and playbooks for different Artifactory, HA and Xray architectures. - -## Executing a Playbook -``` -ansible-playbook -i +This Ansible directory consists of the following directories that support the JFrog Ansible collection. + + * [ansible_collections directory](ansible_collections) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](ansible_collections/README.md) for details on the available roles and variables. + * [examples directory](examples) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. + * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. + * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. + + ## Getting Started + + 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. + + ``` + ansible-galaxy collection install jfrog.installers + ``` + + Ensure you reference the collection in your playbook when using these roles. + + ``` + --- + - hosts: xray + collections: + - jfrog.installers + roles: + - xray + + ``` + + 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. + + 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. + + 4. Create your playbook. Use one of the examples from the [examples directory](examples) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. + + 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. + + ``` +ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" ``` ## Autogenerating Master and Join Keys diff --git a/Ansible/ansible_collections/jfrog/installers/galaxy.yml b/Ansible/ansible_collections/jfrog/installers/galaxy.yml index 398304a..4c7bdc6 100644 --- a/Ansible/ansible_collections/jfrog/installers/galaxy.yml +++ b/Ansible/ansible_collections/jfrog/installers/galaxy.yml @@ -9,7 +9,7 @@ namespace: "jfrog" name: "installers" # The version of the collection. Must be compatible with semantic versioning -version: "1.0.5" +version: "1.0.6" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: "README.md" @@ -52,9 +52,7 @@ dependencies: {} repository: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to any online docs -documentation: - - "https://github.com/jfrog/JFrog-Cloud-Installers/blob/master/Ansible/README.md" - - "https://www.jfrog.com/confluence/display/JFROG/" +documentation: "https://github.com/jfrog/JFrog-Cloud-Installers/blob/master/Ansible/README.md" # The URL to the homepage of the collection/project homepage: "https://github.com/jfrog/JFrog-Cloud-Installers/" diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz deleted file mode 100644 index 80395da2affa4a40d7c1e1fb9e0582c3b248c7f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25876 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%0D1_s(-AY?!U3R%f|{qYO1_>TYq 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 Sf34@hus6%Y7Z6I35dI6=$Yo&w literal 0 HcmV?d00001 diff --git a/Ansible/examples/playbook-rt-ha.yml b/Ansible/examples/playbook-rt-ha.yml index 151d2df..57fc65c 100644 --- a/Ansible/examples/playbook-rt-ha.yml +++ b/Ansible/examples/playbook-rt-ha.yml @@ -1,9 +1,13 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary:secondary + collections: + - jfrog.installers roles: - artifactory - artifactory_nginx_ssl \ No newline at end of file diff --git a/Ansible/examples/playbook-rt-xray.yml b/Ansible/examples/playbook-rt-xray.yml index 9c0ff31..6081198 100644 --- a/Ansible/examples/playbook-rt-xray.yml +++ b/Ansible/examples/playbook-rt-xray.yml @@ -1,12 +1,18 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: artifactory + collections: + - jfrog.installers roles: - artifactory - hosts: xray + collections: + - jfrog.installers roles: - xray \ No newline at end of file diff --git a/Ansible/examples/playbook-rt.yml b/Ansible/examples/playbook-rt.yml index 48d7c1e..72ffbec 100644 --- a/Ansible/examples/playbook-rt.yml +++ b/Ansible/examples/playbook-rt.yml @@ -1,8 +1,12 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary + collections: + - jfrog.installers roles: - artifactory diff --git a/Ansible/examples/playbook-ssl.yml b/Ansible/examples/playbook-ssl.yml index 33d84c2..7370111 100644 --- a/Ansible/examples/playbook-ssl.yml +++ b/Ansible/examples/playbook-ssl.yml @@ -1,9 +1,13 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary + collections: + - jfrog.installers roles: - artifactory - artifactory_nginx_ssl diff --git a/Ansible/examples/playbook-xray.yml b/Ansible/examples/playbook-xray.yml index 1f19914..3f0e5a4 100644 --- a/Ansible/examples/playbook-xray.yml +++ b/Ansible/examples/playbook-xray.yml @@ -1,4 +1,6 @@ --- - hosts: xray + collections: + - jfrog.installers roles: - xray \ No newline at end of file diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 45a5731..96a1271 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -34,6 +34,12 @@ pipelines: - sudo apt -y --allow-unauthenticated install ansible - sudo pip install packaging - sudo pip install boto3 botocore + - pwd + - ls + - ls workspace + - ls dependencyState + - ls dependencyState/resources + - ls dependencyState/resources/ansibleRepo - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" @@ -84,6 +90,12 @@ pipelines: - sudo pip install packaging - sudo pip install msrestazure - sudo pip install ansible[azure] + - pwd + - ls + - ls workspace + - ls dependencyState + - ls dependencyState/resources + - ls dependencyState/resources/ansibleRepo - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index 26cc90d..a859072 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -37,7 +37,9 @@ db_url: "jdbc:postgresql://{{ AWSDeployment.stack_outputs.DBInstancePrivate }}:5432/artifactory" server_name: "{{ AWSDeployment.stack_outputs.ALBHostName }}" artifactory_is_primary: true - artifactory_license_file: "{{ lookup('env', 'artifactory_license_file') }}" + artifactory_license1: "{{ lookup('env', 'artifactory_license1') }}" + artifactory_license2: "{{ lookup('env', 'artifactory_license2') }}" + artifactory_license3: "{{ lookup('env', 'artifactory_license3') }}" groups: - artifactory