<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Untitled: White board for stacking my life</title>
    <link>https://kadak.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 9 May 2026 06:38:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>sonkadak</managingEditor>
    <item>
      <title>Python pip local package install</title>
      <link>https://kadak.tistory.com/entry/Python-pip-local-package-install</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ref&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.ibm.com/docs/en/siffs/2.0.3?topic=python-installing-packages-offline-mode&quot;&gt;Installing Python packages (Offline mode) - IBM Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Download packages from pip&lt;/h3&gt;
&lt;pre id=&quot;code_1687327877644&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip download -d path/to/dir PACKAGE_NAME=VERSION&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Create requirements&lt;/h3&gt;
&lt;pre id=&quot;code_1687327886163&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ vi pre_req.txt
numpy=-1.2.1
keras=2.0.2&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Install local packages from pip&lt;/h3&gt;
&lt;pre id=&quot;code_1687327891771&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip install --no-deps --no-index --find-links=/path/to/dir -r pre_req.txt&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Remove local installed pacakges&lt;/h3&gt;
&lt;pre id=&quot;code_1687327898442&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip uninstall -r pre_req.txt&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Python</category>
      <category>download</category>
      <category>local</category>
      <category>Offline</category>
      <category>package</category>
      <category>PIP</category>
      <category>python</category>
      <author>sonkadak</author>
      <guid isPermaLink="true">https://kadak.tistory.com/125</guid>
      <comments>https://kadak.tistory.com/entry/Python-pip-local-package-install#entry125comment</comments>
      <pubDate>Wed, 21 Jun 2023 15:12:15 +0900</pubDate>
    </item>
    <item>
      <title>bash] system check</title>
      <link>https://kadak.tistory.com/entry/bash-system-check</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;# network session check&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;ss -ant | awk '{print $1}' | grep -v '[a-z]' | sort | uniq -c&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;# resource limit check&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;ulimit -a&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;/etc/security/limits.conf&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #202124; color: #e8eaed;&quot;&gt;sudo prlimit --nofile --output RESOURCE,SOFT,HARD --pid $PID&lt;/span&gt;&lt;/p&gt;</description>
      <category>System Engineering/Linux</category>
      <author>sonkadak</author>
      <guid isPermaLink="true">https://kadak.tistory.com/124</guid>
      <comments>https://kadak.tistory.com/entry/bash-system-check#entry124comment</comments>
      <pubDate>Mon, 28 Mar 2022 14:06:56 +0900</pubDate>
    </item>
    <item>
      <title>NFS &amp;amp; DRBD &amp;amp; HEARTBEAT: HA NFS server</title>
      <link>https://kadak.tistory.com/entry/NFS-DRBD-HEARTBEAT-HA-NFS-server</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;Ref&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://help.ubuntu.com/community/HighlyAvailableNFS&quot;&gt;https://help.ubuntu.com/community/HighlyAvailableNFS&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623913348293&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HighlyAvailableNFS - Community Help Wiki&quot; data-og-description=&quot;Introduction In this tutorial we will set up a highly available server providing NFS services to clients. Should a server become unavailable, services provided by our cluster will continue to be available to users. Our highly available system will resemble&quot; data-og-host=&quot;help.ubuntu.com&quot; data-og-source-url=&quot;https://help.ubuntu.com/community/HighlyAvailableNFS&quot; data-og-url=&quot;https://help.ubuntu.com/community/HighlyAvailableNFS&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://help.ubuntu.com/community/HighlyAvailableNFS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://help.ubuntu.com/community/HighlyAvailableNFS&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;HighlyAvailableNFS - Community Help Wiki&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Introduction In this tutorial we will set up a highly available server providing NFS services to clients. Should a server become unavailable, services provided by our cluster will continue to be available to users. Our highly available system will resemble&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;help.ubuntu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Add hosts and install packages on each nodes&lt;/h2&gt;
&lt;pre id=&quot;code_1623913396754&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# vi /etc/hosts

[IPADDR1]    nfs1
[IPADDR2]    nfs2

