mirror of
https://github.com/ZwareBear/JFrog-Cloud-Installers.git
synced 2026-01-21 04:06:55 -06:00
[ansible] JFrog Platform 7.18.6
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# 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.
|
||||
|
||||
## Role Variables
|
||||
* _server_name_: **mandatory** This is the server name. eg. "artifactory.54.175.51.178.xip.io"
|
||||
* _artifactory_upgrade_only_: Perform an software upgrade only. Default is false.
|
||||
|
||||
Additional variables can be found in [defaults/main.yml](./defaults/main.yml).
|
||||
|
||||
## Example Playbook
|
||||
```
|
||||
---
|
||||
- hosts: artifactory_servers
|
||||
roles:
|
||||
- artifactory
|
||||
```
|
||||
|
||||
## Upgrades
|
||||
The Artifactory role supports software upgrades. To use a role to perform a software upgrade only, use the _artifactory_upgrade_only_ variable and specify the version. See the following example.
|
||||
|
||||
```
|
||||
- hosts: artifactory_servers
|
||||
vars:
|
||||
artifactory_version: "{{ lookup('env', 'artifactory_version_upgrade') }}"
|
||||
artifactory_upgrade_only: true
|
||||
roles:
|
||||
- artifactory
|
||||
```
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
# defaults file for artifactory
|
||||
# indicates where this collection was downloaded from (galaxy, automation_hub, standalone)
|
||||
ansible_marketplace: standalone
|
||||
|
||||
# Set this to true when SSL is enabled (to use artifactory_nginx_ssl role), default to false (implies artifactory uses artifactory_nginx role )
|
||||
artifactory_nginx_ssl_enabled: false
|
||||
|
||||
# Set this to false when ngnix is disabled, defaults to true (implies artifactory uses artifactory_nginx role )
|
||||
artifactory_nginx_enabled: true
|
||||
|
||||
# Provide single node license
|
||||
# artifactory_single_license:
|
||||
|
||||
# Provide individual (HA) licenses file separated by new line and 2-space indentation and set artifactory_ha_enabled: true.
|
||||
# Example:
|
||||
# artifactory_licenses: |-
|
||||
# <license_1>
|
||||
|
||||
# <license_2>
|
||||
|
||||
# <license_3>
|
||||
|
||||
# To enable HA, set to true
|
||||
artifactory_ha_enabled: false
|
||||
|
||||
# By default, all nodes are primary (CNHA) - https://www.jfrog.com/confluence/display/JFROG/High+Availability#HighAvailability-Cloud-NativeHighAvailability
|
||||
artifactory_taskAffinity: any
|
||||
|
||||
# The location where Artifactory should install.
|
||||
jfrog_home_directory: /opt/jfrog
|
||||
|
||||
# The location where Artifactory should store data.
|
||||
artifactory_file_store_dir: /data
|
||||
|
||||
# Pick the Artifactory flavour to install, can be also cpp-ce, jcr, pro.
|
||||
artifactory_flavour: pro
|
||||
|
||||
artifactory_extra_java_opts: -server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC
|
||||
artifactory_system_yaml_template: system.yaml.j2
|
||||
artifactory_tar: https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/{{ artifactory_version }}/jfrog-artifactory-pro-{{ artifactory_version }}-linux.tar.gz
|
||||
artifactory_home: "{{ jfrog_home_directory }}/artifactory"
|
||||
artifactory_untar_home: "{{ jfrog_home_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}"
|
||||
|
||||
postgres_driver_download_url: https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.20/postgresql-42.2.20.jar
|
||||
|
||||
artifactory_user: artifactory
|
||||
artifactory_group: artifactory
|
||||
|
||||
artifactory_daemon: artifactory
|
||||
|
||||
artifactory_uid: 1030
|
||||
artifactory_gid: 1030
|
||||
|
||||
# if this is an upgrade
|
||||
artifactory_upgrade_only: false
|
||||
|
||||
#default username and password
|
||||
artifactory_admin_username: admin
|
||||
artifactory_admin_password: password
|
||||
|
||||
|
||||
# Provide binarystore XML content below with 2-space indentation
|
||||
artifactory_binarystore: |-
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<config version="2">
|
||||
<chain template="cluster-file-system"/>
|
||||
</config>
|
||||
|
||||
# Provide systemyaml content below with 2-space indentation
|
||||
artifactory_systemyaml: |-
|
||||
configVersion: 1
|
||||
shared:
|
||||
extraJavaOpts: "{{ artifactory_extra_java_opts }}"
|
||||
node:
|
||||
id: {{ ansible_hostname }}
|
||||
ip: {{ ansible_host }}
|
||||
taskAffinity: {{ artifactory_taskAffinity }}
|
||||
haEnabled: {{ artifactory_ha_enabled }}
|
||||
database:
|
||||
type: "{{ artifactory_db_type }}"
|
||||
driver: "{{ artifactory_db_driver }}"
|
||||
url: "{{ artifactory_db_url }}"
|
||||
username: "{{ artifactory_db_user }}"
|
||||
password: "{{ artifactory_db_password }}"
|
||||
router:
|
||||
entrypoints:
|
||||
internalPort: 8046
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
# handlers file for distribution
|
||||
- name: restart artifactory
|
||||
become: yes
|
||||
systemd:
|
||||
name: "{{ artifactory_daemon }}"
|
||||
state: restarted
|
||||
@@ -0,0 +1,16 @@
|
||||
galaxy_info:
|
||||
author: "JFrog Maintainers Team <installers@jfrog.com>"
|
||||
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
|
||||
|
||||
issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues"
|
||||
|
||||
license: license (Apache-2.0)
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
galaxy_tags:
|
||||
- artifactory
|
||||
- jfrog
|
||||
|
||||
dependencies: []
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
- debug:
|
||||
msg: "Performing installation of Artifactory version : {{ artifactory_version }} "
|
||||
|
||||
- name: install nginx
|
||||
include_role:
|
||||
name: artifactory_nginx
|
||||
when: artifactory_nginx_enabled == true
|
||||
|
||||
- name: install nginx with SSL
|
||||
include_role:
|
||||
name: artifactory_nginx_ssl
|
||||
when: artifactory_nginx_ssl_enabled == true
|
||||
|
||||
- name: Ensure group artifactory exist
|
||||
become: yes
|
||||
group:
|
||||
name: "{{ artifactory_group }}"
|
||||
gid: "{{ artifactory_gid }}"
|
||||
state: present
|
||||
|
||||
- name: Ensure user artifactory exist
|
||||
become: yes
|
||||
user:
|
||||
uid: "{{ artifactory_uid }}"
|
||||
name: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
create_home: yes
|
||||
home: "{{ artifactory_home }}"
|
||||
shell: /bin/bash
|
||||
state: present
|
||||
|
||||
- name: Download artifactory
|
||||
become: yes
|
||||
unarchive:
|
||||
src: "{{ artifactory_tar }}"
|
||||
dest: "{{ jfrog_home_directory }}"
|
||||
remote_src: yes
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
creates: "{{ artifactory_untar_home }}"
|
||||
when: artifactory_tar is defined
|
||||
register: downloadartifactory
|
||||
until: downloadartifactory is succeeded
|
||||
retries: 3
|
||||
|
||||
- name: Check if app directory exists
|
||||
become: yes
|
||||
stat:
|
||||
path: "{{ artifactory_home }}/app"
|
||||
register: app_dir_check
|
||||
|
||||
- name: Copy untar directory to artifactory home
|
||||
become: yes
|
||||
command: "cp -r {{ artifactory_untar_home }}/. {{ artifactory_home }}"
|
||||
when: not app_dir_check.stat.exists
|
||||
|
||||
- name: Create required directories
|
||||
become: yes
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
recurse: yes
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
loop:
|
||||
- "{{ artifactory_file_store_dir }}"
|
||||
- "{{ artifactory_home }}/var/data"
|
||||
- "{{ artifactory_home }}/var/etc"
|
||||
- "{{ artifactory_home }}/var/etc/security/"
|
||||
- "{{ artifactory_home }}/var/etc/artifactory/info/"
|
||||
|
||||
- name: Configure systemyaml
|
||||
become: yes
|
||||
template:
|
||||
src: "{{ artifactory_system_yaml_template }}"
|
||||
dest: "{{ artifactory_home }}/var/etc/system.yaml"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure master key
|
||||
become: yes
|
||||
copy:
|
||||
dest: "{{ artifactory_home }}/var/etc/security/master.key"
|
||||
content: |
|
||||
{{ master_key }}
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
mode: 0640
|
||||
|
||||
- name: Configure join key
|
||||
become: yes
|
||||
copy:
|
||||
dest: "{{ artifactory_home }}/var/etc/security/join.key"
|
||||
content: |
|
||||
{{ join_key }}
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
mode: 0640
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure installer info
|
||||
become: yes
|
||||
template:
|
||||
src: installer-info.json.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/info/installer-info.json"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure binary store
|
||||
become: yes
|
||||
template:
|
||||
src: binarystore.xml.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/binarystore.xml"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure single license
|
||||
become: yes
|
||||
template:
|
||||
src: artifactory.lic.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.lic"
|
||||
when: artifactory_single_license is defined
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure HA licenses
|
||||
become: yes
|
||||
template:
|
||||
src: artifactory.cluster.license.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license"
|
||||
when: artifactory_licenses is defined
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Download database driver
|
||||
become: yes
|
||||
get_url:
|
||||
url: "{{ postgres_driver_download_url }}"
|
||||
dest: "{{ artifactory_home }}/var/bootstrap/artifactory/tomcat/lib"
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
when: postgres_driver_download_url is defined
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Create artifactory service
|
||||
become: yes
|
||||
shell: "{{ artifactory_home }}/app/bin/installService.sh"
|
||||
|
||||
- name: Ensure permissions are correct
|
||||
become: yes
|
||||
file:
|
||||
path: "{{ jfrog_home_directory }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
owner: "{{ artifactory_user }}"
|
||||
recurse: yes
|
||||
|
||||
- name: Restart artifactory
|
||||
meta: flush_handlers
|
||||
|
||||
- name : Wait for artifactory to be fully deployed
|
||||
uri: url=http://127.0.0.1:8082/router/api/v1/system/health timeout=130
|
||||
register: result
|
||||
until: result.status == 200
|
||||
retries: 25
|
||||
delay: 5
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: perform installation
|
||||
include_tasks: "install.yml"
|
||||
when: not artifactory_upgrade_only
|
||||
- name: perform upgrade
|
||||
include_tasks: "upgrade.yml"
|
||||
when: artifactory_upgrade_only
|
||||
@@ -0,0 +1,105 @@
|
||||
---
|
||||
- debug:
|
||||
msg: "Performing upgrade of Artifactory version to : {{ artifactory_version }} "
|
||||
|
||||
- name: Stop artifactory
|
||||
become: yes
|
||||
systemd:
|
||||
name: "{{ artifactory_daemon }}"
|
||||
state: stopped
|
||||
|
||||
- name: Ensure jfrog_home_directory exists
|
||||
become: yes
|
||||
file:
|
||||
path: "{{ jfrog_home_directory }}"
|
||||
state: directory
|
||||
|
||||
- name: Download artifactory for upgrade
|
||||
become: yes
|
||||
unarchive:
|
||||
src: "{{ artifactory_tar }}"
|
||||
dest: "{{ jfrog_home_directory }}"
|
||||
remote_src: yes
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
creates: "{{ artifactory_untar_home }}"
|
||||
when: artifactory_tar is defined
|
||||
register: downloadartifactory
|
||||
until: downloadartifactory is succeeded
|
||||
retries: 3
|
||||
|
||||
- name: Delete artifactory app directory
|
||||
become: yes
|
||||
file:
|
||||
path: "{{ artifactory_home }}/app"
|
||||
state: absent
|
||||
|
||||
- name: Copy new app to artifactory app
|
||||
become: yes
|
||||
command: "cp -r {{ artifactory_untar_home }}/app/. {{ artifactory_home }}/app"
|
||||
|
||||
- name: Configure join key
|
||||
become: yes
|
||||
copy:
|
||||
dest: "{{ artifactory_home }}/var/etc/security/join.key"
|
||||
content: |
|
||||
{{ join_key }}
|
||||
owner: "{{ artifactory_user }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
mode: 0640
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure single license
|
||||
become: yes
|
||||
template:
|
||||
src: artifactory.lic.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.lic"
|
||||
when: artifactory_single_license is defined
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure HA licenses
|
||||
become: yes
|
||||
template:
|
||||
src: artifactory.cluster.license.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license"
|
||||
when: artifactory_licenses is defined
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure installer info
|
||||
become: yes
|
||||
template:
|
||||
src: installer-info.json.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/info/installer-info.json"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure binary store
|
||||
become: yes
|
||||
template:
|
||||
src: binarystore.xml.j2
|
||||
dest: "{{ artifactory_home }}/var/etc/artifactory/binarystore.xml"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Configure systemyaml
|
||||
become: yes
|
||||
template:
|
||||
src: "{{ artifactory_system_yaml_template }}"
|
||||
dest: "{{ artifactory_home }}/var/etc/system.yaml"
|
||||
notify: restart artifactory
|
||||
|
||||
- name: Ensure permissions are correct
|
||||
become: yes
|
||||
file:
|
||||
path: "{{ jfrog_home_directory }}"
|
||||
group: "{{ artifactory_group }}"
|
||||
owner: "{{ artifactory_user }}"
|
||||
recurse: yes
|
||||
|
||||
- name: Restart artifactory
|
||||
meta: flush_handlers
|
||||
|
||||
- name : Wait for artifactory to be fully deployed
|
||||
uri: url=http://127.0.0.1:8082/router/api/v1/system/health timeout=130
|
||||
register: result
|
||||
until: result.status == 200
|
||||
retries: 25
|
||||
delay: 5
|
||||
@@ -0,0 +1,3 @@
|
||||
{% if (artifactory_licenses) and (artifactory_licenses|length > 0) %}
|
||||
{{ artifactory_licenses }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% if (artifactory_single_license) and (artifactory_single_license|length > 0) %}
|
||||
{{ artifactory_single_license }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% if (artifactory_binarystore) and (artifactory_binarystore|length > 0) %}
|
||||
{{ artifactory_binarystore }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,9 @@
|
||||
{{ ansible_managed | comment }}
|
||||
{
|
||||
"productId": "Ansible_Artifactory/{{ platform_collection_version }}-{{ artifactory_version }}",
|
||||
"features": [
|
||||
{
|
||||
"featureId": "Channel/{{ ansible_marketplace }}"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% if (artifactory_systemyaml) and (artifactory_systemyaml|length > 0) %}
|
||||
{{ artifactory_systemyaml }}
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user