您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > ansible基础使用.ppt
Ansible基础使用工程运维部施沈杨2017-10-17常用自动化运维工具•CFengine•Chef•Puppet–基于Ruby开发,采用C/S架构,扩展性强,基于SSL认证•SaltStack–基于Python开发,采用C/S架构,相对于puppet更轻量级,配置语法采用YMAL,使得配置脚本更为简单•Ansible–基于Pyton开发,分布式,无需客户端,轻量级,配置语言采用YAML为什么选择Ansible•相对于puppet和saltstack,ansible无需客户端,更轻量级•ansible甚至都不用启动服务,仅仅只是一个工具,可以很轻松的实现分布式扩展•更强的远程命令执行操作•不输于puppet和saltstack的其他功能Ansible基本架构Asible基本组成•核心:ansible•核心模块(CoreModules):这些都是ansible自带的模块•扩展模块(CustomModules):如果核心模块不足以完成某种功能,可以添加扩展模块•插件(Plugins):完成模块功能的补充•剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行•连接插件(ConnectiorPlugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件•主机群(HostInventory):定义ansible管理的主机ansible工作原理ansible安装•使用yum安装,配置好epel源(推荐)yuminstall-yansible•使用pip安装pipinstallansible如果没有pip,需要先安装好pip,方法如下:yuminstallpython-setuptoolseasy_installpip•使用源码安装yuminstallgitpython-setuptoolsgccpython-devel-y获取源码gitclone安装ansiblecdansiblepythonsetup.pyinstallansible配置文件Yum安装后的配置文件默认在/etc/ansible/•ansible.cfg该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等。•hosts管理主机清单,ansible通过文件来定义你要管理的主机,也就是说把你需要的管理的主机ip写到一个文件中即可,默认为hosts文件。•roles(目录)roles是ansible自1.2版本引入的新特性,用于层次性,结构化地组织playbook,roles能够根据层次型结构自动自动装在变量文件、tasks以及handlers等。ansible基础配置•首先在hosts文件中定义被管理主机,也被称为inventory文件#cat/etc/ansible/hostsEOF[webserver]192.168.74.157192.168.74.158[dbserver]192.168.74.159EOF•使用ssh-keygen生成ssh密钥,分发到个被管理机上免密登录#ssh-keygen-trsa-P''-f/root/.ssh/id_rsa#ssh-copy-id-i/root/.ssh/id_rsa.pub192.168.74.157Ansible基础使用(一)•使用ansible命令行来探测个客户端的存活#ansible-urootall-mping-i/etc/ansible/hosts•-uroot使用root用户去执行•all表示hosts文件中左右主机清单,也可选单个组;•-mping常用模块ping,检测主机存活;•-i/etc/ansible/hosts使用指定的配置文件(默认配置文件为/etc/ansible/hosts)以下检测结果均为存活Ansible基础使用Playbook(二)•使用ansible-playbook批量安装nginx以下是一个较为简单的playbook例子[root@localhostinstall]#catnginx.yml-hosts:webgather_facts:nosudo:yestasks:-name:InstallNginxyum:name={{item}}state=presentwith_items:-nginx-name:SettingNginxStartservice:name=nginxstate=startedenabled=yes直接执行该文件#ansible-playbooknginx.ymlAnsible-playbook•ansbile-playbook是一系列ansible命令的集合,利用yaml语言编写。playbook命令根据自上而下的顺序依次执行。•ansible-playbook的简单使用方法:ansible-playbookexample-play.yml•Playbook构成:–Hosts和Usersplaybook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。–任务列表和actionplaybook任务列表中的各任务按次序逐个在hosts中指定的所有主机上执行。–Handlers当关注的资源发生变化时采取一定的操作,比如配置文件更新是重启服务等。–Tagstags用于让用户选择运行或略过playbook中的部分代码。ansible常用模块详解•file:用于配置文件属性•yum:用于安装软件包•cron:配置计划任务•copy:复制文件到远程主机•command:在远程主机上执行命令•raw:类似于command模块,支持管道•user:配置用户•group:配置用户组•service:用于管理服务•ping:用于检测远程主机是否存活•setup:查看远程主机的基本信息•mount:配置挂载点file•group:定义文件/目录的属组•owner:定义文件/目录的属主•mode:定义文件/目录的权限•path:必选项,定义文件/目录的路径•recurse:递归设置文件的属性,只对目录有效•state:定义文件状态–directory:如果目录不存在,创建目录–touch:如果文件不存在,创建一个新文件–absent:删除文件或目录•示例:–ansibletest-mfile-asrc=/etc/fstabdest=/tmp/fstabstate=link–ansibletest-mfile-apath=/tmp/fstabstate=absent–ansibletest-mfile-apath=/tmp/teststate=touchyum•enablerepo:启用某个源•name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径•state:定义软件包状态–present:安装–absent:删除–latest:安装最新的•示例:–ansibletest-myum-a'name=httpdstate=latest'–ansibletest-myum-a'name=@Developmenttoolsstate=present'–ansibletest-myum-a'name==present'cron•backup:对远程主机上的原任务计划内容修改之前做备份•day:日(1-31,*,*/2,……)•hour:小时(0-23,*,*/2,……)•minute:分钟(0-59,*,*/2,……)•month:月(1-12,*,*/2,……)•weekday:周(0-7,*,……)•job:要执行的任务,依赖于state=present•name:该任务的描述•special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly•state:确认该任务计划是创建还是删除•user:以哪个用户的身份执行•示例:–ansibletest-mcron-a'name=checkdirshour=5,2job=ls-alh/dev/null'–ansibletest-mcron-a'name=ajobforrebootspecial_time=rebootjob=/some/job.sh'copy•src:源文件•dest:目标路径•backup:覆盖之前,是否备份原文件•owner:设定文件/目录的属主•group:设定文件/目录的属组•mode:设定文件/目录的权限•示例:–ansibletest-mcopy-asrc=/srv/myfiles/foo.confdest=/etc/foo.confowner=foogroup=foomode=0644–ansibletest-mcopy-asrc=/mine/ntp.confdest=/etc/ntp.confowner=rootgroup=rootmode=644backup=yescommand•creates:一个文件名,当该文件存在,则该命令不执行•free_form:要执行的linux指令•chdir:在执行指令之前,先切换到该指定的目录•removes:一个文件名,当该文件不存在,则该选项不执行•示例:–ansibletest-a/sbin/rebootservice•arguments:给命令行提供一些选项•enabled:是否开机启动yes|no•name:必选项,服务名称•runlevel:运行级别•sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟•state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)•示例:–ansibletest-mservice-aname=httpdstate=startedenabled=yes–ansibletest-mservice-aname=foopattern=/usr/bin/foostate=started–ansibletest-mservice-aname=networkstate=restartedargs=eth0user•home:指定家目录,需要createhome为yes•groups:用户组•uid:用户UID•password:指定用户密码•name:用户名•createhome:是否创建家目录•system:是否创建为系统用户•remove:但state=absent时,删除家目录•state:创建或者删除•shell:指定用户shell环境模块帮助•ansible-doc-l•ansible-doc-smodule_nameThankYou
本文标题:ansible基础使用.ppt
链接地址:https://www.777doc.com/doc-7434126 .html