안양 PORCH ucim-minion App 배포 문제 기술지원

안양 NW인증팀에서 ares-k33이라는 서버에 CentOS 7 자동 설치하고 ucim-minion App을 배포하는데 실패했다고 한다.

로그 파일을 보니 docker 설치에서 에러가 났다.

/path/to/logfile:

TASK [ucim-minion : Install docker container engine package] *******************
failed: [106.241.8.33] (item=['docker', 'python-pip']) =>
{"changed": false, "failed": true, "item": ["docker", "python-pip"],
"msg": "\n\n One of the configured repositories failed (Unknown),\n
and yum doesn't have enough cached data to continue.
At this point the only\n safe thing yum can do is fail. There are a few
ways to work \"fix\" this:\n\n

yum이 패키지를 가져오지 못하고 있다.

왜?

문제점

기본적으로 안양 환경은 배포대상서버는 나가는 패킷도 서비스 port를 제외하고는 차단한다. 예를 들면 DNS서버는 tcp/udp port 53으로부터 나가는 패킷만 허용하는 것이다. 방화벽에서 하든, ACL 관리 서버에서 하든 아무튼 위와 같이 제한한다.

따라서 배포대상서버가 외부 인터넷으로부터 무엇인가를 가져오려면 PORCH를 통해야 한다. 안양 PORCH 시스템은 WAN 구간 지원을 하기 위해 PORCH의 외부 IP로 proxy 설정을 해 놓았다.

CentOS 7 자동 설치 과정에서 yum.conf에 PORCH의 외부 IP로 proxy 설정을 한다.

/etc/yum.conf:

...
proxy=http://<porch_ip>:<porch_proxy_port>

보안 상 IP와 port는 적지 않는다. (기본 proxy 포트는 TCP 3128 이다.)

위 문제는 PORCH proxy 서비스에 접속이 되지 않아 패키지를 설치할 수 없었던 것이다.

해결책

배포대상서버 IP에서 PORCH의 IP와 proxy port로의 접속을 허용해 주어야 한다.

Epilog

위 해결책보다 더 좋은 방법은 내/외부 배포대상서버를 구별하여 자동으로 proxy 접속을 하는 것이다.

PORCH proxy 서비스는 배포망/서비스망 모두 서비스하고 있다.

배포대상서버가 WAN 건너편에 있는 서버라면, 위와 같이 서비스망 proxy 접속 허용은 여전히 필요하다.

배포대상서버가 배포망에 있는 서버라면 우리는 배포망은 trusted network으로 간주하니 배포망 proxy로 접속하면 되기 때문에 따로 접속 허용을 할 필요는 없다.

그러나 현재 PORCH는 그렇게 똑똑하지 않다.