Ansible自动化运维实践课件_第1页
Ansible自动化运维实践课件_第2页
Ansible自动化运维实践课件_第3页
Ansible自动化运维实践课件_第4页
Ansible自动化运维实践课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动化运维实践Ansible自动化运维实践Ansible目录CONTENTS1IT运维管理2Ansible介绍3Ansible常用操作4Ansible实例(playbooks)目录CONTENTS1IT运维管理2Ansible介绍3An第一部分IT运维管理传统运维自动运维第一部分IT运维管理传统运维自动运维 运维工作是比较繁琐的,尤其是新系统上线的场景,一切都是从零开始。包括虚机的创建,主机名的修改,系统的初始化等等,在机器不多的情况下人工还能应付的过来,如果有上百台机器呢?最初也是用堆人的方法来做的。但这样的方式出错率高,而且有时还会有遗漏。只能通过相互检查的方式来验证,但这样就会花费更多的

2、时间,相应的时间/人工成本也会上升。 人工的方式因个人部署习惯千差万别,导致一些项目难以维护。传统运维带来的坑传统运维MySQLRedisMongodb 运维工作是比较繁琐的,尤其是新系统上线的场景没有专门的工具为我们做这些事情,使用脚本语言(Python)逐渐有了运维自动化的一些工具,比如Fabric 、Puppet、Chef、SaltStack、Ansible等自动化运维平台运维自动化的演进自动运维运维自动化的演进1、某某组件坏了可以不用管继续睡觉 2、出现异常时点击一下就可立即恢复 3、与监控配合,系统挂了可以自动恢复运维自动化的目标没有专门的工具为我们做这些事情,使用脚本语言(Pyth

3、on)第二部分Ansible架构图Ansible介绍 Ansible简介Ansible任务执行流程第二部分Ansible架构图Ansible介绍 AnsiblAnsible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多老牌运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:(1) 连接插件connection plugins:负责和

4、被管控端实现通信;(2) host inventory:指定操作的主机,是一个配置文件里面定义管控的主机;(3) 各种模块核心模块、command模块、自定义模块;(4) 借助于插件完成记录日志邮件等功能;(5) playbook:剧本执行多个任务时,可以让被管控端一次性运行多个任务。(1) no agents:不需要在被管控主机上安装任何客户端;(2) no server:无服务器端,使用时直接运行命令即可;(3) modules in any languages:基于模块工作,可使用任意语言开发模块;(4) yaml,not code:使用yaml语言定制剧本playbook;(5) ss

5、h by default:基于SSH工作;(6) strong multi-tier solution:可实现多级指挥。Ansible特性(1) 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;(2) 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;(3) 使用python编写,维护更简单,ruby语法过于复杂;(4) 支持sudo。Ansible优点Ansible简介 ansible是新出现的自动化Ansible架构图Ansible架构图Ansible任务执行流程Ansible任务执行流程第三部分Ansible安装配置Ansible主机清单Ansible的

6、常用操作Ansible常用模块YAML介绍第三部分Ansible安装配置Ansible主机清单AnsiAnsible安装配置 使用yum安装(推荐)- 版本稍旧 yum install ansible 使用pip安装(依赖pip,gcc等)- 版本新 pip install ansible两种安装方式:/etc/ansible/ansible.cfgAnsible配置Ansible安装配置 使用yum安装(推荐)- 版本稍旧两Ansible主机清单 - Inventory/etc/ansible/hostsInventory默认文件Ansible主机清单 - Inventory/etc/anA

7、nsible主机清单 - 主机与组正则匹配1、表示所有的主机使用all 或 * Ansible主机清单 - 主机与组正则匹配1、表示所有的主Ansible主机清单 - 主机与组正则匹配2、通配符(*)和逻辑或(:)Ansible主机清单 - 主机与组正则匹配2、通配符(*)Ansible主机清单 - 主机与组正则匹配3、逻辑非和逻辑与Ansible主机清单 - 主机与组正则匹配3、逻辑非和逻辑Ansible常用模块Ad-hoc - ansible命令Playbook - YAMLAnsible运行任务的方式ansible 主机或组 -m 模块名 -a 模块参数 ansible参数主机和组: 是

8、在/etc/ansible/hosts 里进行指定的部分,动态Inventory 使用的是脚本从外部应用里获取的主机模块名: 可以通过ansible-doc -l 查看目前安装的模块,默认不指定时,使用的是command模块,具体可以查看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,默认模块可以在该配置文件中进行修改模块参数: 可以通过 “ansible-doc -s 模块名” 查看具体的用法及后面的参数ansible参数: 可以通过ansible命令的帮助信息里查看到,这里有很多参数可以供选择,如是否需要输入密码、是否sudo等

9、。Ad-hocAnsible常用模块Ad-hoc - ansAnsible常用模块ansible all -m pingping模块ansible all -m command -a uptimecommand模块ansible all -m service -a name=nginx state=restartedservice模块ansible all -m yum -a name=telnet state=presentyum模块ansible all -m shell -a cat /dev/null /var/log/nginx/access.logshell模块Ansible常用模

