企业实战——Ansible自动化运维基础知识

为什么选择Ansible

# Ansible完全基于Python开发,而DevOps在国内已经是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Asible二次开发。
# Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。
# 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
# Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人。

Ansible工作集(ansible命令是ansible的核心工具,总指挥)

# INVENTORY:命令执行的目标对象配置文件
# API:供第三方程序调用的应用程序编程接口
# MODULES:丰富的内置莫跨ui
# PLUGINS:内置的可自定义的插件

Ansible的作用对象

Ansible的作用对象,不仅仅是Linux和非Linux操作系统的主机,同样也可以作用于各类公有云/私有云,商业和非商业设备的网络设施。

Asible的应用场景

# 应用部署
  Asible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、省级、启用、配置等部署工作,即使对跨平台或知名的商业特硬件也同样支持。
# 配置管理
  Ansible内置File、Template、结合Jinja、Lineinfile等内置模块,同时无缝结合GitHub、GitLab、Git、SVN、Jenkins等主流版本控制的CI持续集成工具,助力配置管理自动化。
# 任务流编排
  有效保证Tasks任务流按既定规则和顺序完成事先制定的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目的可架构性和规范性,协助控制项目维护成本不致过高。

适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,上手快,效率高。

Ansible的inventory配置

inventory是ansible管理主机信息的配置文件,相当于系统HOSTS文件的功能,默认存放在/etc/ansible/hosts
定义主机和组:

# inventory可以直接为IP地址
172.25.5.2
# 端口号不是默认(ssh:22)22端口时,可明确表示为:
server2:2222
server2 ansible_port=2222 ansible_host=172.25.5.2
# 中括号表示一个组,也可以表示一个范围:
[webserver]
www[1:10].example.com
db-[a:f].example.com
# 在playbook中使用时对主机进行个性化定制:
[webserver]
web1 http_port=8080 maxRequestsPerChild=1024
# 定义组变量
[webserver]
server2
server3

[webserver:vars]
ntp_server=timel.aliyun.com

webserver组中的所有主机ntp_server值为timel.aliyun.com
# 定义组嵌套及组变量
[apache]
server1
server2

[nginx]
server3
server4

[webservers:children]
apache
nginx

[webservers:vars]
ntp_server=timel.aliyun.com

组和组之间可以相互调用,并且可以向组中的主机制定变量。不过,这些变量只能在Ansible-playbool中使用,而Ansible不支持

Ansible与正则

# 匹配所有主机,all或*功能相同
ansible all -m ping
ansible "*" -m ping
ansible 172.25.5.* -m ping

e.g.

[liu@server1 ansible]$ ansible all -m ping
[liu@server1 ansible]$ ansible "*" -m ping
[liu@server1 ansible]$ ansible 172.25.5.* -m ping

企业实战——Ansible自动化运维基础知识_第1张图片

# 对多台主机或多个组同时执行,相互之间用冒号分隔即可
ansible 'web1:web2' -m ping

e.g.

[liu@server1 ansible]$ ansible 'web:db' -m ping

企业实战——Ansible自动化运维基础知识_第2张图片

# 在webserver组但不再database组的主机,用感叹号表示
ansible 'webserver:!database' -m ping

e.g.

[liu@server1 ansible]$ cat inventory 
[liu@server1 ansible]$ ansible 'db:!web' -m ping

企业实战——Ansible自动化运维基础知识_第3张图片

你可能感兴趣的:(企业实战——Ansible自动化运维基础知识)