使用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)。

广告
将在 10 秒后关闭
bannerAds