Ansible是系统管理员自动化运维的利器。Ansible使配置、交付和管理各种容器和软件部署变得非常容易。基于轻量级模块的架构非常适合系统管理。一个优点是如果一个节点不是由Ansible管理的,它的资源将不会被使用。本文介绍使用Ansible配置Vagrant实例,它是一个配置好的基础虚拟机镜像,其中包含开发环境所需的工具。您可以使用它来部署开发环境,然后与其他成员协作。使用Ansible,您可以使用您的开发包自动配置Vagrant实例。我们使用Fedora24作为主机,CentOS7作为Vagrant实例。设置您的工作环境在使用Ansible配置Vagrant实例时,您需要做一些准备工作。首先在主机上安装Ansible和Vagrant,在你的主机上运行以下命令进行安装:sudodninstallansiblevagrantvagrant-libvirt上面的命令将在你的主机上安装Ansible和Vagrant,并包含Vagrant的libvirt接口。Vagrant不提供托管你的虚拟机的功能,它需要第三方工具,如:libirt、VirtualBox、VMWare等。这些工具直接与你的Fedora系统上的libvirt和KVM一起工作。然后确保您的帐户位于正确的wheel用户组中,并确保您可以运行sysadmin命令。如果您的帐户是在安装过程中以管理员身份创建的,那么您必须属于该用户组。运行以下命令检查:id|grepwheel如果可以看到输出,那么你的账户就在这个组中,可以进行下一步。如果没有,则需要运行以下命令,此步骤需要您提供root帐户的密码,将替换为您的用户名:su-c'usermod-a-Gwheel'然后,您需要注销然后重新登录并确保您在用户组中。现在要设置您的第一个Vagrant实例,您需要使用Ansible对其进行配置。在设置Vagrant实例配置镜像实例之前,需要先创建它。创建一个目录,存放Vagrant实例相关的文件,并作为当前工作目录。使用以下命令:mkdir-p~/lampbox&&cd~/lampbox在创建镜像实例之前,你需要弄清楚用途。本镜像实例是一个运行CentOS7的基础系统,模板包括Apache的web服务器、MariaDB(MySQL原开发者创建的流行开源数据库)数据库和PHP服务器。要初始化Vagrant实例,请使用vagrantinit命令:vagrantinitcentos/7此命令初始化Vagrant实例并创建一个名为Vagrantfile的文件,其中包含一些预配置的变量。打开它并编辑它,下面的命令显示了用于此配置的基本图像实例。config.vm.box="centos/7"现在设置端口转发,以便在配置并运行Vagrant实例后对其进行测试。在Vagrantfile最后的end语句之前添加如下配置:config.vm.network"forwarded_port",guest:80,host:8080该命令将Vagrant实例的80端口映射到主机的8080端口。下一步是将Ansible设置为配置Vagrant实例的工具。在最后的end语句之前将以下配置添加到Vagrantfile中,使用Ansible作为配置提供程序:config.vm.provision:ansibledo|ansible|ansible.playbook="lamp.yml"end(这三行必须在最后的语句之前添加endstatement)注意一句ansible.playbook="lamp.yml"定义了配置镜像实例的Ansibleplaybook的名称。创建Ansibleplaybook在Ansible中,playbook是指在您的远程节点上执行的策略,换句话说,它管理远程节点的配置和部署。详细来说,playbook是一个Yaml文件,里面写着你要在远程节点上执行的任务。因此,您需要创建一个名为lamp.yml的playbook来配置镜像实例。在与Vagrantfile相同的目录下创建一个lamp.yml文件,并将以下内容粘贴到该文件中:----hosts:allbecome:yesbecome_user:roottasks:-name:InstallApacheyum:name=httpdstate=latest-name:InstallMariaDByum:name=mariadb-serverstate=latest-name:InstallPHP5yum:name=phpstate=latest-name:启动Apacheserverservice:name=httpdstate=started-name:Installfirewalldyum:name=firewalldstate=latest-name:Startfirewalldservice:name=firewalldstate=started-name:Openfirewallcommand:firewall-cmd--add-service=http--permanent每一行的含义:hosts:all指定playbook需要在Ansible配置文件中定义的所有主机上执行,因为主机还没有已定义,该剧本将仅在本地运行时执行。sudo:true表示该任务需要以root权限运行。(LCTT译注:上面的配置中少了这条语句。)tasks:指定playbook运行时需要执行的任务,在这个section下:name:...describe任务名称yum:...describe任务应该由yum模块执行,可选的key=value键值对将由yum模块使用。当剧本运行时,它会安装最新的ApacheWeb服务(http)、MariaDB和PHP。安装完成并启用firewalld后,为Apache打开一个端口。您可以通过编写剧本来做到这一点。现在是配置它的时候了。ConfiguringMirroringInstancesUsingAnsible配置Vagrant实例只需要以下步骤:vagrantup--providerlibvirt上面的命令运行Vagrant实例,将实例的基础镜像下载到宿主机(如果还没有下载的话),然后运行lamp.yml来配置。如果一切正常,输出应该类似于以下示例:此输出表明镜像实例已配置。现在要检查该服务是否可用,请在主机上打开浏览器并输入http://localhost:8080。记住本地主机的8080端口是Vagrant实例映射过来的80端口。您应该会看到Apache欢迎屏幕,如下所示。要修改你的Vagrant实例,你可以修改lamp.yml,你可以在Ansible的官方网站上找到很多文章。然后运行以下命令重新配置:vagrantprovision总结现在我们知道如何使用Ansible提供Vagrant实例。这只是一个基本示例,但您可以使用这些工具实现不同的示例。例如,您可以使用最新版本的所需工具部署完整的应用程序。现在您可以使用Ansible来配置您自己的远程服务器和容器。