Ansible是2013年推出的一种通用自动化工具,可用于配置管理或工作流程自动化。配置管理是一种“基础架构代码”实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行什么守护进程。工作流自动化可能是从配置基础架构到部署软件的任何事情。Ansible在2015年时被Redhat公司收购。
  Ansible是用Python编写的,它使用SSH在不同的机器上执行命令。Ansible是无代理的,这使得入手更容易。您只需要在相关机器上安装SSH访问和Python。Ansible使用声明式YML"playbook"
将一组主机(从“hosts”)映射到定义明确的角色。声明性用于指示Ansible如何设置或更改事物,Ansible才进行必要的更改。

  200-500台服务器,用ansible。更多的则使用saltstack

  ansible 无需安装客户端,依赖ssh服务。 -->ssh 认证

ansible 部署

安装ansible

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
​
#ansible 管理端
yum install ansible -y
yum install libselinux-python -y
​
#backup nfs01  被管理端
yum install libselinux-python -y
[root@m01 ~]# tree /etc/ansible/
/etc/ansible/ ├── ansible.cfg   # ansible的配置文件 ├── hosts       # ansible管理了 哪些服务器 服务器列表 └── roles      # 角色 [root@m01 ~]# cat /etc/ansible/hosts [lewen] 172.16.1.31 172.16.1.41 ​ ansible lewen -m command -a "hostname" ansible lewen -m command -a "yum install cowsay -y"

 -m 后边是模块的名字 -m MODULE_NAME,--module-name=MODULE_NAME module name to execute(default=command). -a 后面是要执行的命令  -a MODULE_ARGS,-args=MODULE_ARGS. module arguments.

复制文件

利用ansible远程批量拷贝文件或目录。
语法:ansible lewen -m copy -a "sre=/etc/passwd dest=/tap/oldgirl.txt owner=lewen group=lewen sode=0755"
注意:
1)如果指定的目标目录不存在,系统会自动创建,否则源目录会放到目标目录下面去:
2)如果copy的是文件,dest指定的名字和源如果不同,并且它不是已经存在的目录,相当于copy过去后再重命名:
3)若果dest是目标机器上已经存在的目录,则会直接把文件copy 到该目录下面。
4)设定的用户和组lewen在所有客户端必须存在。

[root@m01 ~]# ansible lewen -m copy -a "src=/etc/hosts dest=/tmp owner=lewen mode=0755"  # backup=yes 已存在的文件就复制备份
172.16.1.41 | SUCCESS => {
"changed": true,
"checksum": "bc07bb4d3a780f4fd8cae94ec7bff04edb1a5a4e",
"dest": "/tmp/hosts",
"gid": 0, "group": "root", "md5sum": "55ee21bf1168f9be70abd35bf29d8e4a", "mode": "0755", "owner": "lewen", "size": 364, "src": "/root/.ansible/tmp/ansible-tmp-1517744820.18-259504826638509/source", "state": "file", "uid": 500 } 172.16.1.31 | SUCCESS => { "changed": true, "checksum": "bc07bb4d3a780f4fd8cae94ec7bff04edb1a5a4e", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "55ee21bf1168f9be70abd35bf29d8e4a", "mode": "0755", "owner": "lewen", "size": 364, "src": "/root/.ansible/tmp/ansible-tmp-1517744820.17-14642605512978/source", "state": "file", "uid": 500 } ​ ​ [root@m01 ~]# ansible lewen -m command -a "ls -l /tmp/hosts" 172.16.1.31 | SUCCESS | rc=0 >> -rwxr-xr-x 1 lewen root 364 Feb 4 19:47 /tmp/hosts 172.16.1.41 | SUCCESS | rc=0 >> -rwxr-xr-x 1 lewen root 364 Feb 4 19:47 /tmp/hosts 

ansible lewen -m copy -a "src=/etc/hosts dest=/tmp backup=yes"ansible-doc -l|wc -l
ansible-doc -s copy # 查看文档

