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

[经验分享] 自动化运维工具之ansible-centos6 运维学习

[复制链接]

尚未签到

发表于 2018-7-30 09:44:57 | 显示全部楼层 |阅读模式
  一、什么样的情形需要批量部署
  1、操作系统的安装
  常见的有collber,red hat satelite(redhat)系统专用。
  2、操作系统的配置
  常见的有cfengine,puppet,chef,func。其中puppet最受欢迎
  3、批量程序的部署
  4、批量命令的运行查看状态信息
  二、ansible介绍
  ansible的架构大致如下
DSC0000.png ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。

  运维工具常见的工作模式
  1、agent模式: 基于ssl实现。代理工作在被监控端。像puppet。
  2、agentless模式: 基于ssh服务实现工作在被监控端。监控端是ssh的客户端。
  ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。名词解释
  幂等性不会重复执行相同的指令。例如不会重复安装软件
  期望状态只需要告诉被监控端的期望状态
  ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括

  •   连接插件connection plugins负责和被监控端实现通信。
  •   Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机
  •   各种模块核心模块command模块自定义模块
  •   借助于插件完成记录日志邮件等功能
  •   PlayBooks:剧本执行多个任务时。并非必需可以让节点一次性运行多个任务
  三、ansible的基本使用
  安装软件yum install ansible -y # 对应的软件在 epel 仓库中也可自己手动编译
DSC0001.png

  查看模块
  ansible-doc -l
  ansible-doc -s 模块名
  ansible <Host-partten> [-f forks][-m module_name][-a args]
  -f forks: 启动时并线程
  -m module_name 要使用的模块
  -a args:模块参 常见模块:command:默认模块,用来执行远程命令
  # ansible all -m command -a 'cat /etc/passwd
  # ansible all -a 'date'
  # ansible 192.168.2.35 -m command -a 'yum remove mysql -y'
  查看模块参数
  # ansible-doc -s 模块名
  cron:计划模块
  ansible 192.168.2.35 -m cron -a 'minute="*/10" job="/bin/echo fcuk you" name="test cron job"'
  present:安装
  absent:移出
  user模块,用来添加删除用户
  # ansible all -m user -a 'name=test1'
  # ansible all -m user -a 'name=test1 state=absent'  移除user
  group 组模块,添加删除组
  # ansible all -m group -a 'name=mysql gid=306 system=yes'
  copy 模块,拷贝文件
  sec:本地源文件路径
  dest:远程存取路径
  content:取代src=,直接用来生成目标文件内容。
  # ansible all -m copy -a 'src=/etc/fstab dest=/tmp/'
  # ansible all -m copy -a 'content="Hello\nHi test.com" dest=/tmp/test.txt'
  file 模块,主要用来改权限,做连接,
  范例:把文件fstab 属主改成mysql 组改为mysql 权限是600
  ansible 192.168.2.35 -m file -a 'owner=mysql mode=600 group=mysql path=/tmp/fstab'
  给fstab创建一个连接fstab.link
  src=:源文件
  path=:产成符号连接的路径
  # ansible 192.168.2.35 -m file -a 'path=/tmp/fstab.link src=/tmp/fstab state=link'
  ping模块远程主机在线否
  # ansible all -m ping
  service模块指定运行的程序:
  enabled=:是否开机自启动,取值为ture或者false;
  name=:服务器名
  state=状态,取值有started,stoped,restarted
  # ansible-doc -m service
  # ansible all -a 'service httpd status'
  # ansible all -a 'chkconfig --list httpd'
DSC0002.png

  # ansible-doc -s shell
  shell 模块:在远程主机上运行模块,尤其用到管道有等功能时
  范例:创建user1用户并添加密码
  # ansible web1 -m user -a 'user=user1'
  # ansible web1 -m shell -a 'echo 123456 | passwd --stdin user1'
  script模块
  # ansible-doc -s script
  将本地脚本复制到远程并运行
  # ansible web1 -m script -a '/root/test.sh'
  yum模块:
  # ansible-doc -s yum
  name=:指明安装的软件名,可以带上版本号
  state=absent:卸载
  # ansible all  -m yum -a ’name=mysql-server‘
  # ansible all  -m yum -a ‘name=mysql-server state=absent’
  setup:收集远程的facts
  facts:每个被管理主机在被管理前,会把自己主机相关信息报告给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-543405-1-1.html 上篇帖子: Centos7 Ansible 配置SSH公钥认证 下篇帖子: Ansible 快速上手
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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