首页 > 其他 > 详细

2小时玩转Ansible 企业级运 维配置自动化工具

时间:2020-05-19 16:58:46      阅读:40      评论:0      收藏:0      [点我收藏+]

一、运维配置自动化工具

1.1 运维自动化分类

  • 系统预备自动化
  • 配置自动化
  • 监控自动化
  • 项目交付自动化

1.2 运维配置自动化工具

 

 

技术分享图片

 

 

 ansible

基于python语言。简单快捷,被管理端不需要启服务。直接使用 ssh协议,需要验证所以机器多的话速度会较慢。

saltstack

基于python语言。相对简单,大并发能力比ansible要好, 需要维护 被管理端的服务。如果服务断开,连接就会出问题。使用的协议是 zeromq.

puppet

基于ruby语言,成熟稳定。适合于大型架构,相对于ansible和 saltstack会复杂些。

二、Ansible

2.1 认识Ansible

技术分享图片

 

 

 ansible是一种由Python开发的自动化运维工具,集合了众多运维 工具(puppet、cfengine、chef、func、fabric)的优点,实现了 批量系统配置、批量程序部署、批量运行命令等功能,是一款轻量 级的配置自动化工具。

2.2 Ansible 特点

  • 部署简单 默认使用ssh进行管理,
  • 基于python里的paramiko模块开发
  • 管理端和被管理端不需要启动服务 配置简单,功能强大,扩展性强
  • 能过playbook(剧本)进行多个任务的编排

2.3 Ansible 架构

技术分享图片

 

 

  • ansible:核心,提供一种框架
  • Connection Plugins:连接插件,负责和被操作端实现通信,可 通过多种方式与被操作端连接,例如:local、ssh、zeromq, 如下图,默认使用ssh;
  • Host Inventory:主机清单,指定被操作主机;
  • Core Modules:各种模块核心模块,Ansible已自带
  • Custom Modules:自定义模块,如果核心模块无法满足需求,
  • 可通过各种编程语言(Shell或Python或GoLang等)开发模块 使用。
  • Plugins:借助于插件完成记录日志、邮件等功能;
  • Playbook:剧本,当执行多个任务时,可以对服务器角色及应 用部署进行编排。

技术分享图片

 

 

 三、学习环境

3.1 拓扑图

技术分享图片

 

 

 3.2 主机准备

  • 主机IP配置
  • 主机名设置

# hostnamectl set-hostname itheima

# hostnamectl set-hostname itheimanode1

# hostnamectl set-hostname itheimanode2

主机名称解析

# vim /etc/hosts

xxx.xxx.xxx.xxx itheima

yyy.yyy.yyy.yyy itheimanode1

zzz.zzz.zzz.zzz itheimanode2

主机安全设置

firewalld

# systemctl disable firewalld

# systemctl stop firewalld

SELINUX

# sed -ri ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

主机时间同步

# crontab -e

0 */1 * * * ntpdate time1.aliyun.com

需安装ntpdate软件

主机YUM源

除自带YUM源外,需要为管理机(操作机)准备epel源

# yum -y install epel-release

# yum -y install ansible

# ansible --version

提示

管理机(操作机)及被操作机均需开启ssh

# systemctl status sshd

四、免密登录证书准备

在管理机(操作机)准备密钥对,把公钥复制到被操作机即 可。

生成密钥对

# ssh-keygen

 

复制密钥对中的公钥到被操作机

# ssh-copy-id itheimanode1

# ssh-copy-id itheimanode2

五、主机清单

在管理机(被操作机)配置主机清单

  • Ansible通过一个主机清单功能来实现服务器分组。
  • Ansible的默认主机清单配置文件为/etc/ansible/hosts.

# vim /etc/ansible/hosts

[group1]

xxx.xxx.xxx.xxx

yyy.yyy.yyy.yyy

 

[nginx] 组名

apache[1:10].aaa.com   表示apache1.aaa.com到

apache10.aaa.com这10台机器

nginx[a:z].aaa.com        表示nginxa.aaa.com到

