Merge pull request #48 from Serienmorder/master

Add imdopotence for artifactory
This commit is contained in:
Jeff Fry
2020-10-28 09:08:10 -07:00
committed by GitHub
14 changed files with 168 additions and 24 deletions

View File

@@ -2,6 +2,12 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [1.1.1] - 2020-10-15
- added idempotence to artifactory installer
- added fix for derby deployments
- Migration to reduce changes during playbook runs contains breaking changes. You either must run once before upgrade, or provide playbook with valid credentials to access version information for it to perform properly.
- First time installers need not worry about above
## [1.1.0] - 2020-09-27 ## [1.1.0] - 2020-09-27
- Validated for Artifactory 7.7.8 and Xray 3.8.6. - Validated for Artifactory 7.7.8 and Xray 3.8.6.

View File

@@ -12,6 +12,7 @@ This Ansible directory consists of the following directories that support the JF
| collection_version | artifactory_version | xray_version | | collection_version | artifactory_version | xray_version |
|--------------------|---------------------|--------------| |--------------------|---------------------|--------------|
| 1.1.1 | 7.10.2 | 3.9.1 |
| 1.1.0 | 7.7.8 | 3.8.6 | | 1.1.0 | 7.7.8 | 3.8.6 |
| 1.0.9 | 7.7.3 | 3.8.0 | | 1.0.9 | 7.7.3 | 3.8.0 |
| 1.0.8 | 7.7.3 | 3.8.0 | | 1.0.8 | 7.7.3 | 3.8.0 |

View File

@@ -9,7 +9,7 @@ namespace: "jfrog"
name: "installers" name: "installers"
# The version of the collection. Must be compatible with semantic versioning # The version of the collection. Must be compatible with semantic versioning
version: "1.1.0" version: "1.1.1"
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection # The path to the Markdown (.md) readme file. This path is relative to the root of the collection
readme: "README.md" readme: "README.md"

View File

@@ -1,6 +1,8 @@
# artifactory # 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.
1.1.1 contains breaking changes. To mitigate this, use the role before doing any upgrades, let it mitigate the path changes, and then run again with your upgrade.
## Role Variables ## Role Variables
* _artifactory_version_: The version of Artifactory to install. eg. "7.4.1" * _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). * _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).

View File

@@ -50,3 +50,7 @@ service_list:
# if this is an upgrade # if this is an upgrade
artifactory_upgrade_only: false artifactory_upgrade_only: false
#default username and password
artifactory_app_username: admin
artifactory_app_user_pass: password

View File

@@ -52,8 +52,30 @@
until: downloadartifactory is succeeded until: downloadartifactory is succeeded
retries: 3 retries: 3
- name: MV untar directory to artifactory home - name: Create artifactory home folder
command: "mv {{ artifactory_untar_home }} {{ artifactory_home }}" file:
state: directory
path: "{{ artifactory_home }}"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
- name: Create Symlinks for var folder
file:
state: link
src: "{{ artifactory_untar_home }}/var"
dest: "{{ artifactory_home }}/var"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
- name: Create Symlinks for app folder
file:
state: link
src: "{{ artifactory_untar_home }}/app"
dest: "{{ artifactory_home }}/app"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes become: yes
- name: ensure artifactory_file_store_dir exists - name: ensure artifactory_file_store_dir exists
@@ -180,7 +202,7 @@
- name: Ensure permissions are correct - name: Ensure permissions are correct
file: file:
path: "{{ artifactory_home }}" path: "{{ jfrog_home_directory }}"
group: "{{ artifactory_group }}" group: "{{ artifactory_group }}"
owner: "{{ artifactory_user }}" owner: "{{ artifactory_user }}"
recurse: yes recurse: yes

View File

@@ -0,0 +1,34 @@
---
- name: MV artifactory home to artifactory untar home
command: "mv {{ artifactory_home }} {{ temp_untar_home }}"
become: yes
- name: Ensure untar home permissions are correct
file:
state: directory
path: "{{ temp_untar_home }}"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
- name: Create artifactory home folder
file:
state: directory
path: "{{ artifactory_home }}"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
- name: Create Symlinks for var folder
file:
state: link
src: "{{ temp_untar_home }}/var"
dest: "{{ artifactory_home }}/var"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
- name: Create Symlinks for app folder
file:
state: link
src: "{{ temp_untar_home }}/app"
dest: "{{ artifactory_home }}/app"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes

