在每个公司刚起步的时候,都是先有程序员,当程序写好以后,上线部署都是程序员兼职,于是手动登录机器,敲各种命令,将服务部署起来,只要服务能跑起来就行了。

经过一段时间的运营以后,单机已经无法承载,需要多机部署,线上运行的机器的数量超过3台,手动作业就会带来极大的操作风险,如果长期如此,运营事故一定会接踵而至。

好一点的运维就会把常用的操作固化成脚本来作业,在ansible出现以前,都是 ssh + expect 的组合,ansible的出现给了运维更多发挥的空间。

什么是anisble?

Ansible是一个IT自动化工具。它可以配置系统,开发软件,或者编排高级的IT任务,例如持续开发或者零宕机滚动更新。

ansible的体系结构?

1
2
3
4
5
6
7
8
9
10
11
                             +---------------------+
| 目标机器 |
/ +---------------------+
/
+-----------------+ / +---------------------+
| control machine | -----| 目标机器 |
+-----------------+ \ +---------------------+
\
\ +---------------------+
| 目标机器 |
+---------------------+

ansible的运行模式

ansible有模式

  • 纯命令行
  • playbook
  • python api模式

ansible命令行模式

1
> ansible -h

即可掌握大致的用法。

常见的参数如下:

  • -i hosts # 指定操作的主机文件
  • -m raw/copy # raw表示执行命令 copy表示传文件
  • -a “hostname” # 后面接具体的命令
  • -b –become-user=user00 #改变执行的用户

playbook模式

playbook通俗的来讲,就是把命令行操作的内容按照一定的规范编排起来。

  1. Playbooks contain plays
  2. Plays contain tasks
  3. Tasks call modules
  4. at last, we have handlers which can be triggered to be executed after some actions.

执行playbook

1
2
# -f 表示同时在几台目标机器上执行
$ ansible-playbook playbook.yml -f 10

python api模式

关于api的话题,后面专门起一个话题来讲