<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Discover Docker, K8s and Hashicorp Nomad with Maksym Prokopov</title>
<link>https://blog.it-premium.com.ua/</link>
<description>The blog about containerisation, virtual machines and useful shell snippets and findings</description>
<author></author>
<language>en</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>The blog about containerisation, virtual machines and useful shell snippets and findings</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>The new kid on the orchestration block – Hashicorp Nomad</title>
<guid isPermaLink="false">241</guid>
<link>https://blog.it-premium.com.ua/all/the-new-kid-on-the-orchestration-block-hashicorp-nomad/</link>
<pubDate>Mon, 01 Jan 2024 11:48:22 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/the-new-kid-on-the-orchestration-block-hashicorp-nomad/</comments>
<description>
&lt;p&gt;&lt;a href=“https://www.hashicorp.com/products/nomad”&gt;Hashicorp Nomad&lt;/a&gt; is&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One binary (tm) for client and server&lt;/li&gt;
&lt;li&gt;Uses own RAFT implementation for clustering&lt;/li&gt;
&lt;li&gt;Supports HCL for resource definition and templating, same as terraform! Way better at DRY configuration.&lt;/li&gt;
&lt;li&gt;Supports not only docker, but raw JAR deployments, etc.&lt;/li&gt;
&lt;li&gt;Doesn’t have any ingress management. Though, integrates very nicely with Traefik using native facilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is currently my orchestration tool of choice for running anything in own cluster.&lt;/p&gt;
</description>
</item>

<item>
<title>Remove old docker images one line</title>
<guid isPermaLink="false">240</guid>
<link>https://blog.it-premium.com.ua/all/remove-old-docker-images-one-line/</link>
<pubDate>Mon, 15 Aug 2022 18:04:02 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/remove-old-docker-images-one-line/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker rmi xxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/it-service-app:2.6.{234..295}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;this will remove all the images ranged from 2.6.234 till 2.6.295&lt;/p&gt;
</description>
</item>

