在Windows上尝试使用ansible_local部署工具(使用Vagrant + Ansible进行环境自动化配置)

我在这里介绍了如何使用Vagrant + VirtualBox在Windows上构建虚拟机。
这次我想写一下使用Ansible来自动化CentOS6.7的初始设置。
(由于时间不多,我会省略一些内容)

以下是验证环境(截至2016年3月29日最新版本)。

ソフトウェア名バージョンWindows7 (64bit)Vagrant1.8.1VirtualBox5.0.16Ansible1.9.4

适用于Windows用户,对于觉得Cygwin这种东西太麻烦的人。

Ansible是什么?

简单来说,这是一个非常简单的配置管理工具。
它是一个无需代理(只要能够进行SSH连接即可)的工具,特点是使用简单的定义文件(YAML,ini格式)。
与竞争对手的配置管理工具如Chef和Puppet相比,被说成更加易于上手。
我也是第一次尝试使用,发现它非常容易理解。

有位朋友已经为我总结了概要,所以我将附上链接。

    • Ansibleをはじめる人に。

 

    • Ansible 入門

 

    • AnsibleによるInfrastructure as code入門

 

    • Ansible ではじめるインフラのコード化入門

 

    入門Ansible

再者,官方文档做得非常好。
每个模块的语法、选项等都写得很详细,而且有很多例句。看起来很多人只看这个。

目前只有《入門Ansible》一本日语书籍可供参考,不过听说4月底还将出版O’Reilly的《初めてのAnsible》。

与Vagrant进行合作

虽然Ansible可以单独运行,但这次我们将使用Ansible作为Vagrant的provisioner,来自动化”创建虚拟机”,”系统初始化设置”,以及”安装常用软件包”。

Vagrant有两个用于Ansible的配置工具。

provisionerサポートしたバージョン仕組みansible1.7ホストOSのAnsibleを使ってプロビジョニングansible_local1.8ゲストOSのAnsibleを使ってプロビジョニング

由于主机操作系统是Windows,无法安装Ansible,因此我们使用ansible_local。(可能使用Cygwin可以实现)。
ansible_local会检查是否在虚拟机操作系统中安装了Ansible,如果没有安装,则会自动安装,并通过本地连接执行Playbook。
因此,在Windows环境中不需要额外安装任何内容。

如果只是为了创建本地开发环境,也可以用shell脚本进行初始设置,然后使用vagrant package打包并重复使用该镜像。不过,可能将来会使用Ansible来管理生产环境,或者团队需要统一开发环境,所以我还是试用了一下。

Playbook和Vagrantfile

尽管还没有完全创建好,但是我们已经将本次创建的文件发布到了这里。计划逐步进行更新。

在创建Playbook的阶段中,当进行尝试和错误重复时,不需要与Vagrant进行配合,而是应该使用Vagrant的sahara插件的沙盒模式,以便立即回滚状态,并且仅使用Ansible单独执行Playbook会更有效率(因为每次创建虚拟机都是浪费时间)。

    サンドボックスモードON
vagrant up
vagrant sandbox on

据说在停止虚拟机的情况下启用沙盒模式会更快,但是如果回滚它,共享文件夹可能无法挂载?所以我会在启动状态下将沙盒模式设置为开启。

    Playbookを更新して、以下を実行
ansible-playbook -i /vagrant/playbook/hosts/local /vagrant/playbook/webservers.yml
    以前の状態に戻すときはロールバック
vagrant sandbox rollback

剧本 (jù

    • ディレクトリ構成は、公式のベストプラクティスの構成に近くなるように作成。

 

    • 例と同じようにwebサーバーとdbサーバー用のPlaybookを作成。

 

    • 各サーバー共通で実行するタスク(locale, timezone, ntp設定など)をcommonロールとして定義

 

    • webサーバーで実行するタスク(httpd, phpインストールなど)をwebロールとして定義

 

    dbサーバーで実行するタスク(postgresqlインストールなど[予定])をdbロールとして定義

定义每个Playbook应适用的角色。

ロールwebサーバーdbサーバーcommon○○web○×db×○

Vagrantfile (Vagrant 文件)

    • webサーバー用ホスト(192.168.33.10)、dbサーバー用ホスト(192.168.33.20)の仮想マシン構築設定

 

    • ansible_localによるプロビジョニング指定

 

    どのサーバーにどのPlaybookを適用するかの指定

使用指南

1. 安装VirtualBox和Vagrant。

如果您使用的是Vagrant 1.8或更高版本,那就没问题了。这里一念确保提供了安装步骤。

2. 下载Vagrantfile和Playbook

git clone https://github.com/ozawan/vagrant-ansible-centos67.git

如果没有安装git,请以ZIP格式下载。

3. 启动虚拟机

cd vagrant-ansible-centos67
vagrant up

尽管需要一段时间来配置,但预设的CentOS6.7应该会启动。

如果没有添加Vagrant Box(bento/centos-6.7),则需要下载并添加,这将花费更多时间。

其他参考网站

Ansible Galaxy – 作成したRoleの共有サービス

Ansible公式のPlaybookサンプル – Githubリポジトリ

Ansible コーディング規約 (の例) – edXが公開したコーディング規約を翻訳したもの

YAML入門 – YAML入門

广告
将在 10 秒后关闭
bannerAds