在 Snap 中玩轉(zhuǎn) OpenStack

在 Snap 中玩轉(zhuǎn) OpenStack

OpenStack 非常復(fù)雜,許多社區(qū)成員都在努力使 OpenStack 的部署和操作更加容易遂鹊。其中大部分時(shí)間都用來改善相關(guān)工具振乏,如:Ansible、Puppet秉扑、Kolla慧邮、Juju、Triple-O 和 Chef (僅舉幾例)。但是误澳,如果我們降低一下標(biāo)準(zhǔn)拉鹃,并且還能使包的體驗(yàn)更加簡(jiǎn)單差导,將會(huì)怎樣呢郑叠?

我們正在努力通過 snap 包來實(shí)現(xiàn)這一點(diǎn)秋泳。snap 包是一種新興的軟件分發(fā)方式,這段來自 snapcraft.io 的介紹很好的總結(jié)了它的主要優(yōu)點(diǎn):snap 包可以快速安裝倡缠、易于創(chuàng)建哨免、安全運(yùn)行而且能自動(dòng)地事務(wù)化更新,因此你的應(yīng)用程序總是能保持最新的狀態(tài)并且永遠(yuǎn)不會(huì)被破壞毡琉。

捆綁軟件

單個(gè) snap 包可以內(nèi)嵌多個(gè)不同來源的軟件铁瞒,從而提供一個(gè)能夠快速啟動(dòng)和運(yùn)行的解決方案。當(dāng)你安裝 snap 包時(shí)桅滋,你會(huì)發(fā)現(xiàn)安裝速度是很快的慧耍,這是因?yàn)閱蝹€(gè) snap 包捆綁了所有它需要的依賴。這和安裝 deb 包有些不同丐谋,因?yàn)樗枰螺d所有的依賴然后分別進(jìn)行安裝芍碧。

Snap 包制作簡(jiǎn)單

在 Ubuntu 工作的時(shí)候,我花了很多時(shí)間為 Debian 制作 OpenStack 的安裝包号俐。這是一種很特殊技能泌豆,需要花很長(zhǎng)時(shí)間才能理解其中的細(xì)微差別。與 snap 包相比吏饿,deb 包和 snap 包在復(fù)雜性上的差異有天壤之別踪危。snap 包簡(jiǎn)單易行,并且相當(dāng)有趣猪落。

Snap 包的其它特性

  • 每個(gè) snap 包都安裝在其獨(dú)有的只讀 squashfs 文件系統(tǒng)中贞远。
  • 每個(gè) snap 包都運(yùn)行在一個(gè)由 AppArmor 和 seccomp 策略構(gòu)建的嚴(yán)格沙箱環(huán)境中。
  • snap 包能事務(wù)更新笨忌。新版本的 snap 包會(huì)安裝到一個(gè)新的只讀 squashfs 文件系統(tǒng)中蓝仲。如果升級(jí)失敗,它將回滾到舊版本官疲。
  • 當(dāng)有新版本可用時(shí)袱结,snap 包將自動(dòng)更新。
  • OpenStack 的 snap 包能保證與 OpenStack 的上游約束保持一致途凫。打包的人不需要再為 OpenStack 依賴鏈維護(hù)單獨(dú)的包垢夹。這真是太爽了!

OpenStack snap 包介紹

現(xiàn)在,下面這些項(xiàng)目已經(jīng)有了相應(yīng)的 snap 包:

  • Keystone —— 這個(gè) snap 包為 OpenStack 提供了身份鑒證服務(wù)颖榜。
  • Glance —— 這個(gè) snap 包為 OpenStack 提供了鏡像服務(wù)棚饵。
  • Neutron —— 這個(gè) snap 包專門提供了 neutron-server 過程煤裙,作為 OpenStack 部署過程的一個(gè) snap 包掩完。
  • Nova —— 這個(gè) snap 包提供 OpenStack 部署過程中的 Nova 控制器組件噪漾。
  • Nova-hypervisor —— 這個(gè) snap 包提供 OpenStack 部署過程中的 hypervisor 組件,并且配置使用通過 deb 包安裝的 Libvirt/KVM + Open vSwitch 組合且蓬。這個(gè) snap 包同時(shí)也包含 nava-lxd欣硼,這允許我們使用 nova-lxd 而不用 KVM。

