Ansible学习笔记

1、Ansible介绍

Ansible是一款简单的运维自动化工具,只需要使用SSH协议连接就可以来进行系统管理,自动化执行命令,部署等任务。

Ansible的特点:

1、Ansible不需要单独安装客户端,也不需要启动任何服务

2、Ansible是Python中的一套完整的自动化执行任务模块

3、Ansible Playbook采用yaml配置,对于自动化任务执行过一目了然

Ansible组成结构:

Ansible

Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行

Ansible Playbook

任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式

Inventory

Ansible管理主机的清单,默认是/etc/ansible/hosts文件

Modules

Ansible执行命令的功能模块,可以自定义模块

Plugins

插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少

API

提供给第三方程序调用的应用程序编程接口

1.1、Ansible文件介绍

配置文件

/etc/ansible/ansible.cfg

主配置文件,配置Ansible工作特性

/etc/ansible/hosts

主机清单

/etc/ansible/roles

角色存放目录

程序文件

/usr/bin/ansible

主程序,临时命令执行工具

/usr/bin/ansible-doc

查看配置文档,模块功能查看工具

/usr/bin/ansible-galaxy

下载/上传优秀代码或模块到官网平台

/usr/bin/ansible-playbook

定制自动化任务,编排剧本工具

/usr/bin/ansible-pull

远程执行命令工具

/usr/bin/ansible-vault

文件加密工具

/usr/bin/ansible-console

基于Console界面与用户交互工具

1.2、Ansible配置文件

Ansible配置文件:/etc/ansible/ansible.cfg,一般保持默认

[Defaults]

#inventory=/etc/ansible/hosts

主机列表配置文件

#library=/usr/share/my_modules

库文件存放目录

#remote_tmp=~/.ansible/tmp

存放临时py命令文件的远程主机目录

#local_tmp=~/.ansible/tmp

本机临时命令执行目录

#forks=5

默认并发数

#sudo_user=root

默认sudo用户

#ask_sudo_pass=True

每次执行ansible命令是否询问ssh密码

#ask_pass=True

每次执行ansible命令是否询问sudo密码

#remote_port=22

远程主机ssh端口

#host_key_checking=False

检査对应服务器的host_key,建议取消注释

#log_path=/var/log/ansible.log

日志文件

1.3、Ansible执行过程

Ansible执行过程:

1、加载配置文件,默认为/etc/ansible/ansible.cfg

2、加载对应模块文件,如command

3、通过ansible将模块或命令生成对应临时py文件,并将该文件传输至远程主机执行用户$HOME/.ansible/tmp/ansible-tmp-xx/xxx.py

4、赋予xxx.py文件执行权限

5、执行xxx.py文件并返回结果

6、删除xxx.py文件,sleep 0退出

执行状态:

绿色:执行成功,不需要执行变更操作

黄色:执行成功,且需要执行变更操作

红色:执行失败

1.4、Ansible主机清单

Ansible主机清单配置文件为/etc/ansible/hosts,常见如下几种方式:

all

ansible all -m ping

*

ansible “*” -m ping

逻辑或

ansible “webserver:appserver” -m ping

逻辑与

ansible “webserver:&dbserver” -m ping

逻辑非

ansible “webserver:!dbserver” -m ping

正则表达式

ansible “~(web|db).mengshicheng.io” -m ping