tee 명령어를 적절하게 사용하면 스크립트화 가능하다.
누군가에겐 유용하게 쓰일 것 같아서 공유한다.
profile, environment, containerd, yum, cri-o 순으로 적용된다.
# Shell Session
hostname=$(hostname)
proxy_val="http://1.1.1.1:8080"
ips=$(ip -4 addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
ip="${ips//$'\n'/,}"
IFS="\n"
no_proxy_val="localhost,127.0.0.1,$hostname,$ip,*.svc,*.local,.docker.internal"
echo "$no_proxy_val"
export http_proxy=${proxy_val}
export https_proxy=${proxy_val}
export no_proxy="${no_proxy_val}"
# TEST
if ! grep -q "${proxy_val}" /tmp/test-proxy ; then
tee -a /tmp/test-proxy > /dev/null <<EOT
export http_proxy="${proxy_val}"
export https_proxy="${proxy_val}"
export ftp_proxy="${proxy_val}"
export no_proxy="${no_proxy_val}"
EOT
fi
cat /tmp/test-proxy
# Profile
if ! grep -q "${proxy_val}" /etc/profile ; then
tee -a /etc/profile > /dev/null <<EOT
export http_proxy="${proxy_val}"
export https_proxy="${proxy_val}"
export ftp_proxy="${proxy_val}"
export no_proxy="${no_proxy_val}"
EOT
fi
# Environment
if ! grep -q "${proxy_val}" /etc/environment ; then
tee -a /etc/environment > /dev/null <<EOT
http_proxy="${proxy_val}"
https_proxy="${proxy_val}"
ftp_proxy="${proxy_val}"
no_proxy="${no_proxy_val}"
EOT
fi
# containerd
mkdir -p /etc/systemd/system/containerd.service.d
tee /etc/systemd/system/containerd.service.d/http-proxy.conf > /dev/null <<EOT
[Service]
Environment="HTTP_PROXY=${proxy_val}"
Environment="HTTPS_PROXY=${proxy_val}"
Environment="NO_PROXY=${no_proxy_val}"
EOT
systemctl daemon-reload
systemctl restart containerd
# Yum
tee /etc/yum.conf > /dev/null <<EOT
proxy=${proxy_val}
EOT
# CRI-O
mkdir -p /etc/systemd/system/crio.service.d
tee /etc/systemd/system/crio.service.d/http-proxy.conf > /dev/null <<EOT
[Service]
Environment="HTTP_PROXY=${proxy_val}"
Environment="HTTPS_PROXY=${proxy_val}"
Environment="NO_PROXY=${no_proxy_val}"
EOT
systemctl daemon-reload
systemctl restart crio