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

[经验分享] 用ansible 完成一次性的工作(ad-Hoc)工作

[复制链接]

尚未签到

发表于 2018-1-3 10:17:28 | 显示全部楼层 |阅读模式
  ansible 真正强大的功能是它的playbook,但是在日常的工作中通过会遇到一些工作,它们只是需要我们偶尔操作一下;比较说重启一下
  操作系统;像这样的工作就用不着ansible-playbook这样的牛刀了,用ansible就行了。
  一、ad-Hoc 在多台主机上并行执行命令:
  在刚开始进入linux 世界的时候呀,为了在多台linux主机上启动mysql数据库,我会一个个的登录上对应的linux主机,然后执行service mysqld start
  混了一段时间后深知,勤劳也架不主机器多呀!后来呀就用bash 写一个for 循环,这样自己就从手工的劳动的释放出来了;但是这样事实上还是不是
  太行的,主要表现在for 循环是串行执行的,也就是只有在启动完第一台主机的mysql后才会去启动第二台机器的mysql;也许你想到了"&"号可以使命令
  能在后台执行,但是这个也是有问题的,因为这样就会一有太多的进程在后台执行,不知道自己主机的配置能不能跟的上;虽然我的理由有点牵强,但是
  我想表达的是for 循环的形式的控制粒度太“粗糙”了。 看ansible 怎么做
  1、启动work这台主机上的mysql服务
  

ansible work -a'systemctl start mysql ' -uroot --become -f 1  
work
| SUCCESS | rc=0 >>  

  
ps -ef | grep mysql
  
mysql      5146      1  8 14:48 ?        00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
  
root       5184   4538  0 14:48 pts/1    00:00:00 grep --color=auto mysql
  

  从ps 中的内容可以看到mysql数据库已经启动了
  -u 用于指定sudo 的目标用户,我这里设定的是root用户
  --become 是一个开着,它用于控制-u这个参数是不生效
  -f 用于设置并行度,我这里设置为了1,因为work就是我的本机,也就是说目标主机只有一台,开并行并没有什么用。
  2、文件传输把本地的/etc/my.cnf 传到目标机器的/tmp/my.cnf
  

ansible work -m copy -a'dest=/tmp/my.cnf src=/etc/my.cnf'  
work
| SUCCESS => {"changed": true,"checksum": "591767b936bdf730031e7964d548547327e30ad0","dest": "/tmp/my.cnf","gid": 1000,"group": "jianglexing","md5sum": "278fe9fd1d837086edb3adbb2cd627df","mode": "0664","owner": "jianglexing","size": 4376,"src": "/home/jianglexing/.ansible/tmp/ansible-tmp-1501052194.1641386-183941868489754/source","state": "file","uid": 1000  
}
  

  3、软件包管理(安装httpd)
  

ansible work -m yum -a'name=httpd state=present' -uroot --become  
work
| SUCCESS => {"changed": true,"msg": "","rc": 0,"results": ["Loaded plugins: fastestmirror, langpacks\nLoading mirror speeds from cached hostfile\n * epel: mirrors.ustc.edu.cn\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Running transaction check\n---> Package apr.x86_64 0:1.4.8-3.el7 will be installed\n---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed\n---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package            Arch          Version                    Repository   >]  
}
  

  ----

运维网声明 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-431087-1-1.html 上篇帖子: 运维自动化工具ansible(模块使用) 下篇帖子: ansible 使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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