一、上集回顾
1、运维:
手动 --> 标准化 --> 工具化 --> 自动化 --> 智能化
2、工具化
OS Install:PXE ,Cobbler;Virutalization & Cloud Commputing
OS Config: ansible,fabric,puppet,saltstack,chef,cfengine,...
Deployment: fabric,ansible,...
Task Exec:fabric,ansible,func,...
3、Ansible:agentless(ssh),modules
Modules:
copy,file,fetch..
yum,easy_install,pip,
service,
group,user,
cron,at,..
command,shell
script,
ping,
template,...
Ad-Hoc,Playbook,...
$ ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS -C -f FORKS
二、Ansible Playbook
1、此前我们在命令行中直接运行的方式很难复用,比如我们管控十台主机都装上nginx并启动服务,我们使用ansible命令可直接使用,不过万一其中某几台主机出现故障我们需要重新部署这些命令我们需要记得住并且还需要重新来一遍。所以我们可以让每一台主机要执行的任务将其保存在文件中,这个文件组织成为YAML格式,必要的时候我们只需要使用ansible命令来执行这个指定的playbook,他会读取每一个指定的操作,将其在目标主机上完成。
2、YAML
a、定义
b、功能
c、语言的构成元素
c、基本数据结构
标量、数组、关联数组
维基百科:https:zh.wikipedia.org/wiki/YAML
3、playbook核心元素
a、Hosts:主机即关联到的主机,即哪些主机来执行这些任务
b、Tasks:任务列表,指要唱哪几出戏。
c、Variables:在唱戏的过程中如果有些数据我们需要重复使用可以使用此字段
d、Templates:生成文件时还可以基于模板来定义,这样对于不同的主机我们就可以使用不同的内容了。
e、Roles:我们可以将playbook分片以后构建成Roles。
f、Handlers:由特定条件触发的任务。
4、Playbook的基础组件
a、Hosts:运行指定任务的目标主机;
b、remoute_user:在远程主机上执行任务的用户;即目标主机上以哪个用户的身份来执行任务
sudo_user:如果以普通用户来执行任务有时候需要切换到管理员才能执行
c、tasks:任务列表,我们要执行管控任务时,我们的任务有哪些个?每一个任务的给定方法有两种,但是无论是哪种给法通常用来指明说调哪个模块传哪些参数从而让他完成哪个管理任务格式如下:
(1)、action:module arguments:动作和模块参数;action指你打算执行的是删除还是创建这种,调哪个模块,以及向这个模块传递什么参数。
(2)、module:arguments :模块名称和模块参数;即直接给定模块名称,以及要传递给模块的参数。
注意:shell 和command 模块后面直接跟命令,而非key=value类的参数列表;
某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;
任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用 -t 指定进行调用;
5、运行playbook的方式:
a、ansible-playbook --check :只检测可能会发生的改变,但不真正执行操作
b、ansible-playbook --list-hosts: 列出运行任务的主机;
c、运行