這些 snpa 包已經(jīng)能讓我們部署一個(gè)簡(jiǎn)單可工作的 OpenStack 云恶阴。你可以在 github 上找到所有這些 OpenStack snap 包的源碼诈胜。有關(guān) OpenStack snap 包更多的細(xì)節(jié),請(qǐng)參考上游存儲(chǔ)庫(kù)中各自的 README冯事。在那里焦匈,你可以找到更多有關(guān)管理 snap 包的信息,比如覆蓋默認(rèn)配置昵仅、重啟服務(wù)缓熟、設(shè)置別名等等。

想要?jiǎng)?chuàng)建自己的 OpenStack snap 包嗎?

查看 snap cookie 工具摔笤。我很快就會(huì)寫一篇博文够滑,告訴你如何使用 snap cookie 工具。它非常簡(jiǎn)單吕世,并且能幫助你在任何時(shí)候創(chuàng)建一個(gè)新的 OpenStack snap 包彰触。

測(cè)試 OpenStack snap 包

我們已經(jīng)用簡(jiǎn)單的腳本初步測(cè)試了 OpenStack snap 包。這個(gè)腳本會(huì)在單個(gè)節(jié)點(diǎn)上安裝 sanp 包命辖,還會(huì)在安裝后提供額外的配置服務(wù)况毅。來嘗試下吧:

git clone https://github.com/openstack-snaps/snap-test
cd snap-test
./snap-deploy

這樣,我們就已經(jīng)在 Ubuntu Xenial(16.04) 上做了所有的測(cè)試尔艇。要注意的是尔许,這將在你的系統(tǒng)上安裝和配置相當(dāng)多的軟件,因此你最好在可自由使用的機(jī)器上運(yùn)行它漓帚。

追蹤 OpenStack

現(xiàn)在母债,你可以從 snap 商店的邊緣通道來安裝 snap 包,比如:

sudo snap install --edge keystone

OpenStack 團(tuán)隊(duì)正在努力使 CI/CD 配置到位尝抖,以便讓 snap 包的發(fā)布能夠交叉追蹤 OpenStack 的發(fā)布(比如一個(gè)追蹤 Ocata毡们,另一個(gè)追蹤 Pike 等)。每個(gè)<ruby>軌道<rt>track</rt></ruby>都有 4 個(gè)不同的通道昧辽。每個(gè)軌道的邊緣通道將包含 OpenStack 項(xiàng)目對(duì)應(yīng)分支最近的內(nèi)容衙熔,測(cè)試、候選和穩(wěn)定通道被保留用于已發(fā)布的版本搅荞。這樣我們將看到如下的用法:

sudo snap install --channel=ocata/stable keystone
sudo snap install --channel=pike/edge keystone

其它

我們可以使用多個(gè)環(huán)境變量來簡(jiǎn)化 snap 包的制作红氯。這里 有相關(guān)的說明框咙。實(shí)際上,你無需深入的研究他們痢甘,但是在安裝完 snap 包后喇嘱,你也許會(huì)想要了解這些位置:

$SNAP == /snap/<snap-name>/current

這是 snap 包和它所有的文件掛載的位置。所有東西都是只讀的塞栅。比如我當(dāng)前安裝的 keystone者铜,$SNAP 就是 /snap/keystone/91。幸好放椰,你不需要知道當(dāng)前版本號(hào)作烟,因?yàn)樵?/snap/keystone/ 中有一個(gè)軟鏈接(LCTT 譯注:/snap/keystone/current/)指向當(dāng)前正在使用版本對(duì)應(yīng)的文件夾。

$ ls /snap/keystone/current/
bin                     etc      pysqlite2-doc        usr
command-manage.wrapper  include  snap                 var
command-nginx.wrapper   lib      snap-openstack.yaml
command-uwsgi.wrapper   meta     templates

$ ls /snap/keystone/current/bin/
alembic                oslo-messaging-send-notification
convert-json           oslo-messaging-zmq-broker
jsonschema             oslo-messaging-zmq-proxy
keystone-manage        oslopolicy-checker
keystone-wsgi-admin    oslopolicy-list-redundant
keystone-wsgi-public   oslopolicy-policy-generator
lockutils-wrapper      oslopolicy-sample-generator
make_metadata.py       osprofiler
mako-render            parse_xsd2.py
mdexport.py            pbr
merge_metadata.py      pybabel
migrate                snap-openstack
migrate-repository     sqlformat
netaddr                uwsgi
oslo-config-generator

