ansible入门

简要介绍ansible

概述

AUTOMATION FOR EVERYONE,这是官方对Ansbile的定位。看字面意思应该很明确了,它就是为了完成系统各种自动化而服务。用它部署应用、管理各类系统,帮助运维人员简化很多复杂场景,提高工作效率。Ansible有收费版和开源版本,我一直用开源的,能满足现在的需求。用ansbile也没几个月,之前用puppet,salt,不能说都比这些好,但ansible的优点还是很多的,不然也不至于redhat会收购吧。

进入正题

使用场景

  • 配置管理。从系统初始化完成到正式上线,我们会将指定机器角色定义好,比如是proxy(负载均衡)还是web服务器,这不限于是单台机器或多台机器。单台机器可以承担多个角色,比如我们将dns角色和web服务器角色共同应用于某台机器,以达到机器复用的目的。
  • 实时执行命令-Ad hoc。Ansible有好多模块支持命令行操作,比如copy,shell等。

优点

  • 没有客户端,命令通过ssh通道执行。一般情况下加key认证简单方便。像Puppet和salt C/S架构,如果master有故障会很麻烦,但Ansible不会,只需要将私钥保持好,可以在任意机器执行命令。
  • Python语言编写。很多运维人员都用python,也喜欢用python写的开源软件,这点大家应该都懂的。

安装

  • mac可以直接用brew

brew install ansible

  • CentOS安装可以用yum,需要安装EPEL yum源

yum install ansible

KEY认证

1.在中控机(控制所有机器的主机)生成key,以root用户操作,demo如下:

[root@web01 app]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c3:8c:fc:26:2c:eb:6d:42:cc:50:d4:56:21:e1:f0:ba root@web01.bj
The key's randomart image is:
+--[ RSA 2048]----+
|   .o.ooo.       |
|    .+o.         |
|   . .o          |
|  .  o +         |
|   +. o S        |
|    +o . .       |
|   .E o o        |
|    .+.o         |
|   .oo.          |
+-----------------+

2.将中控机的公钥传到各个主机的认证文件中(默认在$HOME/.ssh/authorized_keys),当前$HOME为root.这个key不用手工复制,用ssh-copy-id操作,如下:

[root@web01 app]# ssh-copy-id root@web02.bj
The authenticity of host 'web02.bj (10.80.0.11)' can't be established.
RSA key fingerprint is 43:f2:67:6a:11:5b:16:0f:6f:65:f9:32:74:06:ca:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'web02.bj,10.80.0.11' (RSA) to the list of known hosts.
root@web02.bj's password:
Now try logging into the machine, with "ssh 'root@web02.bj'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

提示让你输入目标机器的用户密码,输入完成公钥会自动传到对方认证KEY文件(authorized_keys)。

到这步,整个安装过程就结束了,可以简单跑个命令测试下。

简单测试

  • 在ansible主机列表配置文件/etc/ansible/hosts中,将需要管理的机器添加机器,如下:
[root@web01 app]# cat /etc/ansible/hosts
web02.bj

如上,就web02.bj一台机器。咱们运行ping模块测试ansible all -m ping

[root@web01 app]# ansible all -m ping
web02.bj | success >> {
    "changed": false,
    "ping": "pong"
}

看到pong回应了,说明测试成功了。

(全文完)
本人水平有限,请指正、并请不吝赐教。转载本站文章请注明作者和出处。