<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eldad Assis</title>
    <description>The latest articles on DEV Community by Eldad Assis (@eldadak).</description>
    <link>https://dev.to/eldadak</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F248503%2F2aa0a3e5-b472-4cc7-884d-58a3ea161c85.jpg</url>
      <title>DEV Community: Eldad Assis</title>
      <link>https://dev.to/eldadak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eldadak"/>
    <language>en</language>
    <item>
      <title>List Artifactory pro admin users - one liner</title>
      <dc:creator>Eldad Assis</dc:creator>
      <pubDate>Sat, 25 Apr 2020 09:11:51 +0000</pubDate>
      <link>https://dev.to/jfrog/list-artifactory-pro-admin-users-one-liner-2noi</link>
      <guid>https://dev.to/jfrog/list-artifactory-pro-admin-users-one-liner-2noi</guid>
      <description>&lt;p&gt;When you have many users in &lt;a href="https://jfrog.com/artifactory/"&gt;Artifactory&lt;/a&gt;, you can get all admins with a quick one liner using the &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Artifactory+REST+API"&gt;REST API&lt;/a&gt; from Linux command line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for name in \
  $(curl -s -uadmin:password https://host/artifactory/api/security/users | jq ".[].name" | tr -d '"'); do \
  echo \
  "$name: $(curl -s -uadmin:password https://host/artifactory/api/security/users/$name | jq '.admin')"; \
done
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Easy!&lt;/p&gt;

</description>
      <category>artifactory</category>
      <category>permissions</category>
      <category>restapi</category>
    </item>
    <item>
      <title>Open a command prompt in a Kubernetes cluster</title>
      <dc:creator>Eldad Assis</dc:creator>
      <pubDate>Mon, 09 Mar 2020 13:06:03 +0000</pubDate>
      <link>https://dev.to/eldadak/open-a-command-prompt-in-a-kubernetes-cluster-206g</link>
      <guid>https://dev.to/eldadak/open-a-command-prompt-in-a-kubernetes-cluster-206g</guid>
      <description>&lt;p&gt;For cases where I need to open a command prompt in a running container in my Kubernetes cluster, I simply run the following&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Ubuntu
kubectl run my-ubuntu --rm -i -t --image ubuntu:18.04 -- bash

# CentOS
kubectl run my-centos --rm -i -t --image centos:8 -- bash

# Alpine
kubectl run my-alpine --rm -i -t --image alpine:3.10 -- sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This starts up a pod (in the &lt;code&gt;default&lt;/code&gt; namespace by default) and opens a command line in the given container.&lt;br&gt;
As I'm running as root, I can install anything I need for debugging and testing right in my cluster.&lt;/p&gt;

</description>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Get http code with wget</title>
      <dc:creator>Eldad Assis</dc:creator>
      <pubDate>Mon, 09 Mar 2020 12:48:56 +0000</pubDate>
      <link>https://dev.to/eldadak/get-http-code-with-wget-e17</link>
      <guid>https://dev.to/eldadak/get-http-code-with-wget-e17</guid>
      <description>&lt;p&gt;Sometimes I don't have &lt;code&gt;curl&lt;/code&gt; available for me in a given environment. Some distributions don't provide it with the default installed utilities and I might not have the privileges to install it.&lt;br&gt;
In such cases, I use wget, which is usually installed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget --spider -S -T 2 www.jfrog.org 2&amp;gt;&amp;amp;1 | grep "^  HTTP/" | awk '{print $2}' | tail -1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;wget --help&lt;/code&gt; to see details about the parameters I use here.&lt;/p&gt;

</description>
      <category>curl</category>
      <category>wget</category>
    </item>
    <item>
      <title>The JFrog Platform - The New File System Layout</title>
      <dc:creator>Eldad Assis</dc:creator>
      <pubDate>Thu, 27 Feb 2020 10:17:18 +0000</pubDate>
      <link>https://dev.to/jfrog/the-jfrog-platform-the-new-file-system-layout-f1n</link>
      <guid>https://dev.to/jfrog/the-jfrog-platform-the-new-file-system-layout-f1n</guid>
      <description>&lt;h1&gt;
  
  
  What
&lt;/h1&gt;

&lt;p&gt;In the new &lt;a href="https://jfrog.com/platform/"&gt;JFrog DevOps Platform&lt;/a&gt;, we changed all of our products to use a common file system layout, and a single system configuration file.&lt;/p&gt;

&lt;p&gt;We defined a few important requirements for this change to take place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Clear separation of immutable application files and configurations from mutable configuration, data and logs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Intuitive structure that will be easy to navigate and understand its context&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easier customizations for customers who use multiple mounts for various needs (like logs, data and configuration files)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A single system configuration file for the product and its services&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Why
&lt;/h1&gt;

