DevOps Tools/Repository Management/Artifactory

From r00tedvw.com wiki
(Difference between revisions)
Jump to: navigation, search
(Repository)
(Repository)
Line 34: Line 34:
 
#!/bin/bash
 
#!/bin/bash
 
export ARTIFACTORY_HOME=/opt/jfrog/artifactory</nowiki>
 
export ARTIFACTORY_HOME=/opt/jfrog/artifactory</nowiki>
 +
 +
===Install Database===
 +
<nowiki>~$ sudo yum install -y mariadb-server
 +
~$ sudo systemctl start mariadb.service
 +
~$ sudo systemctl enable mariadb.service</nowiki>
 +
Configure the Database
 +
<nowiki>~$ mysql_secure_installation
 +
Enter current password for root (enter for none):
 +
Set root password? [Y/n] y
 +
New password:
 +
Re-enter new password:
 +
Remove anonymous users? [Y/n] y
 +
Disallow root login remotely? [Y/n] y
 +
Remove test database and access to it? [Y/n] y
 +
Reload privilege tables now? [Y/n] y</nowiki>
  
 
=Uploading bulk=
 
=Uploading bulk=

Revision as of 18:21, 22 August 2020

Artifactory

Contents

Installation

Docker

Using docker you can pull the container from jfrog and then mount a local volume to house the configuration files and data.
https://www.jfrog.com/confluence/display/RTF/Installing+with+Docker

~$ sudo mkdir -p /opt/jfrog/artifactory
~$ sudo chown -R 1030:1030 /opt/jfrog/artifactory
~$ docker pull docker.bintray.io/jfrog/artifactory-oss:latest
~$ docker run --name artifactory-oss -d -v /opt/jfrog/artifactory:/var/opt/jfrog/artifactory -p 8081:8081 docker.bintray.io/jfrog/artifactory-oss:latest

Repository

Done on CentOS7

Dependencies

~$ sudo yum install -y wget java-1.8.0-openjdk-devel

Set the Java variables.

~$ sudo vim /etc/profile.d/java.sh
#!/bin/bash
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
~$ source /etc/profile.d/java.sh
~$ $ echo "JAVA_HOME: $JAVA_HOME"; echo "PATH: $PATH"; echo "CLASSPATH: $CLASSPATH"
JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
PATH: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/r00t/.local/bin:/home/fgiuliani/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/bin
CLASSPATH: .:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/lib:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/lib:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/lib/tools.jar

Add artifactory repo and install

~$ wget https://bintray.com/jfrog/artifactory-rpms/rpm -O bintray-jfrog-artifactory-oss-rpms.repo
~$ sudo mv bintray-jfrog-artifactory-oss-rpms.repo /etc/yum.repos.d/
~$ sudo yum install -y jfrog-artifactory-oss

Add the Artifactory home environment variable

~$ sudo vim /etc/profile.d/artifactory.sh
#!/bin/bash
export ARTIFACTORY_HOME=/opt/jfrog/artifactory

Install Database

~$ sudo yum install -y mariadb-server
~$ sudo systemctl start mariadb.service
~$ sudo systemctl enable mariadb.service

Configure the Database

~$ mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Uploading bulk

quick script to upload in bulk and add the sha1 checksum.

#!/bin/bash
FILES=/Users/r00t/Downloads/*
username=r00t
password=FDOdohfsohf347fsHDJDokhf89
artifactoryurl=http://usa-rnc-dockerhost:8081/artifactory/generic-local/
for f in $FILES
do
	echo "Uploading $f to artifactory"
	checksum=$(shasum -a 1 $f | awk '{ print $1 }')
	file=$(printf $f | awk -F "/" '{ print $NF}')
	curl --header "X-Checksum-Sha1:${checksum}" -u $username:$password -T $f "$artifactoryurl/$file"
done

Using API token

also calculating all the hashes with openssl

#!/bin/bash

url=http://dockerhost:8081/artifactory/generic-local/SubFolder
apikey=697929fdb66e46e1db0b4ec1fd4292028a853c7879a969b3e0188b14ee24d55d98d7e8110c2579c0
localfile=/Users/r00t/test.html
FILES=/Users/r00t/Downloads/crap/artifactoryfiles/*
search='partialfilename'

for f in $FILES
do

	if [[ $f =~ "$search" ]]; then
		file=$(basename $f)
		sha1checksum=$(openssl sha1 $f | awk '{ print $2 }')
		md5checksum=$(openssl md5 $f | awk '{ print $2 }')
		sha256checksum=$(openssl sha256 $f | awk '{ print $2 }')

		echo "uploading file: $f"
		curl --header "X-JFrog-Art-Api:${apikey}" \
     	     	--header "X-Checksum-Sha1:${sha1checksum}" \
     	     	--header "X-Checksum-MD5:${md5checksum}" \
     	     	--header "X-Checksum-Sha256:${sha256checksum}" \
     	     	--upload-file $f \
     	     	-X PUT "$url/$file"
	fi
done

Downloading Bulk

Done on a mac

#!/bin/bash

url=http://dockerhost:8081
repo=generic-local
path=/SubFolder
apikey=697929fdb66e46e1db0b4ec1fd4292028a853c7879a969b3e0188b14ee24d55d98d7e8110c2579c0

for f in $(curl $url/artifactory/api/storage/$repo$path | jq '.children[].uri' | sed -E -e 's/"|"\///g')
do
	echo "downloading file: $f"
	curl --header "X-JFrog-Art-Api:${apikey}" --remote-name $url/artifactory/$repo$path/$f
done 

Deleting Bulk

If you need to delete a series of files in bulk, using a loose matching search term (regex)

#!/bin/bash

url=http://dockerhost:8081
repo=generic-local
path=/SubFolder
apikey=697929fdb66e46e1db0b4ec1fd4292028a853c7879a969b3e0188b14ee24d55d98d7e8110c2579c0
search='partialfilename'

for f in $(curl $url/artifactory/api/storage/$repo$path | jq '.children[].uri' | sed -E -e 's/"|"\///g')
do
	if [[ $f =~ "$search" ]]; then
		echo "deleting file: $f"
		curl --header "X-JFrog-Art-Api:${apikey}" -X DELETE $url/artifactory/$repo$path/$f
	fi
done
Personal tools
Namespaces

Variants
Actions
Navigation
Mediawiki
Confluence
DevOps Tools
Open Source Products
Ubuntu
Ubuntu 22
Mac OSX
Oracle Linux
AWS
Windows
OpenVPN
Grafana
InfluxDB2
TrueNas
OwnCloud
Pivotal
osTicket
OTRS
phpBB
WordPress
VmWare ESXI 5.1
Crypto currencies
HTML
CSS
Python
Java Script
PHP
Raspberry Pi
Canvas LMS
Kaltura Media Server
Plex Media Server
MetaSploit
Zoneminder
ShinobiCE
Photoshop CS2
Fortinet
Uploaded
Certifications
General Info
Games
Meal Plans
NC Statutes
2020 Election
Volkswagen
Covid
NCDMV
Toolbox