设为首页 收藏本站
查看: 916|回复: 0

[经验分享] ansible基本介绍

[复制链接]

尚未签到

发表于 2018-7-30 11:01:18 | 显示全部楼层 |阅读模式
  问:试想一下,要在N台主机上做相同的配置,一遍又一遍,是不是特别想让这种重复性工作一下搞定?
  本文介绍的ansible就是能减轻这种压力的自动化工具。
  一、Ansible简介
  Ansible是自动化运维工具的一种,使用Python编写的,通过远程控制其他主机,来达到修改配置、软件部署、修改用户等工作。
  控制方式:通过ssh协议控制其他主机实现
  特性:
  ①幂等性:不管重复执行多少次,得到的结果都是一样的
  ②期望状态:只要给出想要达到的结果,无需制定具体怎么做
  二、Ansible组成部分
  ·Host inventory:主机列表,用来定义被控制的远程主机。
  ·Modules:模块,ansible用来向各主机上定义执行操作的。
  ·Ad Hoc Commands:命令,ansible用来配合modules,完成具体指令的,类似于"参数"的概念。
  ·Playbooks:剧本,通过YAML语言进行编写的,可批量完成多次任务的组合。
  tasks:任务,调用 modules 和 commands 来完成指定目的
  handles:触发器,通常在任务最后添加nodify,用来触发该操作的执行,可以理解为需要被触发才能执行的task。
  roles:角色,用来将需要多次调用的执行任务,放在roles下的子目录中,调用时直接添加角色名即可,将各项操作分开,方便管理修改。
  variables:变量,用来保存经常变化的数据参数。
  三、Ansible的命令行操作
  使用方式:我是直接用YUM安装的,方便快捷
  ansible <hosts> -m<Module> -a "Command"
  用户列表:
  hosts通常是调用/etc/ansbile/hosts这个文件,有指定方式,可单独添加,也可使用组定义,还可使用通配符定义,以下就是通过组定义的示例。当然,你也可以手动直接在写入单个IP也可以。
  ansible_ssh_user=    登录远端主机的用户
  ansible_ssh_pass=    登录远端主机的密码,由于是明文不***全,可以直接和远程主机做ssh密钥认证。
  例   # vim/etc/ansilbe/hosts
  [hostdb]         #用来被调用的组名称
  192.168.214.134  ansible_ssh_user=xxx  ansible_ssh_pass=xxx
  192.168.214.135   #用来指定需要远程的用户
  Module+ Command:指定整个执行目的。
  查询操作:
  ansible-doc -l     #查看各个module
  ansible-doc 模块名  #查看模块可使用的命令参数。
  这里主要介绍常用的模块:
  copy:将本地文件复制到各个主机上,一般用于配置文件的同步修改。
  src=          #指定本地的源文件或目录
  dest=         #指目标存放路径
  例:ansible hostdb -m copy -a"src=/var/a.txt dest=/tmp/"
  file:对远程的文件或目录进行修改
  dest=         #指定修改的路径,也可使用name,path
  state={ file | directory | link | absent | hard }  #指定执行操作
  file:创建文件
  directory:创建目录,这里是递归创建
  link:创建软链接
  hard:创建硬链接
  absent:删除文件或目录,递归删除
  例:ansible hostdb -m file -a"dest=/tmp/xxy/ owner=root group=root mode=620 state=directory"
  yum:控制远程主机进行yum安装
  name=        #指定yum安装的包名
  state={ present | absent }        #指定执行哪种操作{安装|卸载}
  例:ansible hostdb -m yum -a"name=mysql-server state=present"
  service:对服务进行管理操作
  name=        #指定操作的服务名称

  state={ started | stoped | restarted |>  例:ansible hostdb -m service -a"name=mysql state=restart"
  cron:指定任务计划
  name=        #ansible需要添加的一个crontab名称
  minute=       #设置任务计划的时间,还有hour、day、month、weekday。
  job=         #设置任务计划的具体执行命令
  state={ present | absent }   #指定{添加|删除}
  例:ansible hostdb -m cron -a"name=test minute=*/5 job='ntpdate 192.168.214.131 > /dev/null'state=present"
  command、shell:这两个命令都是在主机上直接执行命令的。但有些命令通过command执行会出错,通过shell可以执行成功。使用command可以省略"-m"
  例:ansible hostdb -a "ls /etc/passwd"
  ansible hostdb -m shell -a "yum -y install ntp"
  以上就是ansible的命令行操作的常见模块的示例,其实挺简单的,一台主机控制多台主机,不管是配置还是管理都能减去大部分时间,赶快把这个技能点亮吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543495-1-1.html 上篇帖子: 运维工具Ansible—常用模块的使用 下篇帖子: ansible循环,判断
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表