使用 Ansible 配置 Vagrant Box

[ad_1]

对于想要自动化系统管理任务的系统管理员来说,Ansible 是一个很好的工具。 从配置管理到为应用程序部署配置和管理容器,Ansible 让它变得容易. 基于轻量级模块的架构是系统管理的理想选择。 一个优点是当节点不由 Ansible 管理时,不使用任何资源。

本文介绍如何使用 Ansible 进行配置 流浪盒子. 简单来说,Vagrant box 是一个预先打包了运行开发环境所需工具的虚拟机。 您可以使用这些框来分发其他团队成员用于项目工作的开发环境。 使用 Ansible,您可以使用开发包自动配置 Vagrant 框。

本教程使用 Fedora 24作为主机系统和 中央操作系统 7 作为流浪者盒子。

设置先决条件

要使用 Ansible 配置 Vagrant 框,您需要进行一些设置。 本教程要求您在主机上安装 Ansible 和 Vagrant。 在您的主机上,执行以下命令来安装工具:

sudo dnf install ansible vagrant vagrant-libvirt

上面的命令在你的主机系统上安装 Ansible 和 Vagrant,以及 Vagrant 的 libvirt 提供程序。 Vagrant 不提供托管虚拟机来宾 (VM) 的功能。 相反,它依赖于第三方提供商,例如 libvirt, VirtualBox, VMWare 等来托管虚拟机。 此提供程序直接与您的 libvirt 和 KVM 一起使用 Fedora 系统。

接下来,确保您的用户在 wheel 组中。 这个特殊组允许您运行系统管理命令。 如果您以管理员身份创建用户,例如在安装期间,您将拥有此组成员身份。 运行以下命令:

id | grep wheel

如果您看到输出,则您的用户在组中,您可以继续下一部分。 如果没有,请运行以下命令。 您需要提供 root 帐户的密码。 用您的用户名替换文本

su -c 'usermod -a -G wheel <username>'

然后,您将需要注销并重新登录,才能正确继承组成员身份。

现在是时候创建您的第一个 Vagrant 盒子了,然后您将使用 Ansible 对其进行配置。

设置 Vagrant 盒子

在使用 Ansible 配置盒子之前,您必须创建盒子。 首先,创建一个新目录来存储与 Vagrant box 相关的文件。 要创建此目录并使其成为当前工作目录,请发出以下命令:

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 box 运行后,你可以测试服务器。 要设置端口转发,请在 Vagrantfile 中的 end 语句之前添加以下行:

config.vm.network "forwarded_port", guest: 80, host: 8080

该选项将 Vagrant Box 的 80 端口映射到主机的 8080 端口。

下一步是将 Ansible 设置为 Vagrant Box 的供应商。 在您的 Vagrantfile 中的 end 语句之前添加以下行以将 Ansible 设置为配置提供程序:

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

(您必须在最后的 end 语句之前添加所有三行。)注意语句 ansible.playbook = “lamp.yml”。 该语句定义了用于配置 box 的 playbook 的名称。

创建 Ansible 剧本

在 Ansible 中,剧本描述了要在远程节点上实施的策略。 换句话说,剧本管理远程节点上的配置和部署。 从技术上讲,剧本是一个 YAML 文件,您可以在其中编写要在远程节点上执行的任务。 在本教程中,您将创建一个名为 lamp.yml 的剧本来配置盒子。

要制作剧本,请在 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

下面是对 lamp.yml 每一行的解释。

  • hosts: all 指定 playbook 应该在 Ansible 配置中定义的每个主机上运行。 由于尚未配置主机,因此 playbook 将在 localhost 上运行。
  • sudo: true 表示任务应该以 root 权限执行。
  • tasks:指定 playbook 运行时要执行的任务。 在任务部分下:
    • name: … 为任务提供描述性名称
    • yum: … 指定任务应该由 yum 模块执行。 选项名称和状态是 yum 模块使用的键=值对。

当这个 playbook 执行时,它会安装最新版本的 Apache (httpd) 网络服务器、MariaDB 和 PHP。 然后它安装并启动firewalld,并打开一个端口 Apache 服务器。 您现在已经完成了为盒子编写剧本的工作。 现在是配置它的时候了。

配置盒子

在使用使用 Ansible 配置的 Vagrant Box 之前,还有几个最后的步骤。 要运行此配置,请执行以下命令:

vagrant up --provider libvirt

上面的命令启动 Vagrant box,如果还没有基本 box 镜像,则将其下载到主机系统,然后运行 ​​playbook lamp.yml 进行配置。

如果一切正常,输出看起来有点类似于这个例子:

此输出显示该框已被配置。 现在检查服务器是否可以访问。 要确认,请在主机上打开 Web 浏览器并将其指向地址 https://localhost:8080。 记住,本地主机的 8080 端口被转发到 Vagrant 盒子的 80 端口。 你应该受到欢迎 Apache 欢迎页面如下所示:

流浪者盒子与 Apache 跑步

要更改您的 Vagrant box,首先编辑 Ansible playbook lamp.yml。 你可以在 Ansible 上找到丰富的文档 它的官方网站. 然后运行以下命令以重新配置该框:

vagrant provision

结论

您现在已经了解了如何使用 Ansible 来配置 Vagrant 盒子。 这是一个基本示例,但您可以将这些工具用于许多其他用例。 例如,您可以部署完整的应用程序以及所需工具的最新版本。 在使用 Ansible 配置远程节点或容器时发挥创意。

[ad_2]

Related Posts