其他常用模块命令
ansible lewen -m copy -a "src=/server/scripts/yum-htop.sh dest=/server/scripts/ "
ansible lewen -m shell -a "/bin/sh /server/scripts/yum-htop.sh" ansible lewen -m script -a "/server/scripts/yum.sh"

定时任务

linux 定时任务。
分,时,日,月,周   执行的命令。

# 创建定时任务[root@m01 scripts]# ansible lewen -m cron -a "name='restart network' minute=00 hour=00 job=' /etc/init.d/network restart >/dev/null 2>&1'"
172.16.1.31 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"restart network" ] } 172.16.1.41 | SUCCESS => { "changed": true, "envs": [], "jobs": [ "restart network" ] } ​# 查看定时任务 [root@m01 scripts]# ansible lewen -a "crontab -l" 172.16.1.41 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #check & send result lee at 2017-01-01 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1 #Ansible: restart network 00 * * * /etc/init.d/network restart >/dev/null 2>&1 172.16.1.31 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #Ansible: restart network 00 * * * /etc/init.d/network restart >/dev/null 2>&1​
​# 取消定时任务
[root@m01 ~]# ansible oldboy -m cron -a "name='restart network' state=absent "
172.16.1.31 | SUCCESS => {"changed": true,"envs": [],"jobs": []
}
172.16.1.41 | SUCCESS => {"changed": true,"envs": [],"jobs": []
} 

常用模块

每个模块就是一个功能
command(默认的模块)  #执行命令模块****
shell          #执行shell 脚本模块****。           # 支持shell 管道更多的功能
script         #把脚本发到客户端,然后执行。****。
copy          #把本地文件发送到远端
file          # 设定文件属性模块。 service        #系统服务管理模块。 cron          #计划任务管理模块 yum          #yum软件包安装管理模块 synchronize     #使用rsync同步文件模块。 eg:  ansible lewen -m service -a "name=crond state=started enabled=yes" ssh 认证模块 authorized_key   #-Adds or removes an SSH authorized key

playbook

ansible 剧本

核心功能
1.PyYAML-剧本的语言。

2.paramiko-远程连接与数据传输。
3.Jinjia2

mkdir -p /server/playbook
​
[root@m01 playbook]# cat ifconfig.yml
- hosts: lewentasks:- command: ifconfig- shell: ifconfig >/tmp/ip.log
​
​
ansible-playbook -C ifconfig.yml # 检查剧本 ansible-playbook ifconfig.yml [root@m01 playbook]# cat print-ip.yml - hosts: all tasks: - name: get ip address shell: ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}' >>/tmp/ip.log ansible-playbook -C print-ip.yml ansible-playbook print-ip.yml ansible all -a "tail -1 /tmp/ip.log" ​ ansible oldboy -m cron -a 'name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present' ​ ​# playbook添加定时任务 [root@m01 playbook]# cat add-cron.yml - hosts: oldboy tasks: - name: add restart network cron cron: name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present ​ ​ 查看 [root@m01 playbook]# ansible oldboy -a "crontab -l" 172.16.1.41 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #check & send result lee at 2017-01-01 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1 172.16.1.31 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

playbook添加定时任务

两种书写格式
(1)- hosts: oldboytasks:- name: add restart network croncron: name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present(2)
- hosts: oldboytasks:- name: add restart network cron cron: name: restart network minute: 00 hour: 00 job: /etc/init.d/network restart >/dev/null 2>&1 state: present

例3:对同一台机器配置多个任务

重启网络 service

安装软件 yum

显示时间信息到文件 date

[root@m01 playbook]# cat manage.yml
- hosts: alltasks:- name: restart networkservice:                    #服务name: network               #服务器名state: restarted            #状态- name: install tree nmap lrzsz iftop htop iotop ncshell: yum install -y tree nmap lrzsz iftop htop iotop nc - name: print date to file shell: date +%F >>/tmp/date.log

