JFrog Ansible Installers Collection
This Ansible directory consists of the following directories that support the JFrog Ansible collection.
- ansible_collections directory - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection README for details on the available roles and variables.
- examples directory - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups.
- infra directory - This directory contains example infrastructure templates that can be used for testing and as example deployments.
- test directory - 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
-
Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub.
ansible-galaxy collection install jfrog.installersEnsure you reference the collection in your playbook when using these roles.
--- - hosts: xray collections: - jfrog.installers roles: - xray -
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.
-
Create your inventory file. Use one of the examples from the examples directory to construct an inventory file (hosts.yml) with the host addresses and variables.
-
Create your playbook. Use one of the examples from the examples directory to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software.
-
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
You may want to auto-generate your master amd join keys and apply it to all the nodes.
ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)"
Using Ansible Vault to Encrypt Vars
Some vars you may want to keep secret. You may put these vars into a separate file and encrypt them using Ansible Vault.
ansible-vault encrypt secret-vars.yml --vault-password-file ~/.vault_pass.txt
then in your playbook include the secret vars file.
- hosts: primary
vars_files:
- ./vars/secret-vars.yml
- ./vars/vars.yml
roles:
- artifactory
Bastion Hosts
In many cases, you may want to run this Ansible collection through a Bastion host to provision JFrog servers. You can include the following Var for a host or group of hosts:
ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A user@host -W %h:%p"'
eg.
ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"'
Building the Collection Archive
- Go to the ansible_collections/jfrog/installers directory.
- Update the galaxy.yml meta file as needed. Update the version.
- Build the archive.
ansible-galaxy collection build