使用Ansible自动安装中间件到Vagrant的CentOS上的方法
即使有人告诉我使用Ansible可以比使用Chef更容易地自动创建服务器、部署等等,我还是感觉不太明白,除非我自己尝试一下。
这次事先在Mac本地用Vagrant准备了CentOS,并使用Ansible来安装中间件,进行了一些尝试。
在Mac上安装Ansible
在不同的操作系统上,安装ansible的方法是不同的。
对于Mac来说,使用brew来进行安装是最快的方法。
$ brew update
$ brew install ansible
进行SSH配置
首先,我们需要在主机操作系统(Mac)上配置SSH,以便能够执行Ansible命令到客户操作系统(CentOS)上。
- Mac側の作業
vi ~/.ssh/config
增加以下内容
Host [vagrantのIPアドレス]
IdentityFile ~/.vagrant.d/insecure_private_key
User vagrant
准备主机文件。
在Ansible中有一个叫做Inventory的概念。
简单来说,就是指使用Ansible进行操作的对象。
您可以在清单中设置组和主机,如下所示。
[Group名]
ホスト名
在一个组中嵌套另一个组是可能的。
[Group:children]
ホスト名
这次我们决定简单地指定一个组和一个主机名。
默认情况下,它会检查/etc/ansible/hosts的内容,所以这次我们将准备一个名为hosts的文件并从当前目录中读取它。
vi hosts
[servers]
192.168.x.x
假设已创建了这样的文件。
尝试向Vagrant的CentOS发送ping请求。
只需要一种方式就可以将以下命令翻译成中文:
以下指令:
发送ping命令到hosts文件中servers组的主机。
ansible -i hosts servers -m ping
– “I” 是指定任意 Inventory 文件的选项。
主机是Inventory文件的名称。
服务器是一个组名。
-m 是指定任意模块的选项。
在Ansible中有一个名为“模块”的概念
有许多不同的命令,例如ping、yum和command。
用这些进行实际操作。
请参阅官方网站以获得更详细信息。
所有模块 — Ansible文档
http://docs.ansible.com/list_of_all_modules.html
试着在Vagrant上安装Nginx。
好了,从这里开始就是正式的了。
如前所述,在Ansible中,我們使用模塊來對服務器進行各種操作。
运行模块的方法有多种。
-
- コマンドから直接実行する方法
- プレイブックを利用する方法
有两个选项。
若要正式使用Ansible,需要使用第二个Playbook。
模板或手册,简单来说,
这是一个将我想在Ansible中执行的任务整理在一起的东西。
通过执行这个操作,可以一次性搭建开发环境!
虽然说做到这一步很麻烦,
但这次我制作了一个在CentOS上安装nginx的playbook。
---
- hosts: servers
sudo: true
user: vagrant
tasks:
- name: get nginx repo
command: rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
- name: install nginx
yum: name=nginx state=latest
- name: start nginx service
service: name=nginx state=started
-
- Nginxのリポジトリを追加
-
- 最新版をyumでインストール
- インストールが完了したらNginxをスタート
这个playbook是针对hosts文件的servers组中的主机执行的三个任务。
Playbook将以.yaml格式保存。
因此,我选择了一个名为nginx.yaml的文件。
实施可以通过以下命令进行。
ansible-playbook -i hosts nginx.yaml
完成了一切后,预计Nginx已在指定的Vagrant上的CentOS上安装。
这次就到此为止。
下一次,我打算写一篇关于一个非常重要的概念——角色(Role)。