使用Ansible进行配置管理入门

虽然我对Ansible这个存在有一些了解,但由于我讨厌麻烦的事情,所以从来不关心DevOps之类的东西,我自己通过SSH连接服务器并完成维护和其他工作。

然而,我突然意识到这个叫做Ansible的家伙非常方便。

因此,我决定好好学习一下这个叫做Ansible的东西,以便改变自己以往的愚蠢行为。

目标 (mù

使用Ansible,在虚拟环境中安装nginx并创建状态。

Ansible的基础

Ansible是一种配置管理工具,类似于Shef或Puppet等工具。尽管它是后起之秀(于2012年诞生),但它非常受欢迎,因为不需要将代理程序安装在服务器上,所以管理起来非常方便。Ansible主要由Playbook、Ansible本身、Inventory文件和模块组成。

安装Ansible

我希望这次尝试使用VM+Vagrant+Ansible的配置。(假设已经安装好了VM和Vagrant,我们可以继续进行下去。)

我想要在我的MAC開發環境上使用homebrew安裝Ansible。

brew install ansible

一旦完成了通过上述命令安装Ansible,

移動到一个合适的路径,创建一个用于本次教程的虚拟空间。

mkdir ansible/test
cd ansible/test
vagrant init bento/centos-7.2
vagrant up

出现错误了。。。唉。

Vagrant was unable to mount VirtualBox shared folders. 
This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
vagrant plugin install vagrant-vbguest

记下来vagrant ssh-config中显示的内容,因为以后会用到。

创建库存文件

Inventory文件是指Ansible要连接到的目标主机的定义。
看起来Inventory文件可以做很多事情,但这次我们将选择一个简单的方案,适合初学者。

创建一个名为hosts的文件(名为Inventory文件的)。

vagrant-machine ansible_host=127.0.0.1 ansible_port=2202 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

只需要将ansible_*** 中的信息用vagrant ssh-config 引用相应的值即可。

创建清单文件后,首先尝试进行测试。

ansible all -i hosts -m ping

iオプションはInventoryファイルへのパスを指定することができる。ここでいうallはInventoryファイルに定義されている全てのホストに当てはまるグループ名です。また、pingはPingモジュールを指します。

在掌握基本知识后,需要去创建一个包含任务执行内容的yml文件。

我想创建一个名为site.yml的文件。


---

- name: チュートリアル
  hosts: all
  tasks:

让我们继续解释其中的内容吧。。

    • nameはログに表示される名前。

 

    • hostsはデプロイ対象ホスト名。allによって Inventoryに定義されているすべてのホストに対して実行する.

 

    tasksは実タスクの定義。今はからになっている。

ansible-playbook -i hosts site.yml

- name: Playbookチュートリアル
  hosts: all
  become: true
  tasks:
    - name: libselinux-pythonをインストール
      yum:
        name: libselinux-python
        state: present
    - name: EPELリポジトリをインストール
      yum:
        name: epel-release
        state: present
    - name: Nginxのインスト〜る
      yum:
        name: nginx
        state: present
    - name: Nginxサービスの自動起動を設定
      service:
        name: nginx
        state: started
        enabled: true

在输入这个后,最后输入 http://192.168.33.10/,成功显示了nginx页面!

Ansible看起来非常好用啊~ 下一次我们会挑战更高级的功能!

广告
将在 10 秒后关闭
bannerAds