10、块ansible all -m pingAnsible常用模块ansible all -m copy -a src=/root/nginx.conf desc=/etc/nginx/nginx.conf owner=nginx group=nginx mode=644copy模块ansible java -m unarchive -a src=java7.tar.gz copy=yes dest=/usr/java owner=root group=rootunarchive模块ansible all -m replace -a path=/etc/hosts regexp=10.10 rep

11、lace=10.12replace模块ansible mysql -m lineinfile -a dest=/etc/hosts line=81 db1lineinfile模块ansible java -m file src=/usr/java/jdk1.7 dest=/usr/java/jdk state=link owner=root group=rootfile模块Ansible常用模块ansible all -m copyYAML介绍 YAML 是“Yet Another Markup Language”(仍是一种置标语言)的头字母简写,目前一般专门用来写配置文件的语言,对于人类很友

12、好。YAMLYAML介绍 YAML 是“Yet AnotheYAML介绍大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可基本语法规则对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的、不可再分的值支持的数据结构YAML介绍大小写敏感基本语法规则对象:键值对的集合,又称为YAML介绍 数据结构一组键值对,使用冒号结构表示task: install对像depen

13、d: - gcc - openssl-devel列表(sequence)name: install jdk1.7 hosts: test_host remote_user: root sudo: false gather_facts: true字典(mapping)数值number: 12float:12.30字符str: 这是一行字符串布尔值表示true的值true, True, TRUE, yes, Yes, YES, on, On, ON, y, Y表示false的值false, False, FALSE, no, No, NO, off, Off, OFF, n, N纯量(标量)YAM

14、L介绍 数据结构一组键值对,使用冒号结构表示对像d第四部分Ansibe实例(playbooks)playbooksjdk自动部署tomcat自动部署Ansible rolesMysql主从自动部署第四部分Ansibe实例(playbooks)playbooPlaybooks(剧本) 剧本是Ansible的配置、部署语言,由它对描述你想要远程机器执行的策略或步骤,使用YAML编写。playbooks是由一个或多个“play”(task)组成的列表。从根本上讲task就是调用ansible的一个module。将多个play组织在一个playbook中,运行时就会根据自上而下的顺序依次执行。Play

15、books(剧本)简介- hosts: all tasks: - name: test connection ping:Playbooks(ping.yaml)# ansible-playbook ping.yamlPlaybooks(剧本) 剧本是Ansible的配Playbooks(jdk部署)- name: install jdk1.7 hosts: java remote_user: root sudo: false gather_facts: true vars: jdk_ver: jdk1.7.0_79 jdk_pack: jdk-7u79-linux-x64.tar.gz tas

16、ks: - name: mkdir /usr/java file: path=/usr/java state=directory owner=root group=root - name: push jdk package and unpack unarchive: src= jdk_pack copy=yes dest=/usr/java/ owner=root group=root - name: make soft link file: src=/usr/java/ jdk_ver dest=/usr/java/jdk state=link owner=root group=root -

17、 name: setup java env blockinfile: dest: /etc/profile marker: # mark JAVA ENV block: | export JAVA_HOME=/usr/java/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/binPlaybooks(JDK部署)Playbooks(jdk部署)-Playbooks(JPlaybooks(tomcat部署)- name: install tomca

18、t7 hosts: tomcat remote_user: root sudo: false gather_facts: true vars: tomcat_ver: 7.0.73 tomcat_pack: /apache/tomcat/tomcat-7/v tomcat_ver /bin/apache-tomcat- tomcat_ver .tar.gz tomcat_dir: /opt tomcat_location: tomcat_dir /apache-tomcat- tomcat_ver tasks: - name: get tomcat7 package and unpack un

19、archive: src= tomcat_pack dest= tomcat_dir remote_src=yes - name: tomcat start script add utf8 lineinfile: dest: tomcat_location /bin/catalina.sh insertafter: #JAVA_OPTS.* line: item with_items: - JAVA_OPTS=$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m - JAVA_OPTS=$JAV

20、A_OPTS -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 - name: tomcat config file add utf8 replace: dest: tomcat_location /conf/server.xml regexp: redirectPort=8443 replace: redirectPort=8443 URIEncoding=UTF-8 useBodyEncodingForURI=truePlaybooks(tomcat部署)Playbooks(tomcat部署)-PlaybookAnsible Roles Roles是ansible中playbooks的目录组织结构。如果把所有的东西都写到playbooks里面的话,就会导致我们这个playbooks很臃肿,不宜读。而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰等等好处。Ansible Roles简介files:存放由copy或script等模块调用的文件tempaltes:Jinja2模板文件tasks:至少应该包含一个名为main.yml的文件,其定义了此角色的任务列表,些文件可以使用include包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论