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

[经验分享] 自动化运维之Ansible的安装与简单入门命令

[复制链接]

尚未签到

发表于 2018-7-29 13:54:34 | 显示全部楼层 |阅读模式
  早就听说ansible简单方便,但是一直没有去认真了解过,想要了解ansible的冲动是因为需要在100多台服务器上分发一个脚本,实在不想一台一台登陆上去操作。简单翻了一下文档,发现ansible上手挺容易的。最心水的还是所有的操作和配置都可以在管理结点完成,不需要在被管理结点安装agent,唯一的要求可能就是python版本了。管理结点的python要是2.6及以上,被管理结点的python版本如果是2.4需要安装simplejson包。
  先从安装说起吧,如果不嫌弃linux系统自带ansible包版本低的话,可以直接安装:
  yum install ansible -y
  也可以在github上clone一个新版本来安装,步骤如下
  git clone git://github.com/ansible/ansible.git --recursive
  cd ./ansible
  source ./hacking/env-setup
  easy_install pip
  pip install paramiko PyYAML Jinja2 httplib2 six
  echo "127.0.0.1" > ~/ansible_hosts
  export ANSIBLE_INVENTORY=~/ansible_hosts
  执行你的第一条命令
  在ansible_hosts在再加入一个被管理结点:
  cat ansible_hosts
  127.0.0.1
  10.32.1.206
  ansible all -m ping --ask-pass
  SSH password:
  127.0.0.1 | SUCCESS => {
  "changed": false,
  "ping": "pong"
  }
  10.32.1.206 | SUCCESS => {
  "changed": false,
  "ping": "pong"
  }
  可以通过将管理节点的公钥添加到被管理结点的authorized_keys中,就不需要--ask-pass来输入密码了。
  先介绍几个简单常用的ad-hoc命令吧,什么是ad-hoc呢?其实这是相对于ansible playbook来说的,ad-hoc就相当于在命令行敲shell命令,ansible playbook就相当于你执行一个shell脚本。总之简单的任务交给ad-hoc,复杂的任务交给playbook.
  ansible的几个常用参数:
  -u username          #指定ssh连接的用户名,即执行后面命令的用户,默认是当前用户
  -i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts,此处测试了/root/ansible_hosts
  -m module            #指定使用的模块,默认为command
  -f 10                #指定并发数,并发量大的时候,提高该值
  --sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码
  1,查看被管理结点的负载
  # ansible all -m command -a 'uptime'
  all表示/root/ansible_hosts文件中的所有结点,可以在文件中分组,[group1],group1表示组名,上面的命令如果只想在group1中的结点执行则为:ansible group1 -m command -a 'uptime' --ask-pass
  2,在被管理结点执行shell脚本
  先来一个最简单的脚本:
  # cat t1.sh
  #!/bin/bash
  ls -l /root/
  # ansible all -m script -a '/root/t1.sh'
  当然你可以编写可以实现复杂功能的脚本,这也就是为什么网上有人不同意复杂的任务用playbook来做,用shell写个脚本多简单呀,YAML都可以不用学了。
  3,拷贝文件和目录
  拷贝目录和文件的命令都是一样的。可以自行指定文件和目录的权限和属主
  拷贝文件:
  # ansible all -m copy -a "src=/root/test_dir dest=/tmp/ mode=777 owner=root"
  拷贝文件:
  ansible all -m copy -a "src=/etc/fstab dest=/tmp/ mode=444 owner=root"
  4,删除文件和目录
  拷贝目录和文件的命令都是一样的,指定要删除的文件的路径就可以了,如果路径是目录的话,会将该目录下面所有的文件都删除掉
  ansible all -m file -a "path='/tmp/fstab' state=absent"
  ansible all -m file -a "path='/tmp/test_dir' state=absent"
  5,软件包管理
  # ansible all -m yum -a "name=tree state=present"
  这条命令的意思是如果tree这个包没有安装,则安装。
  安装完后我们可以测试一下命令是否可用
  # tree test_dir/
  test_dir/
  └── t.txt
  0 directories, 1 file
  # ansible all -m yum -a "name=tree state=absent" --ask-pass
  这个命令的意思是确认系统没有安装tree,如果有则卸载,我们执行完命令后再敲tree就报错了。
  [root@centos ~]# tree
  -bash: /usr/bin/tree: No such file or directory
  5,创建用户和用户组
  # ansible all -m user -a "name=ansible_test groups=root,zabbix append=yes state=present"
  创建ansible_test用户,并将其加入root,zabbix组

  #>  uid=503(ansible_test) gid=504(ansible_test) groups=504(ansible_test),0(root),503(zabbix)
  6,管理服务
  # ansible all -m service -a "name=mysqld state=stopped"
  停mysqld服务
  # ansible all -m service -a "name=mysqld state=started"
  启mysqld服务
  # ansible all -m service -a "name=mysqld state=restarted"
  重启mysqld服务
  ansible参考资料:
  ansible-doc
  模块索引  http://docs.ansible.com/ansible/list_of_all_modules.html
  角色仓库  https://galaxy.ansible.com
  谷歌论坛  https://groups.google.com/forum/#!forum/ansible-project

运维网声明 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-543132-1-1.html 上篇帖子: 使用ansible依次更新两个tomcat应用 下篇帖子: ansible之学习路线
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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