&lt;p&gt;We applied various best practice principles along with customer feedback, to meet multiple product needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Clear separation of immutable application files (binaries, scripts, tools and internal configurations) from mutable data and configuration files (data, configuration and logs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy management of configuration as code using modern configuration management tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Similar installation and configuration UX between different JFrog products&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy navigation and intuitive context&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How
&lt;/h1&gt;

&lt;p&gt;We aligned all products to use a similar file system layout.&lt;/p&gt;

&lt;p&gt;The new file system layout provides a clear separation of immutable application files (&lt;strong&gt;JFROG_HOME/&amp;lt;product&amp;gt;/app&lt;/strong&gt;) from mutable data, logs and configuration files (&lt;strong&gt;JFROG_HOME/&amp;lt;product&amp;gt;/var&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;When you install a product, the layout follows the pattern shown in the table below. It has a clear and intuitive structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JFROG_HOME
  └── &amp;lt;product&amp;gt;
     ├── app
     │   ├── bin
     │   ├── run
     │   ├── doc
     │   ├── third-party
     │   │   ├── java
     │   │   ├── yq
     │   │   └── others
     │   ├── &amp;lt;service&amp;gt;
     │   │   ├── bin
     │   │   └── lib
     │   └── misc
     │
     └── var
         ├── backup
         │   └── &amp;lt;service&amp;gt;
         ├── bootstrap
         │   └── &amp;lt;service&amp;gt;
         ├── data
         │   └── &amp;lt;service&amp;gt;
         ├── etc
         │   ├── system.yaml
         │   ├── &amp;lt;service&amp;gt;
         │   └── security
         │        ├──master.key
         │        └──join.key
         ├── log
         │   ├── &amp;lt;service logs&amp;gt;
         │   └── archived
         │    └── &amp;lt;archived service logs&amp;gt;
         └── work
             └── &amp;lt;service&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;See more details in our &lt;a href="https://www.jfrog.com/confluence/display/JFROG/System+Directories"&gt;Wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some notes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Linux based installations (RPM, Deb and Docker)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JFROG_HOME=/opt/jfrog&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$JFROG_HOME/&amp;lt;product&amp;gt;/var&lt;/strong&gt; is a symlink to &lt;strong&gt;/var/opt/jfrog/&amp;lt;product&amp;gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To customize the location of the mutable directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set the &lt;strong&gt;JF_PRODUCT_VAR&lt;/strong&gt; environment variable before running the installation&lt;/li&gt;
&lt;li&gt;Mount whole the &lt;strong&gt;JFROG_HOME/&amp;lt;product&amp;gt;/var&lt;/strong&gt; on a dedicated persistent storage&lt;/li&gt;
&lt;li&gt;Using soft links in &lt;strong&gt;JFROG_HOME/&amp;lt;product&amp;gt;/var&lt;/strong&gt;, the user can further customize the final location of mutable files (for example, in Artifactory, point the &lt;strong&gt;log&lt;/strong&gt; directory to a dedicated &lt;strong&gt;/mnt/jfrog/artifactory/log&lt;/strong&gt; directory with a simple &lt;code&gt;ln -s /mnt/jfrog/artifactory/log $JFROG_HOME/artifactory/var/log&lt;/code&gt; one time command as part of the initial setup)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  The system.yaml
&lt;/h1&gt;

&lt;p&gt;Another important change we introduced is a single, YAML-formatted file for managing the application's &lt;strong&gt;system&lt;/strong&gt; configuration (not to be confused with application configuration).&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;system.yaml&lt;/code&gt;, which is located in &lt;strong&gt;JFROG_HOME/&amp;lt;product&amp;gt;/var/etc&lt;/strong&gt;, holds the system configuration for your product and its services system configuration.&lt;/p&gt;

&lt;p&gt;For example&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Database connection details&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuration of join key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service ports&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log configurations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Many more...&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also find a &lt;code&gt;system.full-template.yaml&lt;/code&gt; file in the same directory with all supported configuration keys and their default values.&lt;/p&gt;

&lt;p&gt;Take extra care when changing configuration values.&lt;/p&gt;

&lt;p&gt;You can find more detailed information about this file in our &lt;a href="https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File"&gt;Wiki&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Your private, free Kubernetes registry</title>
      <dc:creator>Eldad Assis</dc:creator>
      <pubDate>Mon, 25 Nov 2019 09:32:26 +0000</pubDate>
      <link>https://dev.to/eldadak/your-private-free-kubernetes-registry-5d5n</link>
      <guid>https://dev.to/eldadak/your-private-free-kubernetes-registry-5d5n</guid>
      <description>&lt;p&gt;Working on Kubernetes? Deploying your applications with Helm?&lt;br&gt;
If so, you need a private, trusted and secure Helm repository and Docker registry to get your applications from. And even better if you can have them running inside your Kubernetes cluster!&lt;/p&gt;

&lt;p&gt;Great news - JFrog just released a free Container Registry (powered by JFrog Artifactory) that can store and manage your Helm Charts and Docker images. And you can install it anywhere or get it as a service on one of the big cloud vendors (GCP, AWS or Azure).&lt;/p&gt;

&lt;p&gt;Get some details in &lt;a href="https://jfrog.com/container-registry/"&gt;https://jfrog.com/container-registry/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For running it in you Kubernetes cluster, the best way is to use the official Helm chart. See &lt;a href="https://hub.helm.sh/charts/jfrog/artifactory-jcr"&gt;https://hub.helm.sh/charts/jfrog/artifactory-jcr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simple as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add jfrog https://charts.jfrog.io

helm install --name jfrog-container-registry jfrog/artifactory-jcr
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Done!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>helm</category>
      <category>docker</category>
      <category>containers</category>
    </item>
  </channel>
</rss>
