当前位置: 首页 > 科技观察

如何使用Ansible部署容器?_0

时间:2023-03-14 14:42:47 科技观察

【.com速译】容器是不可避免的,因为它们继续在企业IT部署中发挥核心作用。您可以将它们部署为应用程序和服务等。此外,部署容器的方法与部署它们的原因一样多种多样:?Docker?Kubernetes?Rancher?SolarisContainers?Rocket?MicroK8s?Tectonic等等。但是您是否知道还有另一种部署容器的方法可能会让远程管理员想要尝试一下?这种方法是通过RedHat的开源自动化工具Ansible实现的。简而言之,Ansible是一种在Linux上运行的开源软件供应、配置管理和应用程序部署工具。Ansible有自己的声明式语言,使用剧本(playbook)创建环境,用于在远程计算机上运行简单或非常复杂的命令(或命令集)。当然可以使用Ansible来部署容器。我要展示的不一定是最佳实践场景,在你深入之前,由于每个人的情况和需求不同,下面仅介绍使用Ansible部署容器。有没有更好的办法?当然。但这是否允许您创建高度灵活和可操作的Ansible剧本?一定会的。你需要什么?您至少需要两台服务器,其中一台安装并运行着Ansible。我将演示UbuntuServer18.04的两个实例。您还需要一个具有sudo权限的用户帐户。最后,您需要在服务器之间建立SSH密钥身份验证。如果没有SSH密钥身份验证,则无法使用此方法。以上就是你所需要的。安装Ansible如果您还没有在服务器上运行Ansible,请按照以下步骤进行安装:1.登录到将托管Ansible的Ubuntu服务器。2.使用命令sudoapt-add-repositoryppa:ansible/ansible安装必要的存储库。3、使用命令sudoapt-getupdate更新apt。4.使用命令sudoapt-getinstallansible-y安装Ansible。5.如有必要,使用命令sudoapt-getinstallpython-y安装Python解释器。复制您的SSH密钥要使用此方法,您必须设置SSH密钥身份验证。在Ansible服务器上,使用以下命令创建SSH密钥:ssh-keygen创建密钥后,使用以下命令将其复制到远程计算机:ssh-copy-idSERVER_IP其中SERVER_IP是远程服务器的IP地址.安装Docker接下来,您将在两台(或所有)计算机上安装Docker引擎。要安装Docker引擎,请登录其中一台服务器并执行以下命令:sudoapt-getinstalldocker.iopython3-docker-y安装后,使用以下命令启动并启用Docker引擎:sudosystemctlstartdockersudosystemctlenabledocker最后,使用以下命令连接您的用户添加到Docker组:sudousermod-aGdocker$USER注销并重新登录以使更改生效。在所有计算机上完成这些步骤后,就可以进行下一步了。目录结构现在,我们将创建必要的目录和文件。这将在运行Ansible的计算机上完成。登录到这台计算机并执行命令:mkdir~/docker_project使用命令转到您刚刚创建的目录:cd~/docker_project现在我们将创建主机文件。使用以下命令执行此操作:nanohosts在该文件中,粘贴以下内容:[webserver]SERVER_IP[webserver:vars]ansible_python_interpreter=/usr/bin/python3其中SERVER_IP是远程服务器的IP地址。如果您有多个服务器,该文件将如下所示:[webserver]SERVER_IPSERVER2_IP[webserver:vars]ansible_python_interpreter=/usr/bin/python3保存并关闭该文件。现在我们将创建Ansible剧本。该剧本将执行以下操作:?安装aptitude。?安装几个依赖项。?添加Docker存储库。?安装Docker社区版。?安装DockerPython模块。?拉取官方Ubuntu镜像。?基于您刚刚拉取的Ubuntu镜像创建四个容器。这个新文件将采用标准YAML格式,这意味着您必须密切注意行缩进。不一致的缩进将导致您的脚本失败。使用以下命令创建一个新文件:nanoubuntu_playbook.yml我们的剧集如下所示:-hosts:allbecome:truevars:create_containers:4default_container_name:dockerdefault_container_image:ubuntudefault_container_command:sleep1d任务:-name:Installaptitudeusingaptapt:name=aptitustate=latestupdate_cache=yesforce_apt_get=yes-name:Installrequiredsystempackagesapt:name={{item}}state=latestupdate_cache=yes循环:['apt-transport-https','ca-certificates','curl','software-properties-common','python3-pip','virtualenv','python3-setuptools']-name:AddDockerGPGaptKeyapt_key:url:https://download.docker.com/linux/ubuntu/gpgstate:present-name:AddDockerRepositoryapt_repository:repo:debhttps://download.docker.com/linux/ubuntuxenialstablestate:present-name:Updateaptandinstalldocker-ceapt:update_cache=yesname=docker-cestate=latest-name:InstallDockerModuleforPythonpip:name:docker-name:PulldefaultDockerimagedocker_image:name:"{{default_container_image}}"源:拉-name:Createddefaultcontainersdocker_container:name:"{{default_container_name}}{{item}}"图片:"{{default_container_image}}"命令:"{{default_container_command}}"state:presentwith_sequence:count={{create_containers}}保存并关闭文件显然,您可以根据需要修改脚本,因此请仔细阅读脚本并进行相应更改。正如我所说,有多种方法可以处理上述任务。你在上面看到的只是其中之一。它虽然有效,但正好赶上了解如何使用Ansible部署容器。运行Playbook有了playbook,我们现在可以使用以下命令运行它:ansible-playbook-ihostsubuntu_playbook.yml--ask-become-pass--ask-become-pass选项指示Ansible询问远程用户SSH使用sudo密码的密钥(图1)。输入该密码后,按键盘上的Enter键,脚本将运行。图1:脚本在输入SSH密钥后运行该脚本可能需要几分钟才能完成,具体取决于您的网络连接和计算机的速度。完成后,登录到远程服务器,并执行命令:dockerps-a,您应该会看到已部署的新容器(图2)。图2.使用GIMP创建这就是使用Ansible部署容器的全部内容。有一个更好的方法吗?当然有。但是,如果您已经投资于Ansible,为什么不将容器部署添加到您不断增长的剧本列表中呢?原标题:HowtoDeployaContainerUsingAnsible,作者:JackWallen