$ ls /snap/keystone/current/usr/bin/
2to3               idle     pycompile     python2.7-config
2to3-2.7           pdb      pydoc         python2-config
cautious-launcher  pdb2.7   pydoc2.7      python-config
compose            pip      pygettext     pyversions
dh_python2         pip2     pygettext2.7  run-mailcap
easy_install       pip2.7   python        see
easy_install-2.7   print    python2       smtpd.py
edit               pyclean  python2.7

$ ls /snap/keystone/current/lib/python2.7/site-packages/
...

$SNAP_COMMON == /var/snap/<snap-name>/common

這個(gè)目錄用于存放系統(tǒng)數(shù)據(jù)砾医,對(duì)于 snap 包的多個(gè)修訂版本這些數(shù)據(jù)是共用的拿撩。在這里,你可以覆蓋默認(rèn)配置文件和訪問日志文件如蚜。

$ ls /var/snap/keystone/common/
etc  fernet-keys  lib  lock  log  run

$ sudo ls /var/snap/keystone/common/etc/
keystone  nginx  uwsgi

$ ls /var/snap/keystone/common/log/
keystone.log  nginx-access.log  nginx-error.log  uwsgi.log

嚴(yán)格限制

每個(gè) snap 包都是在一個(gè)由 seccomp 和 AppArmor 策略構(gòu)建的嚴(yán)格限制的環(huán)境中運(yùn)行的压恒。更多關(guān)于 snap 約束的細(xì)節(jié)可以在 這里 查看。

snap 包即將到來的新特性和更新

我正在期待 snap 包一些即將到來的新特性和更新(LCTT 譯注:此文發(fā)表于 7 月 6 日):

  • 我們正在致力于實(shí)現(xiàn) libvirt AppArmor 策略怖亭,這樣 nova-hypervisor 的 snap 包就能夠訪問 qcow2 的<ruby>支持文件<rt>backing files</rt></ruby>涎显。
    • 現(xiàn)在,作為一種變通方法兴猩,你可以將 virt-aa-helper 放在 complain 模式下:sudo aa-complain /usr/lib/libvirt/virt-aa-helper期吓。
  • 我們還在為 snapd 開發(fā)額外的接口策略,以便為部署的實(shí)例啟用網(wǎng)絡(luò)連接倾芝。
    • 現(xiàn)在你可以在 devmode 模式下安裝 nova-hypervisor snap 包讨勤,它會(huì)禁用安全限制:snap install -devmode -edge nova-hypervisor
  • 自動(dòng)連接 nova-hypervisor 的接口晨另。我們正在努力實(shí)現(xiàn)在安裝時(shí)自動(dòng)定義 nova-hypervisor 接口潭千。
    • 定義 AppArmor 和 seccomp 策略的接口可以允許 snap 包訪問系統(tǒng)的資源。
    • 現(xiàn)在借尿,你可以手動(dòng)連接需要接口刨晴,在 nova-hypervisor snap 包的 README 中有相關(guān)的描述。
  • 命令自動(dòng)定義別名路翻。我們正在努力實(shí)現(xiàn) snap 包在安裝時(shí)為命令自動(dòng)定義別名狈癞。
    • 這使得我們可以使用傳統(tǒng)的命令名。安裝 snap 包后茂契,你將可以使用 nova-manage db sync 而無需再用 nova.manage db sync蝶桶。
    • 現(xiàn)在,你可以在安裝 snap 包后手動(dòng)設(shè)置別名掉冶,比如:snap alias nova.manage nova-manage真竖。如想獲取更多細(xì)節(jié)請(qǐng)查看 snap 包的 README 脐雪。
  • 守護(hù)進(jìn)程自動(dòng)定義別名。當(dāng)前 snappy 僅支持為命令(非守護(hù)進(jìn)程)定義別名恢共。一旦針對(duì)守護(hù)進(jìn)程的別名可用了战秋,我們將設(shè)置它們?cè)诎惭b的時(shí)候自動(dòng)配置。
    • 這使得我們可以使用額外的單元文件名旁振。我們可以使用 systemctl restart nova-compute 而無需再用 systemctl restart snap.nova.nova-compute获询。
  • snap 包資產(chǎn)跟蹤涨岁。這使得我們可以追蹤用來構(gòu)建 snap 包的版本以便在將來構(gòu)建時(shí)重復(fù)使用拐袜。

如果你想多聊一些關(guān)于 snap 包的內(nèi)容,你可以在 freenode 的 #openstack-snaps 這樣的 IRC 上找到我們梢薪。我們歡迎你的反饋和貢獻(xiàn)蹬铺!感謝并祝你玩得開心!Corey


