使用Ansible 来交付 Vagrant 实例

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

设置工作环境

在用 Ansible 配置 Vagrant 实例时,你需要做几件准备的事情。首先在宿主机上安装 Ansible 和 Vagrant,在你的主机上运行下面的命令来安装:

sudo dnf install ansible vagrant vagrant-libvirt

上面的命令将 Ansible 和 Vagrant 在你的宿主机上,以及包括 Vagrant 的 libvirt 接口。Vagrant 并没有提供托管你的虚拟机的功能,它需要第三方工具比如:libirt、VirtualBox、VMWare 等等。这些工具可以直接与你的 Fedora 系统上的 libvirt 和 KVM 协同工作。

接着确认你的账户在正确的 wheel 用户组当中,确保你可以运行系统管理员命令。如果你的账号在安装过程中就创建为管理员,那么你就肯定在这个用户组里。运行下面的命令查看:

id | grep wheel

如果你能看到输出,那么你的账户就在这个组里,可以进行下一步。如果没有的话,你需要运行下面的命令,这一步需要你提供 root 账户的密码,将 换成你的用户名:

su -c 'usermod -a -G wheel   ' 

然后,你需要注销然后重新登录,确保在用户组里。

现在要建立你的第一个 Vagrant 实例了,你需要用 Ansible 来配置它。

设置 Vagrant 实例

配置一个镜像实例之前,你需要先创建它。创建一个目录,存放 Vagrant 实例相关的文件,并且将它作为当前工作目录,用下面这条命令:

mkdir -p ~/lampbox && cd ~/lampbox

在创建镜像实例之前,你需要搞清楚目的,这个镜像实例是一个运行 CentOS 7 基础系统,模板包括 Apache 的 Web 服务,MariaDB(MySQL 原开发者创建的一个流行的开源数据库)数据库和 PHP 服务。

初始化 Vagrant 实例,用 vagrant init 命令:

vagrant init centos/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 实例的工具,将下述配置加入到 Vagrantfile 最终的 end 语句之前,将 Ansible 作为配置工具:

config.vm.provision :ansible do |ansible|
 ansible.playbook = "lamp.yml"
end

(必须将这三行在最后的 end 语句之前加入)注意 ansible.playbook = “lamp.yml” 这一句定义了配置镜像实例的 Ansible playbook 的名字。

创建 Ansible playbook

在 Ansible 之中,playbook 是指在你的远端节点执行的策略,换句话说,它管理远端节点的配置和部署。详细的说,playbook 是一个 Yaml 文件,在里面写入你要在远端节点上将要执行的任务。所以,你需要创建一个名为 lamp.yml 的 playbook 来配置镜像实例。

在 Vagrantfile 相同的目录里创建一个 lamp.yml 文件,将下面的内容粘贴到文件当中:

---
- hosts: all
 become: yes
 become_user: root
 tasks:
 - name: Install Apache
   yum: name=httpd state=latest
 - name: Install MariaDB
   yum: name=mariadb-server state=latest
 - name: Install PHP5
   yum: name=php state=latest
 - name: Start the Apache server
   service: name=httpd state=started
 - name: Install firewalld
   yum: name=firewalld state=latest
 - name: Start firewalld
   service: name=firewalld state=started
 - name: Open firewall
   command: firewall-cmd --add-service=http --permanent

每一行代表的意思:

  • hosts: all 指定该 playbook 需要在 Ansible 配置文件中定义的所有主机上都执行,因为还没定义主机, playbook 将只在本地运行。

  • sudo: true 表明该任务需要用 root 权限运行。(LCTT 译注:此语句上述配置中缺失。)

  • tasks: 指定当 playbook 运行是需要执行的任务,在这一节之下:

    • name: … 描述任务的名字
    • yum: … 描述该任务应该由 yum 模块执行,可选的 key=value 键值对将由 yum 模块所使用。

当 playbook 运行时,它会安装最新的 Apache Web 服务(http),MariaDB 和 PHP。当安装完毕并启动防火墙 firewalld,给 Apache 打开一个端口。你可以通过编写 playbook 来完成这些。现在可以配置它了。

配置镜像 实例

用 Ansible 配置 Vagrant 实例只需要以下几步了:

vagrant up --provider libvirt

上面的命令运行 Vagrant 实例,将实例的基础镜像下载到宿主机当中(如果还没下载的话),然后运行 lamp.yml 来进行配置。

如果一切正常,输出应该和下面的例子类似:

这个输出显示镜像实例已经被配置好了,现在检查服务是否可用,在宿主机上打开浏览器,输入 http://localhost:8080,记住本地主机的 8080 端口是 Vagrant 实例映射过来的 80 端口。你应该可以看到如下的 Apache 的欢迎界面。

要修改你的 Vagrant 实例,你可以修改 lamp.yml,然后运行下面的命令来重新配置:

vagrant provision

总结

现在我们知道怎么用 Ansible 来配置 Vagrant 实例了。这只是一个基本的例子,但是你可以用这些工具来实现不同的例子。比如你可以用所需工具的最新版本来部署一个完整的应用。现在你可以用 Ansible 来配置你自己的远端服务器和容器了。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/217580.html<

(0)
管理的头像管理
上一篇2025-04-13 06:16
下一篇 2025-04-13 06:18

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注