nginxz.aaa.com共26台机器

10.1.1.[11:15]                表示10.1.1.11到10.1.1.15这5 台机器

 

[nginx]

10.1.1.13:2222   表示10.1.1.13这台,但ssh端口 为2222

 

定义10.1.1.12:2222这台服务器的别名为nginx1

nginx1 ansible_ssh_host=10.1.1.13 ansible_ssh_port=2222

 

没有做免密登录的服务器可以指定用户名与密码

nginx1  ansible_ssh_host=10.1.1.13

ansible_ssh_port=2222 ansible_ssh_user=root

ansible_ssh_pass="123456"

 

利用别名来分组

nginx1  ansible_ssh_host=10.1.1.13

ansible_ssh_port=2222 ansible_ssh_user=root

ansible_ssh_pass="123456"

nginx2  ansible_ssh_host=10.1.1.12

[nginx]

nginx1

nginx2

 

六、Ansible语法

ansible [-f forks] [-m module_name] [-a args] 

 

说明:

host-pattern:host inventory文件的一个组名,可以为all

-f forks:并行处理的个数,默认为5

-m module_name:模块名,默认为command

-a args:参数

 

示例:

ansible users1 -m command -a ‘ls /etc/rc.local‘

# |       |   |   |     |         |

# |       |   |   |     |         |_________________要执行的命令

# |       |   |   |     |

# |       |   |   |     |____________________________接命令

# |       |   |   |

# |       |   |   |__________________________________模块

# |       |   |

# |       |   |_______________________________________接模块

# |       |

# |       |____________________________________________ 组/IP

# |

# |_______________________________________________ ______ansible

 

七、Ansible模块

  • ansible是基于模块工作的。
  • ansible本身没有批量管理的能力, 真正具有批量管理的是
  • ansible所运行的模块。ansible支持的模块非常的多,目前版本3000多个。

关于学习模块使用经验分享:先掌握常见的模块使用,其它模块用到 时查询即可,主要掌握Ansible模块应用思路即可

7.1 查看支持模块

# ansible-doc -l

 

7.2 获取模块帮助

# ansible-doc ping

# ansible-doc -s ping

7.3 常用模块

  • ping 测试网络连通性
  • hostname 修改主机名
  • file 对文件或目录操作
  • copy 复制本地文件到远程主机
  • fetch 复制远程主机文件到本地
  • user 用户操作
  • group 用户组操作
  • cron 计划任务
  • yum_repository 配置YUM仓库
  • yum 软件包管理
  • service 服务管理
  • command 执行命令(不能执行$HOME,>,<,|)
  • shell 执行命令(不能执行vim、ll别名等)
  • script 在远程主机执行本地脚本,不需要执行权限,不需要复制 到远程主机

 

7.4 小试牛刀

7.4.1 ping模块测试

网络连通性

# ansible group1 -m ping 或 # ansible -m ping all

 

7.4.2 hostname模块

修改主机名

# ansible yyy.yyy.yyy.yyy -m hostname -a ‘name=agent1.heima.cn‘

 

7.4.3 file模块

对文件或目录操作

创建一个目录

# ansible group1 -m file -a ‘path=/test state=directory‘

 

创建一个文件

# ansible group1 -m file -a ‘path=/test/111 state=touch‘

 

7.4.4 copy模块

文件远程拷贝,把本地文件复制到远程主机。

# echo master > /tmp/222

# ansible group1 -m copy -a ‘src=/tmp/222 dest=/tmp/333‘

 

7.4.5 command模块

执行命令模块

# ansible group1 -m command -a "ls /tmp"

 

八、课程总结

技术分享图片

 

 

 

完整视频:http://yun.itheima.com/open/526.html?2005zzp
配套资料:https://pan.baidu.com/s/1_I_p8gF3Ta52XMtt1KBxsA 提取码:xtqs

 

2小时玩转Ansible 企业级运 维配置自动化工具

原文:https://www.cnblogs.com/xiao-wanzi/p/12917864.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!