<item>
<title>Docker logrotate</title>
<guid isPermaLink="false">239</guid>
<link>https://blog.it-premium.com.ua/all/docker-logrotate/</link>
<pubDate>Tue, 25 Jan 2022 08:29:49 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/docker-logrotate/</comments>
<description>
&lt;p&gt;Actually you don’t need any logrotate for docker, as it has built-in.&lt;/p&gt;
&lt;p&gt;Just set to this /etc/docekr/daemon.json&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{
  &amp;quot;log-driver&amp;quot;: &amp;quot;json-file&amp;quot;,
  &amp;quot;log-opts&amp;quot;: {
    &amp;quot;max-size&amp;quot;: &amp;quot;10m&amp;quot;,
    &amp;quot;max-file&amp;quot;: &amp;quot;3&amp;quot; 
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;quote&gt;&lt;br /&gt;
max-sizeNo-1The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g). Defaults to -1 (unlimited). This is used by json-log required to keep the docker log command working.&lt;br /&gt;
max-fileNo1The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. Only effective when max-size is also set. A positive integer. Defaults to 1.&lt;br /&gt;
&lt;/quote&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>initContainer and rabbit mq checks in k8s pod</title>
<guid isPermaLink="false">238</guid>
<link>https://blog.it-premium.com.ua/all/initcontainer-and-rabbit-mq-checks-in-k8s-pod/</link>
<pubDate>Thu, 04 Nov 2021 11:29:26 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/initcontainer-and-rabbit-mq-checks-in-k8s-pod/</comments>
<description>
&lt;p&gt;Sometimes you need to implement ordered loading for the pods. Say, launch rabbit mq container first, than your app container. This could be done using &lt;b&gt;initContainer&lt;/b&gt; concept.&lt;/p&gt;
&lt;p&gt;Put this into &lt;b&gt;values.yaml&lt;/b&gt; of your helm chart definition&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rabbit:
  host: rabbit&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and this to the app &lt;b&gt;deployment.yaml&lt;/b&gt; definition&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;initContainers:
        - name: check-rabbit-ready
          image: public.ecr.aws/runecast/busybox:1.33.1
          command: [&amp;#039;sh&amp;#039;, &amp;#039;-c&amp;#039;, &amp;#039;until nc -vz {{ .Values.rabbit.host }} 5672; do echo &amp;quot;Waiting for rabbit service&amp;quot;; sleep 2; done;&amp;#039;]&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>get pods on the node from particular AZ</title>
<guid isPermaLink="false">237</guid>
<link>https://blog.it-premium.com.ua/all/get-pods-on-the-node-from-particular-az/</link>
<pubDate>Thu, 21 Oct 2021 07:59:20 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/get-pods-on-the-node-from-particular-az/</comments>
<description>
&lt;p&gt;For Amazon EKS:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;kubectl describe nodes -l topology.kubernetes.io/zone=eu-central-1a&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>find all and empty log files oneliner</title>
<guid isPermaLink="false">236</guid>
<link>https://blog.it-premium.com.ua/all/find-all-and-empty-log-files-oneliner/</link>
<pubDate>Fri, 17 Sep 2021 08:32:19 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/find-all-and-empty-log-files-oneliner/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find . -name *.log | xargs truncate -s0&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Ansible remove False variables from environment</title>
<guid isPermaLink="false">235</guid>
<link>https://blog.it-premium.com.ua/all/ansible-remove-false-variables-from-environment/</link>
<pubDate>Tue, 14 Sep 2021 08:38:01 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/ansible-remove-false-variables-from-environment/</comments>
<description>
&lt;p&gt;Use the following code snippet:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;telegram:
  enabled: False

Env:
  - TELEGRAM_NOTIFICATION={{ telegram.enabled | ternary(&amp;#039;true&amp;#039;, None)}}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In this way False value evaluates to None and as outcome you’ll get empty TELEGRAM_NOTIFICATION variable&lt;/p&gt;
</description>
</item>

<item>
<title>remove exited containers from docker</title>
<guid isPermaLink="false">234</guid>
<link>https://blog.it-premium.com.ua/all/remove-exited-containers-from-docker/</link>
<pubDate>Sat, 11 Sep 2021 16:37:11 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/remove-exited-containers-from-docker/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker ps -f status=exited -q | xargs docker rm&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Execute eksctl from terraform</title>
<guid isPermaLink="false">233</guid>
<link>https://blog.it-premium.com.ua/all/execute-eksctl-from-terraform/</link>
<pubDate>Fri, 27 Aug 2021 12:00:07 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/execute-eksctl-from-terraform/</comments>
<description>
&lt;p&gt;cluster_name and profile are terraform variables&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;resource &amp;quot;null_resource&amp;quot; &amp;quot;oidc_provider&amp;quot; {
  triggers = {
    cluster_name = var.cluster_name
  }

  provisioner &amp;quot;local-exec&amp;quot; {
    command = &amp;lt;&amp;lt;EOF
AWS_PROFILE=${var.profile} eksctl utils associate-iam-oidc-provider --cluster ${var.cluster_name} --approve
EOF
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Check result with command&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;aws iam list-open-id-connect-providers | jq &amp;quot;.OpenIDConnectProviderList[].Arn&amp;quot;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>aws list ec2 instances by tag</title>
<guid isPermaLink="false">232</guid>
<link>https://blog.it-premium.com.ua/all/aws-list-ec2-instances-by-tag/</link>
<pubDate>Thu, 29 Jul 2021 15:54:05 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/aws-list-ec2-instances-by-tag/</comments>
<description>
&lt;p&gt;simple ec2 instances list using jq&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;aws ec2 describe-instances | jq -r &amp;#039;.Reservations | .[].Instances | .[].Tags | .[] | select(.Key == &amp;quot;Name&amp;quot;) | .Value&amp;#039;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>enable gitea to use ssh port 22</title>
<guid isPermaLink="false">231</guid>
<link>https://blog.it-premium.com.ua/all/enable-gitea-to-use-ssh-port-22/</link>
<pubDate>Sat, 23 Jan 2021 12:59:40 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/enable-gitea-to-use-ssh-port-22/</comments>
<description>
&lt;ol start="1"&gt;
&lt;li&gt;Move original ssh service to other port, like 2022&lt;/li&gt;
&lt;li&gt;set gitea config to use port 22&lt;br /&gt;
app.ini&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[server]
DISABLE_SSH      = false
SSH_PORT         = 22
SSH_LISTEN_HOST  = 0.0.0.0
SSH_LISTEN_PORT  = 22
START_SSH_SERVER = true&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;execute&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/gitea to enable usage of the port 22&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>copy files having search string to the target folder</title>
<guid isPermaLink="false">230</guid>
<link>https://blog.it-premium.com.ua/all/copy-files-having-search-string-to-the-target-folder/</link>
<pubDate>Tue, 17 Nov 2020 17:06:45 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/copy-files-having-search-string-to-the-target-folder/</comments>
<description>
&lt;p&gt;let’s say you have &lt;Active&gt;true&lt;/Active&gt; in the hundreds of files and you need to copy only those which contain this string, it is quite easy to do with Linux find utility&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;grep -l -ri -m1 &amp;quot;Active&amp;gt;true&amp;quot; */*.xml | xargs -I {} cp {} target_folder&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>recursive copy of the file with same name to the folder</title>
<guid isPermaLink="false">229</guid>
<link>https://blog.it-premium.com.ua/all/recursive-copy-of-the-file-with-same-name-to-the-folder/</link>
<pubDate>Mon, 02 Nov 2020 16:53:03 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/recursive-copy-of-the-file-with-same-name-to-the-folder/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find . -type f -name coverage.cov -exec bash -c &amp;#039;cp {} $(pwd)/.coverage/cov/${RANDOM}.cov&amp;#039; \;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>macos datomic console in background plist</title>
<guid isPermaLink="false">228</guid>
<link>https://blog.it-premium.com.ua/all/macos-datomic-console-in-background-plist/</link>
<pubDate>Mon, 02 Nov 2020 08:09:43 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/macos-datomic-console-in-background-plist/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;
&amp;lt;dict&amp;gt;
&amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;com.cognitect.datomic-console&amp;lt;/string&amp;gt;
  &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
  &amp;lt;array&amp;gt;
     &amp;lt;string&amp;gt;/Users/nexus/datomic-pro-1.0.6165/bin/console&amp;lt;/string&amp;gt;
     &amp;lt;string&amp;gt;stock&amp;lt;/string&amp;gt;
     &amp;lt;string&amp;gt;datomic:dev://localhost:4334/stock&amp;lt;/string&amp;gt;
     &amp;lt;string&amp;gt;--port&amp;lt;/string&amp;gt;
     &amp;lt;string&amp;gt;8080&amp;lt;/string&amp;gt;
  &amp;lt;/array&amp;gt;
&amp;lt;key&amp;gt;WorkingDirectory&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;/Users/nexus/datomic-pro-1.0.6165&amp;lt;/string&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>macos run datomic in background plist</title>
<guid isPermaLink="false">227</guid>
<link>https://blog.it-premium.com.ua/all/macos-run-datomic-in-background-plist/</link>
<pubDate>Mon, 02 Nov 2020 08:08:58 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/macos-run-datomic-in-background-plist/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;
&amp;lt;dict&amp;gt;
&amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;com.cognitect.datomic&amp;lt;/string&amp;gt;
  &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
  &amp;lt;array&amp;gt;
     &amp;lt;string&amp;gt;/Users/nexus/datomic-pro-1.0.6165/bin/transactor&amp;lt;/string&amp;gt;
     &amp;lt;string&amp;gt;config/dev-transactor.properties&amp;lt;/string&amp;gt;
  &amp;lt;/array&amp;gt;
&amp;lt;key&amp;gt;WorkingDirectory&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;/Users/nexus/datomic-pro-1.0.6165&amp;lt;/string&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>quicky find macos version from the command line</title>
<guid isPermaLink="false">226</guid>
<link>https://blog.it-premium.com.ua/all/quicky-find-macos-version-from-the-command-line/</link>
<pubDate>Tue, 27 Oct 2020 12:23:56 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/quicky-find-macos-version-from-the-command-line/</comments>
<description>
&lt;p&gt;just use sw_vers command&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sw_vers
ProductName:Mac OS X
ProductVersion:10.15.7
BuildVersion:19H2&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>enable GraalVM for macos Catalina gatekeeper</title>
<guid isPermaLink="false">225</guid>
<link>https://blog.it-premium.com.ua/all/enable-graalvm-for-macos-catalina-gatekeeper/</link>
<pubDate>Fri, 16 Oct 2020 12:20:22 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/enable-graalvm-for-macos-catalina-gatekeeper/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo xattr -r -d com.apple.quarantine /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Ansible add entries to .htpassword</title>
<guid isPermaLink="false">224</guid>
<link>https://blog.it-premium.com.ua/all/ansible-add-entries-to-htpassword/</link>
<pubDate>Tue, 29 Sep 2020 11:49:00 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/ansible-add-entries-to-htpassword/</comments>
<description>
&lt;p&gt;There are several ways to do this:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Use template action and use template file&lt;/li&gt;
&lt;li&gt;Use array of entries and loop with lininfile command&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://docs.ansible.com/ansible/latest/collections/community/general/htpasswd_module.html"&gt;https://docs.ansible.com/ansible/latest/collections/community/general/htpasswd_module.html&lt;/a&gt; htpasswd module.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I decided to go with approach #2.&lt;br /&gt;
in variables&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;htpasswd:
  - user1:password1
  - user2:password2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in the playbook&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;- name: set password file
      lineinfile:
        path: &amp;quot;{{ webroot }}/shared/.htpasswd&amp;quot;
        line: &amp;quot;{{ item }}&amp;quot;
        create: yes
      when: oxid.configuration == &amp;quot;production&amp;quot;
      loop: &amp;quot;{{ htpasswd }}&amp;quot;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>CentOS 7 upgrade Jenkins with no key check</title>
<guid isPermaLink="false">223</guid>
<link>https://blog.it-premium.com.ua/all/centos-7-upgrade-jenkins-with-no-key-check/</link>
<pubDate>Thu, 11 Jun 2020 10:18:04 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/centos-7-upgrade-jenkins-with-no-key-check/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum upgrade jenkins --nogpgcheck&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>can not install docker-compose on CentOS 7</title>
<guid isPermaLink="false">222</guid>
<link>https://blog.it-premium.com.ua/all/can-not-install-docker-compose-on-centos-7/</link>
<pubDate>Thu, 11 Jun 2020 09:51:55 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/can-not-install-docker-compose-on-centos-7/</comments>
<description>
&lt;p&gt;CentOS 7 fix for  UserWarning: Unknown distribution option: ‘python_requires’&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum install -y python-pip python-devel gcc
pip install docker-compose&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>