# sudo apt-get install ntp drbd8-utils heartbeat&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Create drbd config named&lt;span&gt;&amp;nbsp;&lt;/span&gt;'nfs' on each nodes&lt;/h2&gt;
&lt;pre id=&quot;code_1623913552200&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# vi /etc/drbd.d/nfs.res
resource nfs {
        protocol C;

        handlers {
                pri-on-incon-degr &quot;echo o &amp;gt; /proc/sysrq-trigger ; halt -f&quot;;
                pri-lost-after-sb &quot;echo o &amp;gt; /proc/sysrq-trigger ; halt -f&quot;;
                local-io-error &quot;echo o &amp;gt; /proc/sysrq-trigger ; halt -f&quot;;
                outdate-peer &quot;/usr/lib/heartbeat/drbd-peer-outdater -t 5&quot;;
        }

        startup {
                degr-wfc-timeout 120;
        }

        disk {
                on-io-error detach;
                no-disk-flushes ;
                no-disk-barrier;
                c-plan-ahead 0;
                c-fill-target 1M;
                c-min-rate 180M;
                c-max-rate 720M;
        }

        net {
                cram-hmac-alg sha1;
                shared-secret &quot;PASSWORD&quot;;
                after-sb-0pri disconnect;
                after-sb-1pri disconnect;
                after-sb-2pri disconnect;
                rr-conflict disconnect;
                max-buffers 40k;
                sndbuf-size 0;
                rcvbuf-size 0;
        }

        syncer {
                rate 210M;
                verify-alg sha1;
                al-extents 3389;
        }

        on nfs1 {
                device  /dev/drbd0;
                disk    /dev/sdb1;
                address IP:7788;
                meta-disk internal;
        }

        on nfs2 {
                device  /dev/drbd0;
                disk    /dev/sdb1;
                address IP:7788;
                meta-disk internal;
        }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Setup DRBD on each nodes&lt;/h2&gt;
&lt;pre id=&quot;code_1623913595531&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# sudo chgrp haclient /sbin/drbdsetup
# sudo chmod o-x /sbin/drbdsetup
# sudo chmod u+s /sbin/drbdsetup
# sudo chgrp haclient /sbin/drbdmeta
# sudo chmod o-x /sbin/drbdmeta
# sudo chmod u+s /sbin/drbdmeta

# sudo drbdadm create-md nfs&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Master node&lt;/h2&gt;
&lt;pre id=&quot;code_1623913770471&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# sudo drbdadm -- --overwrite-data-of-peer primary nfs&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Check&amp;nbsp;Primary/Secondary&amp;nbsp;state&amp;nbsp;and&amp;nbsp;sync&amp;nbsp;progress&lt;/p&gt;
&lt;pre id=&quot;code_1623913781155&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# cat /proc/drbd&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;After&lt;span&gt;&amp;nbsp;&lt;/span&gt;sync&lt;span&gt;&amp;nbsp;&lt;/span&gt;completed on both node, configure NFS&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test data&lt;span&gt;&amp;nbsp;&lt;/span&gt;sync&lt;/p&gt;
&lt;pre id=&quot;code_1623913819331&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# sudo mkfs.ext4 /dev/drdb0
# mkdir -p /srv/data
# sudo apt-get install nfs-kernel-server&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Master node again&lt;/h2&gt;
&lt;pre id=&quot;code_1623913855971&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# sudo mount /dev/drbd0 /srv/data
# sudo mv /var/lib/nfs/ /srv/data/
# sudo ln -s /srv/data/nfs/ /var/lib/nfs
# sudo mv /etc/exports /srv/data
# sudo ln -s /srv/data/exports /etc/exports&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Slave node&lt;/h2&gt;
&lt;pre id=&quot;code_1623913885206&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# sudo rm -rf /var/lib/nfs
# sudo ln -s /srv/data/nfs/ /var/lib/nfs
# sudo rm /etc/exports
# sudo ln -s /srv/data/exports /etc/exports&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Configure HEARTBEAT on both node&lt;/h2&gt;
&lt;pre id=&quot;code_1623913938560&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# vi /etc/heartbeat/ha.cf
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
bcast enp1s0f0np0
node nfs1
node nfs2


# sudo vi /etc/heartbeat/authkeys

auth 3
3 md5 PASSWORD



# sudo chmod 600 /etc/heartbeat/authkeys
# vi /etc/heartbeat/haresources

nfs1 IPaddr::NFS_MASTER_IP/17/IF_NAME drbddisk::nfs Filesystem::/dev/drbd0::/srv/data::ext4 nfs-kernel-server



# sudo systemctl enable heartbeat

# sudo systemctl enable drbd

# sudo reboot now&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Devops</category>
      <category>DRBD</category>
      <category>Heartbeat</category>
      <category>NFS</category>
      <author>sonkadak</author>
      <guid isPermaLink="true">https://kadak.tistory.com/123</guid>
      <comments>https://kadak.tistory.com/entry/NFS-DRBD-HEARTBEAT-HA-NFS-server#entry123comment</comments>
      <pubDate>Thu, 17 Jun 2021 16:13:35 +0900</pubDate>
    </item>
    <item>
      <title>LXD: Copy container to remote LXD server</title>
      <link>https://kadak.tistory.com/entry/LXD-Copy-container-to-remote-LXD-server</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Copy lxd container from local lxd host to remote lxd server&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Setup remote LXD on local&lt;/h2&gt;
&lt;pre id=&quot;code_1623912984182&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lxc remote add REMOTE_NAME REMOTE_IP
lxc config set core.https_address REMOTE_IP:8443
lxc config set core.trust_password PASSWORD_STRING&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Copy container&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You should stop the container that you want to copy&lt;/p&gt;
&lt;pre id=&quot;code_1623913193031&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lxc copy CONTAINER_NAME_ON_LOCAL REMOTE_NAME:CONTAINER_REMOTE_NAME&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Devops</category>
      <category>container</category>
      <category>lxc copy</category>
      <category>lxc remote</category>
      <category>lxd</category>
      <category>remote</category>
      <author>sonkadak</author>
      <guid isPermaLink="true">https://kadak.tistory.com/122</guid>
      <comments>https://kadak.tistory.com/entry/LXD-Copy-container-to-remote-LXD-server#entry122comment</comments>
      <pubDate>Thu, 17 Jun 2021 16:00:44 +0900</pubDate>
    </item>
    <item>
      <title>Geofront server with automatic colonize: ssh key management</title>
      <link>https://kadak.tistory.com/entry/Geofront-server-with-automatic-colonize-ssh-key-management</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Ref&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/geofront-auth/geofront&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/geofront-auth/geofront&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623910579285&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;geofront-auth/geofront&quot; data-og-description=&quot;Simple SSH key management service. Contribute to geofront-auth/geofront development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/geofront-auth/geofront&quot; data-og-url=&quot;https://github.com/geofront-auth/geofront&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dXeo41/hyKArZPWyt/rQLpK2XEtBgQFrqWzLTCl0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/geofront-auth/geofront&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/geofront-auth/geofront&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dXeo41/hyKArZPWyt/rQLpK2XEtBgQFrqWzLTCl0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;geofront-auth/geofront&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Simple SSH key management service. Contribute to geofront-auth/geofront development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Colonize automation for geofront server&lt;/h2&gt;
&lt;pre id=&quot;code_1623911051912&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# colonize.py
import os
import json

# create public key
create_pub_key = os.popen(&quot;ssh-keygen -y -f /var/lib/geofront/id_rsa &amp;gt; /var/lib/geofront/id_rsa.pub&quot;).read()

# load server list
with open(&quot;/opt/geofront/server/server.json&quot;, 'r') as f:
        ds = json.load(f)

hosts = list()
for k, v in ds.items():
        hosts.append(k)

# get password from env variable
pw = os.environ['PASSWORD']

# start coping to remote authorized_key
for host in hosts:
        remote = ds[host][&quot;account&quot;]+&quot;@&quot;+ds[host][&quot;ip&quot;]
        try:
                cmd = &quot;sh /ssh-copy-id.sh &quot; + remote + &quot; &quot; + pw
                print(&quot;Executing ssh-copy-id on: &quot; + host)
                exec_cmd = os.popen(cmd).read()
        except:
                e = os.popen(&quot;echo &quot;+remote+&quot; &amp;gt;&amp;gt; /failed_ssh_host.log&quot;).read()
                print(&quot;Exception error: check /failed_ssh_host.log&quot;)

date = os.popen(&quot;date&quot;).read()&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;pre id=&quot;code_1623911186770&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ssh-copy-id.sh
#!/bin/bash
remote=$1
pw=$2

# spawn &amp;amp; expect: enter for command line interaction
#spawn ssh-copy-id -o StrictHostKeyChecking=no -i /var/lib/geofront/id_rsa.pub $remote
expect &amp;lt;&amp;lt; EOF
spawn ssh-copy-id -i /var/lib/geofront/id_rsa.pub $remote
expect {
    &quot;(yes/no)?&quot; { send &quot;yes\n&quot;; exp_continue }
    &quot;password:&quot; { send &quot;$pw\n&quot;; exp_continue }
    eof
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Devops</category>
      <category>bash</category>
      <category>colonize</category>
      <category>geofront</category>
      <category>key management</category>
      <category>python</category>
      <category>server</category>
      <category>SSH</category>
      <author>sonkadak</author>
      <guid isPermaLink="true">https://kadak.tistory.com/121</guid>
      <comments>https://kadak.tistory.com/entry/Geofront-server-with-automatic-colonize-ssh-key-management#entry121comment</comments>
      <pubDate>Thu, 17 Jun 2021 15:30:12 +0900</pubDate>
    </item>
  </channel>
</rss>