作者簡(jiǎn)介:

Corey Bryant 是 Ubuntu 的核心開發(fā)者和 Canonical 公司 OpenStack 工程團(tuán)隊(duì)的軟件工程師秉撇,他主要專注于為 Ubuntu 提供 OpenStack 的安裝包以及為 Juju 進(jìn)行 OpenStack 的魅力開發(fā)甜攀。他對(duì)開源軟件充滿熱情,喜歡與來自世界各地的人一起工作琐馆。

譯者簡(jiǎn)介:

snapcraft.io 的釘子戶规阀,對(duì) Ubuntu Core、Snaps 和 Snapcraft 有著濃厚的興趣瘦麸,并致力于將這些還在快速發(fā)展的新技術(shù)通過翻譯或原創(chuàng)的方式介紹到中文世界谁撼。有興趣的小伙伴也可以關(guān)注譯者個(gè)人的公眾號(hào): Snapcraft,最近會(huì)在上面連載幾篇有關(guān) Core snap 發(fā)布策略滋饲、交付流程和驗(yàn)證流程的文章厉碟,歡迎圍觀 :)


via: https://insights.ubuntu.com/2017/07/06/openstack-in-a-snap/

此文由 Snapcraft 公眾號(hào)翻譯,歡迎關(guān)注 : )

作者:Corey Bryant
譯者:Snapcrafter
校對(duì):wxy

本文由 LCTT 原創(chuàng)編譯屠缭,Linux中國(guó) 榮譽(yù)推出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箍鼓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呵曹,更是在濱河造成了極大的恐慌款咖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奄喂,死亡現(xiàn)場(chǎng)離奇詭異铐殃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砍聊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門背稼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玻蝌,你說我怎么就攤上這事蟹肘〈侍郏” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵帘腹,是天一觀的道長(zhǎng)贰盗。 經(jīng)常有香客問我,道長(zhǎng)阳欲,這世上最難降的妖魔是什么舵盈? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮球化,結(jié)果婚禮上秽晚,老公的妹妹穿的比我還像新娘。我一直安慰自己筒愚,他們只是感情好赴蝇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巢掺,像睡著了一般句伶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陆淀,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天考余,我揣著相機(jī)與錄音,去河邊找鬼轧苫。 笑死楚堤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浸剩。 我是一名探鬼主播钾军,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼绢要!你這毒婦竟也來了吏恭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤重罪,失蹤者是張志新(化名)和其女友劉穎樱哼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剿配,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搅幅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呼胚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茄唐。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沪编,到底是詐尸還是另有隱情呼盆,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布蚁廓,位于F島的核電站访圃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏相嵌。R本人自食惡果不足惜腿时,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饭宾。 院中可真熱鬧批糟,春花似錦、人聲如沸捏雌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)性湿。三九已至,卻和暖如春满败,著一層夾襖步出監(jiān)牢的瞬間肤频,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工算墨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宵荒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓净嘀,卻偏偏與公主長(zhǎng)得像报咳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挖藏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 第一章 OpenStack基礎(chǔ) OpenStack管理的資源及提供的服務(wù)OpenStack做為一個(gè)操作系統(tǒng)暑刃,...
    sgt_tiger閱讀 12,895評(píng)論 4 72
  • Nova Nova,即計(jì)算服務(wù)膜眠,是OpenStack計(jì)算的彈性控制器岩臣。Nova可以說是整個(gè)云平臺(tái)最重要的組件,Op...
    邵勝奧閱讀 4,144評(píng)論 0 8
  • Openstack Mitaka安裝部署教程 一宵膨、實(shí)驗(yàn)環(huán)境: 系統(tǒng):centos7.2-minimal 網(wǎng)絡(luò):管理...
    指間_流年閱讀 2,187評(píng)論 0 0
  • 老公是我生活的必須品架谎,我似乎不能沒有他,因?yàn)閯e人的生活里面都有這樣的角色辟躏。 和別人不同谷扣,至少缺少這么一樣,我會(huì)沒有...
    曼谷123閱讀 314評(píng)論 0 0
  • 弗洛伊德人格理論認(rèn)為捎琐,一個(gè)嬰兒剛生下來是只有"本我"而沒有"自我"的会涎,只有當(dāng)他開始探尋"我是誰(shuí)"這個(gè)概念的時(shí)候涯曲,他...
    道衡閱讀 19,448評(píng)論 19 21