ceph-deploy install時,遠端節點在執行apt-get update命令時失敗

環境

  OS:Ubuntu 16.04

背景

  使用ceph-deploy部署Ceph集羣,調用ceph-deploy install命令在遠端節點安裝ceph環境,執行apt-get update命令時失敗。

Err:1 http://mirrors.163.com/ubuntu xenial InRelease
  Temporary failure resolving 'mirrors.163.com'

分析

  ceph-deploy的原理,就是ssh免密碼登錄到遠端節點,然後執行各種命令。和剛纔的apt-get命令結合起來,實際執行的是類似“ssh remote_node apt-get update”的命令。於是再回到執行ceph-deploy的admin節點,執行ssh remote_node apt-get update,果然失敗。
  直接連接到出問題的節點,執行apt-get update命令,沒有任何問題。這樣看來,應該是一些環境變量的問題了。我的環境中是有網絡代理的,連接外網必須配置http_proxy和https_proxy這兩個環境變量。我將這兩個環境變量設置在/etc/profile配置文件中,然而,ssh使用bash是作爲一個non-login shell的,因此不會加載這個文件。我們可以執行下面的命令,就會發現apt-get可以成功。至於什麼是non-login shell,可以參考login shell

$ ssh remote_node "bash --login -c 'apt-get update'"

Hit:1 http://mirrors.163.com/ubuntu xenial InRelease
Hit:2 http://mirrors.163.com/ubuntu xenial-security InRelease
Hit:3 http://mirrors.163.com/ubuntu xenial-updates InRelease
Hit:4 http://mirrors.163.com/ubuntu xenial-proposed InRelease
Hit:5 http://mirrors.163.com/ubuntu xenial-backports InRelease
Reading package lists...
Building dependency tree...
Reading state information...
162 packages can be upgraded. Run 'apt list --upgradable' to see them.

解決方法

  將http_proxy和https_proxy的配置放到/etc/environment,或者~/.ssh/environment中。再次執行ceph-deploy install,成功。

發佈了122 篇原創文章 · 獲贊 55 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章