yml 转化后的格式:[ { hosts: 'all',tasks: [ { name: 'restart network',service: { name: 'network', state: 'restarted' } },{ name: 'install tree nmap lrzsz iftop htop iotop nc',shell: 'yum install -y tree nmap lrzsz iftop htop iotop nc' }, { name: 'print date to file', shell: 'date +%F >>/tmp/date.log' } ] } ]

-

view

Ansible批量管理与维护相关推荐

  1. _Ansible批量管理与维护

    Ansible是2013年推出的一种通用自动化工具,可用于配置管理或工作流程自动化.配置管理是一种"基础架构代码"实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行 ...

  2. Ansible批量管理Windows服务器,winrm配置

    (一)Ansible简介 Ansible 是一款轻量级的开源的自动化运维工具,支持 linux 和 windows(只支持 client,并且部分模块),利用 Ansible 可以简单批量的配置系统, ...

  3. 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]

    文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...

  4. 综合架构批量管理服务--Ansible(2)

    综合架构批量管理服务–Ansible 本篇介绍部分 1) ansible批量管理服务模块说明 2) ansible批量管理服务主机清单 3) ansible批量管理服务剧本编写 4) ansible批 ...

  5. Ansible批量自动化管理工具(二)

    Ansible批量自动化管理工具(二) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...

  6. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...

    一 Ansible自动化运维工具 Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repo ...

  7. Linux之Ansible批量运维管理

    Ansible介绍 Ansible是2013年推出的一款批量管理工具,基于Python语言开发,2015年被RedHat收购 Ansible基于Paramiko实现SSH协议链接通讯,默认只要被管理节 ...

  8. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 .作者信息和本声明.否则将追究法律责任. 目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 ...

  9. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机[学习马哥]

    目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...

最新文章

  1. 决策树算法(四)——选取最佳特征划分数据集
  2. cad加载tiff影像插件_设计大神CAD常用的七个插件你会用几个?
  3. mysql 打包 脚本_windows下mysql自动备份压缩打包时间命名批处理脚本
  4. 保存到数据库乱码mysql_Linux下MySQL保存进去数据为乱码的解决办法
  5. 数据管理,数据治理,数据中心,数据中台,数据湖这下就分清楚了!
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的课程在线学习系统
  7. linux 正则表达式和通配符
  8. 刚入行程序员,未来怎么走?
  9. 量化中需留意的坑之二
  10. windows环境下kafka源代码开发环境搭建
  11. java 编程英语单词,语句
  12. gdiplus画直线
  13. 如何解决同花顺软件打开时,出现 “无法与服务器建立连接” 的问题
  14. 小米盒子刷arm linux,最新小米盒子3s刷原生安卓系统图文教程!值得收藏
  15. 傅里叶变换与反变换(李永乐老师笔记)
  16. Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件 警告
  17. 玩转华为ENSP模拟器系列 | 配置IS-IS基本功能示例
  18. WDM内核驱动程序模型分析
  19. 解决IIS+PHP出现的“500 - 内部服务器错误”
  20. 告别百度网盘,安装自己的专属网盘——Cloudreve,不限制下载速度!

热门文章

  1. php js 正则表达式,【PHP】用正则表达式过滤js代码(注意这个分析过程)
  2. 9宫格 java_java 拼接头像9宫格
  3. 话筒增益_话筒啸叫怎么办?教你四个解决话筒啸叫的方法!
  4. 酱油和gbt酱油哪个好_韩国酱油真的这么好,到底怎么挑?
  5. java词类_英语词类浅谈
  6. layui日期与vue_详解Vue.js和layui日期控件冲突问题解决办法
  7. 判断字符为空_49. 把字符串转换成整数(剑指offer)
  8. 华为手机可以下载鸿蒙系统吗_华为鸿蒙手机系统首次曝光,汉字界面简洁明了...
  9. vue.js 动态添加组件
  10. black:你的Python代码有点丑