摘要:最近,花了很大的興趣在組合使用和上。步驟如下從那里,我們可以使用已經(jīng)上傳到的角色。我們的像如下簡(jiǎn)單,在與你的一起的一個(gè)文件名字為因此,像這樣構(gòu)建現(xiàn)在讀者可以非常容易的適應(yīng)各種方法。檢出文件可能被忽略,并且被替換成命令獲得更加大的效率。
最近,花了很大的興趣在組合使用 Ansible 和 Docker上。所以我想這可以很好的描述一些技巧。
開(kāi)始,安裝 Docker。如果你已經(jīng)安裝了 Ansible 。 Paul Durivage 已經(jīng)編寫(xiě)了一個(gè)在 Ubuntu 出色的安裝 Docker 的工具,即使在內(nèi)部實(shí)現(xiàn),它也比官方安裝指令容易。
如果我們?cè)?Ubuntu 13.10 上啟動(dòng),并且只從開(kāi)發(fā)分支上運(yùn)行 Ansible,而不安裝它。步驟如下:
apt-get update apt-get install git python-yaml python-jinja2 python-pycurl git clone https://github.com/ansible/ansible.git cd ansible source ./hacking/env-setup
從那里,我們可以使用 Paul 已經(jīng)上傳到 Galaxy 的 docker_ubuntu 角色。因此我們可以使用一個(gè)簡(jiǎn)單的 CLI 調(diào)用下載它。
ansible-galaxy install angstwad.docker_ubuntu
并且通過(guò)在 /etc/ansible/hosts 創(chuàng)建一個(gè) stub inventory 文件,寫(xiě)一個(gè)簡(jiǎn)單的 playbook 來(lái)使用它。
[local] localhost
并且一個(gè)非常簡(jiǎn)單的 playbook 調(diào)用它,/tmp/docker.yml :
- hosts:local connection: local roles: - angstwad.docker_ubuntu
現(xiàn)在我們將調(diào)用 Ansible 來(lái)啟動(dòng) Docker:
ansible-playbook /tmp/docker.yml docker pull ubuntu
現(xiàn)在,一切都變得非常簡(jiǎn)單。但是讓我感興趣的部分是如何使用 Ansible 用最簡(jiǎn)單的方式來(lái)構(gòu)建 docker-files 。我們一直喜歡的一件事就是自動(dòng)化的便攜式描述。并且使得比開(kāi)發(fā) bash 更加有效率。
這里有一個(gè)在 Docker 文件中使用 Ansible 的簡(jiǎn)單例子,因此我們可以在 Ansible 中編寫(xiě)復(fù)雜的自動(dòng)化。而不是編寫(xiě)一份 Docker 命令以及 shell 腳本的大雜燴。允許我們的應(yīng)用部署就像把他們部署在經(jīng)典的虛擬服務(wù)器上。
我們的 Dockerfile 像如下簡(jiǎn)單,在 /tmp/build/Dockerfile:
FROM ubuntu MAINTAINER yourname RUN apt-get -y update RUN apt-get install -y python-yaml python-jinja2 git RUN git clone http://github.com/ansible/ansible.git /tmp/ansible WORKDIR /tmp/ansible ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin ENV ANSIBLE_LIBRARY /tmp/ansible/library ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH RUN git clone http://github.com/yourusername/yourrepo.git /tmp/example ADD inventory /etc/ansible/hosts WORKDIR /tmp/examples RUN ansible-playbook site.yml -c local EXPOSE 22 3000 ENTRYPOINT [“/usr/bin/foo”]
與你的 Dockerfile 一起的一個(gè)文件名字為 inventory:
[local] localhost
因此,像這樣構(gòu)建:
docker build .
現(xiàn)在讀者可以非常容易的適應(yīng)各種方法。但是最明顯的事情或許是打開(kāi)不同的端口 或者是運(yùn)行不同的 entry point 。git 檢出文件可能被忽略,并且被替換成 "ADD" 命令獲得更加大的效率。
這里最妙的是哪部分? 是你的 playbook 能干任何事情,并且做任何重的事情。
下一步要做的更加具有邏輯的事情是用 Docker 分發(fā)你的容器,這個(gè)可以通過(guò)在 Ansbible 核心的 Docker 模塊來(lái)實(shí)現(xiàn)。最好的經(jīng)驗(yàn),我們建議使用開(kāi)發(fā)分支的 Ansible 預(yù)覽版本,它支持最新版本的 Docker。
在這里看 Docker 模塊的文件以及能力 See the Docker module documentation and capabilities here.
非常感謝 Cove Schneider 和 Pavel Antonov 開(kāi)發(fā)的這個(gè)模塊。
因此,結(jié)合 Ansbile 和 Docker ,只需要稍加挖掘,你能看到,你不僅能使用 Ansbile 管理你的容器構(gòu)建進(jìn)程,而且可以決定什么容器應(yīng)該運(yùn)行在哪里。
我希望這篇文章能幫助在探索文件的構(gòu)建方面使事情更加簡(jiǎn)單。如果你想少一點(diǎn)手工組合,你也可以像這樣組合 Packer 和 Docker。
Related News注: Packer 是一個(gè)通過(guò)一個(gè)源文件跨平臺(tái)構(gòu)建同樣鏡像的工具
Deploying Highly Available OpenShift Origin Clusters | Ansible Me A Sandwich | Listen To Your Servers Talk | Fixing Heartbleed With Ansible | Orchestration, You Keep Using That Word
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/28099.html
摘要:從到到的部署經(jīng)驗(yàn)工作中,除了開(kāi)發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。同時(shí)在構(gòu)建成功后執(zhí)行我們輸入的命令,來(lái)達(dá)到自動(dòng)化部署的工作。缺點(diǎn)也是有的,很難保證對(duì)方部署的環(huán)境是最新的。 從Docker 到Jenkins 到Ansible的部署經(jīng)驗(yàn) 工作中,除了開(kāi)發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。從傳統(tǒng)的Java ...
摘要:或許你的第一次微服務(wù)體驗(yàn),就從本文開(kāi)始在本文中,和等紛紛亮相,并配有詳細(xì)的代碼說(shuō)明。該角色與本地網(wǎng)絡(luò)及的配置設(shè)置相關(guān)。由于會(huì)在虛擬機(jī)初始化過(guò)程中自動(dòng)執(zhí)行配置任務(wù),因此惟一的解決辦法就是將相關(guān)內(nèi)容提取至單獨(dú)的劇本當(dāng)中 這是一篇溫和有趣的技術(shù)文章,如果你初識(shí)Docker,對(duì)微服務(wù)充滿興趣,不妨一讀?;蛟S你的第一次微服務(wù)體驗(yàn),就從本文開(kāi)始…… 在本文中,Mesos、Zookeeper、Ma...
摘要:集群三步安裝構(gòu)建生產(chǎn)環(huán)境可用的高可用集群項(xiàng)目地址特性支持任意節(jié)點(diǎn)的集群自動(dòng)構(gòu)建,且集群使用安全證書(shū),通過(guò)方式啟動(dòng),這樣可以通過(guò)監(jiān)控來(lái)監(jiān)控集群健康狀態(tài)支持多節(jié)點(diǎn),允許任意一臺(tái)宕機(jī)集群功能不受影響使用集群,配置安全證書(shū),網(wǎng)絡(luò)管控?cái)?shù)據(jù)無(wú)單點(diǎn)故障包 kubernetes集群三步安裝 構(gòu)建生產(chǎn)環(huán)境可用的高可用kubernetes集群 | sealos項(xiàng)目地址 特性 [x] 支持任意節(jié)點(diǎn)的et...
摘要:年月日,發(fā)布版本,本次版本更新帶來(lái)了全新的應(yīng)用市場(chǎng)交付體驗(yàn),并對(duì)源碼類服務(wù)的運(yùn)行機(jī)制架構(gòu)服務(wù)管理等方面做了大量?jī)?yōu)化。發(fā)布社區(qū)公開(kāi)應(yīng)用。我們正在進(jìn)行的是將應(yīng)用轉(zhuǎn)化為應(yīng)用存放于應(yīng)用市場(chǎng)中供用戶直接安裝使用。 2019年7月8日,Rainbond發(fā)布5.1.5版本,本次版本更新帶來(lái)了全新的應(yīng)用市場(chǎng)交付Pipeline體驗(yàn),并對(duì)源碼類服務(wù)的運(yùn)行機(jī)制、ServiceMesh架構(gòu)、服務(wù)管理等方面做...
閱讀 2752·2021-10-22 09:55
閱讀 2157·2021-09-27 13:35
閱讀 1339·2021-08-24 10:02
閱讀 1641·2019-08-30 15:55
閱讀 1277·2019-08-30 14:13
閱讀 3539·2019-08-30 13:57
閱讀 2053·2019-08-30 11:07
閱讀 2537·2019-08-29 17:12