View File

@@ -1,3 +1,41 @@
- name: Rectify Legacy Installation Block
block:
- name: Check to see if artifactory has a service and stop it
service:
name: artifactory
state: stopped
become: yes
- name: Check symlink method
stat:
path: /opt/jfrog/artifactory/app
register: newMethod
- name: Check artifactory version
uri:
url: "{{ web_method }}://{{ artifactory_server_url }}:{{ url_port }}/artifactory/api/system/version"
url_username: "{{ artifactory_app_username }}"
url_password: "{{ artifactory_app_user_pass }}"
register: artifactory_installed_version
- name: Debug defunct installation
debug:
var: artifactory_installed_version.json.version
- name: Setup temporary untar home
set_fact:
temp_untar_home: "{{ jfrog_home_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_installed_version }}"
- name: Rectify legacy installation
include_tasks: "legacy_migration.yml"
when: (not newMethod.stat.islnk) and newMethod.stat.exists
rescue:
- name: Check to see if artifactory has a service and stop it
service:
name: artifactory
state: stopped
- name: Setup temporary untar home (assuming version is set var for version)
set_fact:
temp_untar_home: "{{ jfrog_home_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}"
- name: Rectify legacy installation
include_tasks: "legacy_migration.yml"
when: (not newMethod.stat.islnk) and newMethod.stat.exists
always:
- name: perform installation - name: perform installation
include_tasks: "install.yml" include_tasks: "install.yml"
when: not artifactory_upgrade_only when: not artifactory_upgrade_only

View File

@@ -14,6 +14,19 @@
state: directory state: directory
become: yes become: yes
- name: Local Copy artifactory
unarchive:
src: "{{ local_artifactory_tar }}"
dest: "{{ jfrog_home_directory }}"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
creates: "{{ artifactory_untar_home }}"
become: yes
when: local_artifactory_tar is defined
register: downloadartifactory
until: downloadartifactory is succeeded
retries: 3
- name: download artifactory - name: download artifactory
unarchive: unarchive:
src: "{{ artifactory_tar }}" src: "{{ artifactory_tar }}"
@@ -23,24 +36,42 @@
group: "{{ artifactory_group }}" group: "{{ artifactory_group }}"
creates: "{{ artifactory_untar_home }}" creates: "{{ artifactory_untar_home }}"
become: yes become: yes
when: artifactory_tar is defined
register: downloadartifactory register: downloadartifactory
until: downloadartifactory is succeeded until: downloadartifactory is succeeded
retries: 3 retries: 3
- name: Delete artifactory app #- name: Delete artifactory app
# file:
# path: "{{ artifactory_home }}/app"
# state: absent
# become: yes
#- name: CP new app to artifactory app
# command: "cp -r {{ artifactory_untar_home }}/app {{ artifactory_home }}/app"
# become: yes
#- name: Delete untar directory
# file:
# path: "{{ artifactory_untar_home }}"
# state: absent
# become: yes
- name: Create Symlinks for app folder
file: file:
path: "{{ artifactory_home }}/app" state: link
state: absent src: "{{ artifactory_untar_home }}/app"
dest: "{{ artifactory_home }}/app"
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes become: yes
- name: CP new app to artifactory app - name: Ensure permissions are correct
command: "cp -r {{ artifactory_untar_home }}/app {{ artifactory_home }}/app"
become: yes
- name: Delete untar directory
file: file:
path: "{{ artifactory_untar_home }}" path: "{{ jfrog_home_directory }}"
state: absent group: "{{ artifactory_group }}"
owner: "{{ artifactory_user }}"
recurse: yes
become: yes become: yes
- name: start and enable the primary node - name: start and enable the primary node

View File

@@ -32,7 +32,13 @@ shared:
## Example for mysql/postgresql ## Example for mysql/postgresql
type: "{{ db_type }}" type: "{{ db_type }}"
{%+ if db_type == 'derby' -%}
# driver: "{{ db_driver }}"
# url: "{{ db_url }}"
# username: "{{ db_user }}"
{%+ else -%}
driver: "{{ db_driver }}" driver: "{{ db_driver }}"
url: "{{ db_url }}" url: "{{ db_url }}"
username: "{{ db_user }}" username: "{{ db_user }}"
{%+ endif -%}
password: "{{ db_password }}" password: "{{ db_password }}"

0
Openshift4/helm/openshift-xray/LICENSE Executable file → Normal file
View File

View File