_Ansible批量管理与维护
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: alltasks:- name: get ip addressshell: ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}' >>/tmp/ip.logansible-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: 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
查看
[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 croncron:name: restart networkminute: 00hour: 00job: /etc/init.d/network restart >/dev/null 2>&1state: 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 fileshell: 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' } ] } ]
-
[root@m01 playbook]# cat hosts.yml
- hosts: 172.16.1.41tasks:- name: mkdirshell: mkdir -p /oldboy/backup
- hosts: 172.16.1.31tasks:- name: findshell: find /etc -type f -name "*.conf" >>/tmp/name.logansible安装rsync服务器nfs服务器配置sersync数据同步如何使用pssh (pssh pscp prsync)
view
_Ansible批量管理与维护相关推荐
- Ansible批量管理与维护
Ansible是2013年推出的一种通用自动化工具,可用于配置管理或工作流程自动化.配置管理是一种"基础架构代码"实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行 ...
- 介绍 Saltstack批量管理文件和计划任务
saltstack是由thomas Hatch于创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统.用来管理你的基础架构,可轻松管理成千上万台服务器.本文主要演示使用saltstack来管理 ...
- Windows远程桌面管理--功能强大的远程批量管理工具
曾经,我想着要是有一款绿色小巧,功能实用的远程桌面管理工具,其界面简洁,操作便捷,能够同时远程操作多台服务器,并且多台服务器间可以自由切换,适用于网站管理人员使用的工具该有多好,苍天不负有心人,终于出 ...
- VPS批量管理软件--远程桌面批量管理
日常运维过程中远程桌面管理是必不可少的,包括Windows的3389网络设备的telnet.ssh以及Linux的命令行管理.VNC等:同时管理多个设备就需要记录多个IP.账号.密码,此时不但容易记忆 ...
- 烂泥:学习tomcat之通过shell批量管理多个tomcat
2019独角兽企业重金招聘Python工程师标准>>> 本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使 ...
- Oracle 19c VLDB and Partitioning Guide 第5章:管理和维护基于时间的信息 读书笔记
本文为Oracle 19c VLDB and Partitioning Guide第5章Managing and Maintaining Time-Based Information的读书笔记. Or ...
- 如何批量运维服务器论文,win 服务器 批量管理 服务器运维利器
由于做服务器运维方面的工作,需要一人对近千台服务器进行统一集中的管理,如同时批量对服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINUX服务器download程序包. ...
- day9 进程 线程 threading multiprocessing 队列 主机批量管理工具
一.进程与线程 1.进程 进程是系统资源加上一个或多个线程的集合 进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了. 进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起 ...
- 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]
文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...
最新文章
- ormlite 多表联合查询
- Python开发【Part 4】:数据类型操作
- matlab安装_走进数模(三)MATLAB安装
- spark on yarn 内存分配详解
- python执行js文件
- [bzoj2242][SDOI2011]计算器
- css 一些 常用布局
- 三维数据平滑处理_黑白象片的密度信息 卫星数据处理 遥感制图 三维建模 善图科技...
- java查询未提交事务的数据_Jfinal同一事务中已插入的数据记录在事务未提前前查询不到?...
- 解决nginx无法启动的问题——端口被占用
- 错误记录(一)Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister报错解决办法
- java stream byte_乐字节-Java8新特性之Stream流(上)
- 软件设计师教程笔记 持续更新
- win10键锁定计算机,win10笔记本键盘win键被锁怎么解锁
- LimeWire Basic 4.8.1 for Linux(转)
- 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验04 数组及其在程序设计中的应用(2021级)(2)
- wordpress入门主题_设置和运行WordPress网站的终极入门指南
- 2017.11.15作业
- 地图坐标系之间的转换(百度地图、GCJ、WGS84)
- 使用HTML实现网页滚动图片
热门文章
- centos下svn与mysql_centos下SVN搭建
- windows kernel 可以直接读写文件系统资料吗_嵌入式杂谈之文件系统
- python selenium 框架说明_基于python+selenium的框架思路(二)
- java高并发(六)线程安全性
- 被VS Code牢牢圈粉了!
- 使用 Pandas, Jinja 和 WeasyPrint,轻松创建一个 PDF 报表
- 程序员离职后躲老家山洞 2 年,敲出 45 万行代码...
- 太强了!这个 Jupyter notebook 离线工具可以用一辈子!
- 源服务器信息,软件源搭建
- Backpropagation 总结