在Windows上尝试使用ansible_local部署工具(使用Vagrant + Ansible进行环境自动化配置)
我在这里介绍了如何使用Vagrant + VirtualBox在Windows上构建虚拟机。
这次我想写一下使用Ansible来自动化CentOS6.7的初始设置。
(由于时间不多,我会省略一些内容)
以下是验证环境(截至2016年3月29日最新版本)。
适用于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的配置工具。
由于主机操作系统是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应适用的角色。
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入門