云数据中心Ansible自动化运维方案PPT课件
2024版IT运维管理解决方案PPT课件[1]
![2024版IT运维管理解决方案PPT课件[1]](https://img.taocdn.com/s3/m/d8669cbebb0d4a7302768e9951e79b8968026883.png)
01
02
03
04
运维流程梳理
对现有的运维流程进行梳理和 优化。
标准化操作规范
制定标准化的操作规范,减少 人为错误。
知识库建设
建立运维知识库,积累和分享 运维经验。
持续改进机制
建立持续改进机制,不断优化 和完善运维管理流程。
2024/1/29
10
03
基础设施监控与故障排查
2024/1/29
11
基础设施监控策略制定
2024/1/29
15
应用系统性能现状析
响应时间慢
用户经历较长的等待时间, 影响业务效率和用户体验。
2024/1/29
资源利用率低
服务器、存储和网络资源 未得到充分利用,导致成 本浪费。
瓶颈分析
通过监控和诊断工具,发 现系统性能瓶颈,如数据 库查询、代码执行等。
16
性能优化策略制定及实施
代码优化
18
05
数据安全与隐私保护策略部署
2024/1/29
19
数据安全风险评估及应对策略
数据泄露风险
评估可能的数据泄露途径,如内部人 员泄露、外部攻击等,并制定相应的 防范策略,如加强内部人员管理、实 施网络安全防护等。
数据损坏风险
分析可能导致数据损坏的因素,如硬 件故障、自然灾害等,并制定相应的 恢复策略,如定期备份数据、建立灾 备中心等。
23
团队协作模式探讨和实践经验分享
敏捷运维团队组建
采用敏捷方法组建高效运维团队,包括角色定义、职责划分和协作流程等。
DevOps理念与实践
引入DevOps理念,促进开发、测试、运维等团队紧密协作,加速软件交付和部署。
自动化工具应用
自动化运维平台PPT课件

服务器运维平台
1 变更的执行和控制 2 自动化合规/策略管理 3 服务器和应用排障 4 提高服务器安全性 5 部署和配置软件
ቤተ መጻሕፍቲ ባይዱ15
© 2007 Opsware Inc. All rights reserved. Proprietary and confidential.
1. 变更的执行和控制
16
© 2007 Opsware Inc. All rights reserved. Proprietary and confidential.
监控组四 运行情况
提交 批处理程序组四
综合业务日终配置流程说明
▪ 通过在PAS系统中,拖拽操作画出自动化作业流程图 ▪ PAS借助connector与各个执行系统,并向他们发送操作指令 ▪ 各个系统执行流程环节上的具体操作,并向PAS返回执行结果 ▪ PAS根据执行结果,判断下一步的执行内容 ▪ 部分操作必须手工执行,则可在流程中设计等待环节,灵活满足客
审视下列问题
在您的数据中心,平均一个主机管理员负责多少台服务器? 一个主机管理员每天需要进行多少次的Telnet?FTP? 是否有多主机共享的管理脚本?如何运行?如何共享? 如何知道操作员进行了哪些操作?如何确保操作是正确的? 采用何种方式对关键系统配置进行备份/恢复?
日终前 数据镜像
启动 日终服务
执行 完毕
启动日间 报表文件 交易服务 同步
清理 日志信息
提交头寸 生成程序
监控组一 运行情况
日终前 磁带备份
提交 批处理程序组一
故障处理 流程
执行日终后
手工操作
停止
8
数据镜像 反传数据 日终服务 © 2007 Opsware Inc. All rights reserved. Proprietary and confidential.
基于Ansible的自动化运维平台构建与应用

基于Ansible的自动化运维平台构建与应用一、引言随着互联网技术的不断发展,企业的IT系统规模越来越庞大复杂,传统的手工运维方式已经无法满足快速部署、高效管理和持续交付的需求。
因此,自动化运维成为了企业提升效率、降低成本的重要手段之一。
在众多自动化运维工具中,Ansible凭借其简单易用、功能强大的特点受到了广泛关注和应用。
本文将介绍基于Ansible的自动化运维平台构建与应用。
二、Ansible简介Ansible是一款基于Python开发的自动化运维工具,它采用SSH 协议进行通信,无需在被管节点上安装客户端,具有配置简单、易于上手、扩展性强等优点。
Ansible使用YAML语言编写任务剧本(Playbook),通过定义主机清单文件(Inventory)和变量文件(Vars)来实现对远程主机的批量管理和配置。
三、自动化运维平台构建1. 环境准备在构建自动化运维平台之前,首先需要准备一台安装了Ansible 的控制节点,并且能够通过SSH连接到待管节点。
同时,需要编写主机清单文件和变量文件,定义好待管主机的信息和相关变量。
2. 编写Playbook编写Ansible Playbook是构建自动化运维平台的核心步骤。
在Playbook中可以定义任务、变量、模块等内容,实现对远程主机的配置管理、软件部署、服务启停等操作。
通过合理设计Playbook可以实现高效、可靠的自动化运维流程。
3. 执行Playbook执行Playbook是将自动化任务应用到实际环境中的过程。
通过ansible-playbook命令可以执行指定的Playbook文件,并观察执行结果。
在执行过程中可以根据需要进行调试和优化,确保任务顺利完成。
四、自动化运维平台应用1. 系统初始化利用Ansible可以快速完成新服务器的初始化工作,包括用户创建、软件安装、配置文件修改等操作。
通过编写通用的Playbook可以实现不同环境下服务器初始化的自动化。
python开发的自动化运维工具ansible详解

python开发的⾃动化运维⼯具ansible详解⽬录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执⾏ansible 任务执⾏模式ansible 执⾏流程ansible 命令执⾏过程ansible 配置详解ansible 安装⽅式使⽤ pip(python的包管理模块)安装使⽤ yum 安装ansible 程序结构ansible配置⽂件查找顺序ansible配置⽂件ansuble主机清单ansible 常⽤命令ansible 命令集ansible-doc 命令ansible 命令详解ansible 配置公私钥ansible 常⽤模块ansible 简介ansible 是什么? ansible是新出现的⾃动化运维⼯具,基于Python开发,集合了众多运维⼯具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运⾏命令等功能。
ansible是基于 paramiko 开发的,并且基于模块化⼯作,本⾝没有批量部署的能⼒。
真正具有批量部署的是ansible所运⾏的模块,ansible只是提供⼀种框架。
ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
ansible⽬前已经已经被红帽官⽅收购,是⾃动化运维⼯具中⼤家认可度最⾼的,并且上⼿容易,学习简单。
是每位运维⼯程师必须掌握的技能之⼀。
ansible 特点1. 部署简单,只需在主控端部署Ansible环境,被控端⽆需做任何操作;2. 默认使⽤SSH协议对设备进⾏管理;3. 有⼤量常规运维操作模块,可实现⽇常绝⼤部分操作;4. 配置简单、功能强⼤、扩展性强;5. ⽀持API及⾃定义模块,可通过Python轻松扩展;6. 通过Playbooks来定制强⼤的配置、状态管理;7. 轻量级,⽆需在客户端安装agent,更新时,只需在操作机上进⾏⼀次更新即可;8. 提供⼀个功能强⼤、操作性强的Web管理界⾯和REST API接⼝——AWX平台。
02.Ansible高级用法(运维开发篇)

02.Ansible⾼级⽤法(运维开发篇)⾃动化任务简介假设我们要在10台linux服务器上安装⼀个nginx服务,⼿动是如何做的?# 第⼀步, ssh登录NUM(1,n)服务器# 第⼆步,输⼊对应服务器密码# 第三步,执⾏命令: yum install nginx 循环操作n=10# 第四步,执⾏命令: service nginx start# 第五步,退出登录⾃动化任务执⾏的意义# 意义⼀, 提升运维⼯作效率,减少⼀份⼯作成本# 意义⼆, 提⾼准确度.⾃动化任务执⾏的应⽤# 应⽤⼀, 批量命令执⾏# 应⽤⼆, 定时程序任务执⾏# 应⽤三, 批量程序应⽤服务安装# 应⽤四, 批量配置⽂件同步# 应⽤五, 批量代码部署ansible配置ansible是python中的⼀套模块,系统中的⼀套⾃动化⼯具,可以⽤作系统管理,⾃动化命令等任务ansible优势# 1.ansible是python中的⼀套完整的⾃动化执⾏任务模块# 2.ansible的play_book模式,不⽤yaml配置,对于⾃动化任务执⾏⼀⽬了然.# 3.⾃动化场景⽀持丰富ansible配置⽂件1. inventory# 该参数表⽰资源清单inventory⽂件的位置,资源清单就是⼀些Ansible需要连接管理的主机列表# inventory = /root/ansible/hosts2. library# Ansible的操作动作,⽆论是本地或远程,都使⽤⼀⼩段代码来执⾏,这⼩段代码称为模块,这个library参数就是指向存放Ansible模块的⽬录# library = /usr/share/ansible3. forks# 设置默认情况下Ansible最多能有多少个进程同时⼯作,默认设置最多5个进程并⾏处理。
具体需要设置多少个,可以根据控制主机的性能和被管理节点的数量来确定。
# forks = 54. sudo_user# 这是设置默认执⾏命令的⽤户,也可以在playbook中重新设置这个参数# sudo_user = root# 注意: 新版本已经做了修改,如ansible2.4.1下已经为:# default_sudo_user = root5. remote_port# 这是指定连接被关节点的管理端⼝,默认是22,除⾮设置了特殊的SSH端⼝,不然这个参数是不需要被修改的# remote_port = 226. host_key_checking# 这是设置是否检查ssh主机的秘钥,可以设置为True或者False# host_key_checking = False7. timeout# 这是设置ssh连接的超时间隔,单位是秒# timeout = 208. log_path# 在使⽤ssh公钥私钥登录系统时使⽤的秘钥路径# private_key_file=/path/to/file.pemansible.cfg[defaults]inventory = /tmp/hostsforks = 5default_sudo_user = rootremote_port = 22host_key_checking = Falsetimeout = 20log_path = /var/log/ansible.log#private_key_file=/tmp/file.pemansible安装# 1. 通过系统的⽅式,yum,apt,get等# 2. 通过python的⽅式# (推荐)python ./setup.py installeasy_install ansiblepip install ansibleAnsible基础操作当我们将Ansible安装好以后,可以通过⼀些命令开始深⼊了解Ansible了.我们最先展⽰的并⾮那强⼤的集配置,部署,⾃动化于⼀⾝的playbook.⽽是如何初始化.远程连接概述在我们开始前要先理解Ansible如何通过SSH与远程服务器连接是很重要的.Ansible1.3及之后的版本默认会在本地的OpenSSH可⽤时会尝试⽤其远程通讯,这会启⽤ControlPersist(⼀个性能特性),Kerberos,和在~/.ssh/config中的配置选项如 Jump Host setup.然⽽,当你使⽤Linux企业版6作为主控机(红帽企业版及其衍⽣版如CentOS),其OpenSSH版本可能过于⽼旧⽆法⽀持ControIPersist,在这些操作系统中,Ansible将会退回并采⽤paramiko(由Python实现的⾼质量OpenSSH库).如果你希望能够使⽤像是Kerberized SSH之类的特性,烦请考虑使⽤Fedora,OS X,或Ubuntu作为你的主控机直到相关平台上有更新版本的OpenSSH可供使⽤,或者启⽤Ansible的"accelerated mode".在Ansible1.2及之前的版本,默认将会使⽤paramiko,本地OpenSSH必须通过-c ssh或者配置⽂件中设定.我们偶尔会遇到不⽀持SFTP的设备,虽然很少见,但有概率中奖,可以通过ansible配置⽂件切换⾄scp模式来与之连接.说起远程设备,Ansible会默认假定你使⽤SSH key(当然也推荐这种)但是密码⼀样可以,通过在需要的地⽅添加-ask-pass选项来启⽤密码验证,如果使⽤了sudo特性,当sudo需要密码时,也同样适当的提供了-ask-sudo-pass选项.也许这是常识,但也值得分享:任何管理系统受益于被管理的机器在主控机附近运⾏.如果在云中运⾏,可以考虑在使⽤云中的⼀台机器来运⾏Ansible.作为⼀个进阶话题,Ansible不⽌⽀持SSH来远程连接.连接⽅式是插件化的⽽且还有许多本地化管理的选项诸如管理 chroot, lxc, 和 jail containers.⼀个叫做‘ansible-pull’的模式能够反转主控关系并使远程系统通过定期从中央git⽬录检出并拉取配置指令来实现背景连接通信第⼀条命令(公钥认证)我们已经安装ansible了,第⼀件事就是编辑或者创建/etc/ansible/hosts并在其中加⼊⼀个或多个远程系统,我们的public SSH key必须在这些系统的authorized_keys中.# 我们现在ansible控制机上主机名解析tail /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6121.36.43.223 node1120.77.248.31 node2116.196.83.113 master# 将解析过的主机名放到ansible配置⽂件⾥⾯tail -2 /etc/ansible/hostsnode1node2# ansible控制机⽣成公钥并传给需要被控制的机器上ssh-copy-id node1ssh-copy-id node2# 因为考虑到安全问题,会有主机秘钥的检查,但如果在内⽹⾮常信任的服务器就没必要了.sed -i 's/# *StrictHostKeyChecking *ask/StrictHostKeyChecking no/g' /etc/ssh/ssh_config# 然后我们就可以执⾏第⼀条命令来查看能ping通控制的所有节点."discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}Ansible会像SSH那样试图⽤你的当前⽤户名来连接你的远程机器.要覆写远程⽤户名,只需使⽤’-u’参数. 如果你想访问 sudo模式,这⾥也有标识(flags)来实现:ansible all -m ping -u bruceansible all -m ping -u bruce --sudoansible all -m ping -u bruce --sudo --sudo-user batman(如果你碰巧想要使⽤其他sudo的实现⽅式,你可以通过修改Ansible的配置⽂件来实现.也可以通过传递标识给sudo(如-H)来设置.) 现在对你的所有节点运⾏⼀个命令:ansible all -a "/bin/echo hello"node1 | CHANGED | rc=0 >>hellonode2 | CHANGED | rc=0 >>hello公钥认证Ansible1.2.1及其之后的版本都会默认启⽤公钥认证如果有个主机重新安装并在“known_hosts”中有了不同的key,这会提⽰⼀个错误信息直到被纠正为⽌.在使⽤Ansible时,你可能不想遇到这样的情况:如果有个主机没有在“known_hosts”中被初始化将会导致在交互使⽤Ansible或定时执⾏Ansible时对key信息的确认提⽰.如果你想禁⽤此项⾏为并明⽩其含义,你能够通过编辑 /etc/ansible/ansible.cfg or ~/.ansible.cfg来实现:[defaults]host_key_checking = False同样注意在paramiko 模式中公钥认证相当的慢.因此,当使⽤这项特性时,切换⾄’SSH’是推荐做法.密码认证因为我们接下来要将存取的密码放到主机清单甚⾄存到Mysql⾥⾯,我们可以装⼀个ssh_passapt-get install sshpass我们将之前的公钥.ssh⽬录都删掉,主机名解析不⽤管.注意,删除.ssh⽬录过后记得关闭主机秘钥检查.tail -3 /etc/hosts121.36.43.223 node1120.77.248.31 node2116.196.83.113 mastertail -2 /etc/ansible/hostsnode1node2ansible all -m ping -k# 并不是真的ping,只是检查客户端的22号端⼝是否提供⼯作.不指定⽤户默认root⽤户# -k 输⼊密码# -m 指定模块SSH password:node1 | SUCCESS => {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}# 如果不想指定⽤户名和密码,避免ansible 每次执⾏到相应主机都会要求输⼊密码.tail -2 /etc/ansible/hostsnode1 ansible_ssh_user='root' ansible_ssh_pass='youmen'node2 ansible_ssh_user='root' ansible_ssh_pass='youmen' ansible_ssh_port=22ansible all -m pingnode1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"}Ansible 常⽤模块常⽤模块块playbook playbook 由YAML 语⾔编写,YAML 参考了其他多种语⾔,包括: XML,C 语⾔,Python,Perl 以及电⼦邮件格式RFC2822,Clark Evans 在2001年5⽉⾸次发表了这种语⾔,另外Ingy dt Net 与Oren-Kiki 也是这语⾔的共同设计者.playbook 的优势# 1. 功能⽐adhoc 更全# 2. 控制好依赖# 3. 展现更直观# 4. 持久使⽤ansible-playbook 执⾏常⽤命令参数:执⾏⽅式:ansible-playbook playbook.yml [options]-u REMOTE_USER, --user=REMOTE_USER# ssh 连接的⽤户名-k, --ask-pass# ssh 登录认证密码-s, --sudo# sudo 到root ⽤户,相当于Linux 系统下的sudo 命令-U SUDO_USER, --sudo-user=SUDO_USER模块名作⽤⽤例command默认模块ansible webserver -a "/sbin/reboot" -f 10shell执⾏shell 命令ansible test -m shell -a "echo $HOSTNAME"filetransfer⽂件传输ansible test -m copy -a "src=/etc/hosts dest=/tmp/hosts"managingpackages管理软件包ansible test -m yum -a "name=nginx state=present"user and groups⽤户和组ansible test -m user -a "name=jeson password=123456"Deploying部署模块ansible test -m git -a "repo=https:///iopsgroup/imoocc dest=/opt/iops version=HEAD"managingservices服务管理ansible test -m service -a "name=nginx state=started"BackgroundOperatiions后台运⾏ansible test -B 3600 -a "/usr/bin/running_operation --do-stuff"gatheringfacts搜集系统信息ansible test -m setup-K, --ask-sudo-pass# ⽤户的密码(—sudo时使⽤)-T TIMEOUT, --timeout=TIMEOUT# ssh 连接超时,默认 10 秒-C, --check# 指定该参数后,执⾏ playbook ⽂件不会真正去执⾏,⽽是模拟执⾏⼀遍,然后输出本次执⾏会对远程主机造成的修改-e EXTRA_VARS, --extra-vars=EXTRA_VARS# 设置额外的变量如:key=value 形式或者 YAML or JSON,以空格分隔变量,或⽤多个-e-f FORKS, --forks=FORKS# 进程并发处理,默认 5-i INVENTORY, --inventory-file=INVENTORY# 指定 hosts ⽂件路径,默认 default=/etc/ansible/hosts-l SUBSET, --limit=SUBSET# 指定⼀个 pattern,对- hosts:匹配到的主机再过滤⼀次--list-hosts# 只打印有哪些主机会执⾏这个 playbook ⽂件,不是实际执⾏该 playbook--list-tasks# 列出该 playbook 中会被执⾏的 task--private-key=PRIVATE_KEY_FILE# 私钥路径--step# 同⼀时间只执⾏⼀个 task,每个 task 执⾏前都会提⽰确认⼀遍--syntax-check# 只检测 playbook ⽂件语法是否有问题,不会执⾏该 playbook-t TAGS, --tags=TAGS# 当 play 和 task 的 tag 为该参数指定的值时才执⾏,多个 tag 以逗号分隔--skip-tags=SKIP_TAGS# 当 play 和 task 的 tag 不匹配该参数指定的值时,才执⾏-v, --verbose# 输出更详细的执⾏过程信息,-vvv可得到所有执⾏过程信息。
Ansible自动化运维体系建设方案

Ansible自动化运维体系建设方案目录1.搭建自动化运维体系的重要性 (3)2.Ansible平台优势介绍 (3)3.Ansible环境部署方案 (4)1.搭建自动化运维体系的重要性鉴于之前有过一次全行IT 系统的重大的实施工作,即因全行时钟较北京时间差20余分钟,将全行时钟统一前调了20分钟,并与新的原子钟保持时钟同步。
在没有自动化运维工具(Puppet、Ansible、Saltstack、Chef)的前提下,利用了IBM Tivoli Monitor(ITM)实现的所有受监控系统的时钟前调任务,并进行了相关的检查。
当然在做事情之前,做了大量的人工的准备工作,包括ntp服务的检查、ntp自启动未开启的检查、ntp未配置的检查、时钟前调大量测试工作等等。
正是由于这些前期大量缜密的工作,让这次统一的时钟调整任务得以顺利完成,但同时我们也发现自动化运维工具的重要性,倘若没有ITM,我们几乎每办法开展这项工作,倘若有了自动化运维工具,我们可以节省大量人力的前期检查工作,也可以利用自动化运维工具做好后续的检查工作,当然自动化运维工具的运用远远不止于此,于是我们急迫需要快速搭建一套自动化运维体系。
注:ITM是监控软件,利用ITM客户端上的Agent可以在客户端统一发命令。
2.Ansible平台优势介绍选择ansible主要原因是:用于生产环境,轻量,无代理,批量任务能够写成脚本,而不用分发到远程就可以执行,并且能够极快速地搭建,能够接受效率稍微不如代理方式的缺点,暂无Ansible之上二次开发的需求,对于ansible服务端的安全性:安全加固,纳入堡垒机管理,禁止不必要的服务和网络端口。
整体架构如下:3.Ansible环境部署方案包含一套ansible服务端和1500余个生产环境ansible客户端。
时间:三天。
按照以下现成的方式,1-2天即可完成ansible自动化运维体系的环境搭建!服务端: 操作系统版本RHEL6.6 x86_64,该操作系统自带Python 2.6.6(要求Version>=2.6)由于是生产环境,无法连接外部互联网,所以整个安装过程,只能用安装包的方式安装。
云数据中心Ansible自动化运维方案PPT课件

? 自动运维
1.2
运维自动化的演进
? 没有专门的工具为我们做这些事情,使用脚本语言( Python ) ? 逐渐有了运维自动化的一些工具,比如 Fabric 、Puppet 、Chef 、SaltStack 、Ansible 等 ? 自动化运维平台
运维自动化的演进 运维自动化的目标
1、某某组件坏了可以不用管继续睡觉 2、出现异常时点击一下就可立即恢复 3、与监控配合,系统挂了可以自动恢复
? (3) 使用python 编写,维护更简单, ruby语法过于复杂; ? (4) 支持sudo 。
? ZQY . All rights ? ZQY . All rights reserved.
? Ansible执行流程 2.3
ZQY
? ZQY . All rights reserved.
云数据中心Ansible自动化运维方案
课程目录
1 传统、自动化运维介绍 2 Ansible 介绍 3 Ansible 配置 4 Ansible 演练
01
PART 01
第一部分
传统、自动化运维介绍
? 传统运维 1.1
? 运维工作是比较繁琐的,尤其是新系统上线的场景,一切都是从零开始。包括虚机的创建,主机名的修 改,系统的初始化等等,在机器不多的情况下人工还能应付的过来,如果有上百台机器呢?最初也是用堆 人的方法来做的。但这样的方式出错率高,而且有时还会有遗漏。只能通过相互检查的方式来验证,但这 样就会花费更多的时间,相应的时间/人工成本也会上升。
Ansible特性
Ansible优点
? (1) no agents :不需要在被管控主机上安装任何客户端; ? (2) no server :无服务器端,使用时直接运行命令即可; ? (3) modules in any languages :基于模块工作,可使
ansible自动化运维详细教程及playbook详解

ansible自动化运维详细教程及playbook详解前言当下有许多的运维自动化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。
Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
Ansible 特点:部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 ---- AWX 平台。
给定 SaltStack 的 Ansible:最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。
1 安装ansibleyum -y install ansible复制代码2 配置ansiblels /etc/ansibleansible.cfg hosts roles# ansible.cfg 是 Ansible 工具的配置文件;hosts 用来配置被管理的机器;roles 是一个目录,playbook 将使用它复制代码2.1 SSH秘钥认证ssh-keygen -t rsassh-copy-id root@agent_host_ip复制代码2.2 添加被管理主机vim /etc/ansible/hosts[Client]angent_host_ip_1angent_host_ip_2复制代码2.3 测试ansibleshell > ansible Client -m ping # 操作 Client 组 ( all 为操作 hosts 文件中所有主机 ),-m 指定执行 ping 模块,下面是返回结果192.168.12.129 | SUCCESS => {"changed": false,"ping": "pong"}# -i 指定 hosts 文件位置# -u username 指定 SSH 连接的用户名# -k 指定远程用户密码# -f 指定并发数# -s 如需要 root 权限执行时使用 ( 连接用户不是 root 时 )# -K -s 时,-K 输入 root 密码复制代码3 hosts主机文件shell > vim /etc/ansible/hosts # 定义域名192.168.1.100 # 定义 IP192.168.1.150:37268 # 指定端口号[WebServer] # 定义分组192.168.1.10192.168.1.20192.168.1.30[DBServer] # 定义多个分组192.168.1.50192.168.1.60Monitor ansible_ssh_port=12378 ansible_ssh_host=192.168.1.200 # 定义别名# ansible_ssh_host 连接目标主机的地址# ansible_ssh_port 连接目标主机的端口,默认 22 时无需指定# ansible_ssh_user 连接目标主机默认用户# ansible_ssh_pass 连接目标主机默认用户密码# ansible_ssh_connection 目标主机连接类型,可以是 local 、ssh 或 paramiko# ansible_ssh_private_key_file 连接目标主机的 ssh 私钥# ansible_*_interpreter 指定采用非 Python 的其他脚本语言,如 Ruby 、Perl 或其他类似 ansible_python_interpreter 解释器[webservers] # 主机名支持正则描述www[01:50][dbservers]db-[a:f]复制代码4 ansible常用模块shell > ansible-doc -l # 列出 Ansible 支持的模块shell > ansible-doc ping # 查看该模块帮助信息复制代码4.1 远程命令模块(command / script / shell)4.1.1 命令command 作为 Ansible 的默认模块,可以运行远程权限范围所有的 shell 命令,不支持管道符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ZQY
keepali ved
nginx tomcat
nodejs
Server1
keepali ved
nginx tomcat
nodejs
Server2
MySQL Redis Mongodb ……
? ZQY . All rights reserved.
? Ansible 执行 3.4
ZQY
? ZQY . All rights reserved.
04
PART 04
第四部分
Ansible演练
? Ansible Tower 4.1
ZQY
? ZQY . All rights reserved.
Thank you for your attention
? (5) ssh by default :基于 SSH工作;
? (6) strZoQngYmulti-tier solution :可实现多级指挥。
? (1) 轻量级,无需在客户端安装 agent ,更新时,只需在操 作机上进行一次更新即可;
? (2) 批量任务执行可以写成脚本,而且不用分发到远程就 可以执行;
Ansible特性
Ansible优点
? (1) no agents :不需要在被管控主机上安装任何客户端; ? (2) no server :无服务器端,使用时直接运行命令即可; ? (3) modules in any languages :基于模块工作,可使
用任意语言开发模块;
? (4) yaml ,not code :使用 yaml语言定制剧本 playbook ;
? 自动运维
1.2
运维自动化的演进
? 没有专门的工具为我们做这些事情,使用脚本语言( Python ) ? 逐渐有了运维自动化的一些工具,比如 Fabric 、Puppet 、Chef 、SaltStack 、Ansible 等 ? 自动化运维平台
运维自动化的演进 运维自动化的目标
1、某某组件坏了可以不用管继续睡觉 2、出现异常时点击一下就可立即恢复 3、与监控配合,系统挂了可以自动恢复
? ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是 ansible 所运行的模块, ansible 只是提供一 种框架。主要包括:
(1) 连接插件 connection plugins :负责和被管控端实现通信; (2) host inventory :指定操作的主机,是一个配置文件里面定义管控的主机; (3) 各种模块核心模块、 command 模块、自定义模块; (4) 借助于插件完成记录日志邮件等功能; (5) playbook :剧本执行多个任务时,可以让被管控端一次性运行多个任务。
? (3) 使用python 编写,维护更简单, ruby语法过于复杂; ? (4) 支持sudo 。
? ZQY . All rights reserved.
? Ansible架构图2.2
ZQY
? ZQY . All rights reserved.
? Ansible执行流程 2.3
ZQY
? ZQY . All rights reserved.
See you on our next meeting
云数据中心Ansible自动化运维方案
课程目录
1 传统、自动化运维介绍 2 Ansible 介绍 3 Ansible 配置 4 Ansible 演练
01
PART 01
第一部分
传统、自动化运维介绍
? 传统运维 1.1
? 运维工作是比较繁琐的,尤其是新系统上线的场景,一切都是从零开始。包括虚机的创建,主机名的修 改,系统的初始化等等,在机器不多的情况下人工还能应付的过来,如果有上百台机器呢?最初也是用堆 人的方法来做的。但这样的方式出错率高,而且有时还会有遗漏。只能通过相互检查的方式来验证,但这 样就会花费更多的时间,相 All rights reserved.
02
PART 02
第二部分
Ansible介绍
? Ansible简介 2.1
? ansible 是新出现的自动化运维工具,基于 Python 开发,集合了众多老牌运维工具( puppet 、cfengine 、chef 、func 、 fabric )的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
03
PART 03
第三部分
Ansible配置
? Ansible安装 3.1
ZQY
? ZQY . All rights reserved.
?
Ansibe
Inventory
文件 3.2
ZQY
? ZQY . All rights reserved.
? Ansible YAML文3件.3
ZQY
? ZQY . All rights reserved.