一、概述

Python 阵营的组态管理工具!个人对 Python 熟悉度大于 Ruby。3
不用帮每台机器 (instance) 预载 agent 4,只要有 SSH 和 Python 就可以闯天下!

系统环境: CentOS 7.7 MINI

在目前 4 大主流的组态管理工具 (Puppet, SaltStack, Chef, Ansible) 中, Ansible 是最容易上手,且马上就可以用的工具。

Ansible 是怎么运作的?

在 Ansible 的世界里,我们会通过 inventory 档案来定义有哪些 Managed node (被控端),并借由 SSH 和 Python 进行沟通。
Ansible系列教程-环境部署(一)-Allen技术博客
换句话说,当 Control Machine (主控端) 可以用 SSH 连上 Managed node,且被连上的机器里有预载 Python 时,Ansible 就可以运作了!

Control Machine 指的是我们主要会在上面操作 Ansible 的机器,冻仁喜欢用主控端来形容它。它可以是我们平时用的电脑、手机 1 或机房里的某一台机器,也可以把它想成是一般 Lab 练习里的 Workstation。

Managed node 则是被 Ansible 操纵的机器,冻仁喜欢用被控端来形容它。在很多的 Lab 练习里会用 Server 来称呼它。

在一般的情况下,我们只需在 Control Machine 里安装 Ansible 即可,因为 GNU/Linux 和 macOS 的 Managed node 都早已预载了 Python 2.5 以上的版本,且开通了 SSH 连线的条件。

二、开始安装

  1. 新增 epel-release 第三方套件来源。
    # yum install -y epel-release

  2. 安装 Ansible。
    # yum install -y ansible

    Ansible系列教程-环境部署(一)-Allen技术博客

三、配置Ansible

安装好 Ansible 后,我们可以在 /etc/ansible/ 的目录底下找到 Ansible 的配置文件

通常我们较偏爱把 ansible.cfg 和 hosts 这两个档案与其它的 Playbooks 放在同个专案目录底下,然后通过版本控制系统 (例如 Git) 把它们一起储存起来,以实现 Ansible 的 Infrastructure as Code!

Ansible系列教程-环境部署(一)-Allen技术博客

修改如下:

Ansible系列教程-环境部署(一)-Allen技术博客
Ansible系列教程-环境部署(一)-Allen技术博客
Ansible系列教程-环境部署(一)-Allen技术博客

3.1 inventory 是什么?

inventory 就单字本身有详细目录、清单和列表的意思。在这里我们可以把它当成是一份主机列表,我们可通过它对定义每个 Managed Node 的代号、IP 位址、连线相关资讯和群组。

1.若有对 Control Machine 本机操作的需求,建议于 /etc/ansible/hosts 补上 local 的设定。

# For root user.
$ /bin/echo -e "[local]\nlocalhost ansible_connection=local" >> /etc/ansible/hosts

# For sudo user.
$ sudo su -c '/bin/echo -e "[local]\nlocalhost ansible_connection=local" >> /etc/ansible/hosts'

3.2 Hello World

当已上的设置都完成了,您可以试著在终端机里用 Ansible 呼叫本机印出 Hello World。

# ansible localhost -m command -a 'echo Hello World.'
localhost | SUCCESS | rc=0 >>
Hello World.

欢迎来到 Ansible 的世界!:D

Ansible系列教程-环境部署(一)-Allen技术博客

本文是全系列中第1 / 1篇:Ansible

  • Ansible系列教程-环境部署(一)