Linux 期中架构 Ansible
ansible 自动化软件 基于Python开发

特点概述:

配置文件不需要过多配置 了解就可以了
###部署ansble软件
##受控主机部署 backup nfs01 web01
yum install -y libselinux-python
##管理主机部署m01
yum -y install ansible
至此 ansible软件部署完毕
###软件配置应用
架构:


安装前要实现公钥批量管理 默认已经部署好了

查看软件版本:
[root@m01 ~]# ansible --version
ansible 2.5.2
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
ansble目录结构信息:
/usr/bin/ansible
/usr/bin/ansible-playbook ###ansible 剧本信息
[root@m01 ~]# cd /etc/ansible/
[root@m01 ansible]# ll
total 28
-rw-r--r-- 1 root root 19315 Apr 27 04:22 ansible.cfg ###配置文件所在位置
-rw-r--r-- 1 root root 1048 May 20 10:20 hosts ###定义ansible可以管理的主机信息
drwxr-xr-x 2 root root 4096 Apr 27 04:22 roles ###主要在自动化部署多台主机时应用
关于hosts文件说明:需要将被管理的主机添加进去

###ansible命令语法格式


[root@m01 scripts]# ansible oldboy -m command -a "date"
172.16.1.8 | SUCCESS | rc=0 >>
Mon Jun 4 16:40:51 CST 2018
172.16.1.41 | SUCCESS | rc=0 >>
Mon Jun 4 16:40:52 CST 2018
172.16.1.31 | SUCCESS | rc=0 >>
Mon Jun 4 16:40:52 CST 2018
ansible官方说明
说明信息:
ansible软件相关参考链接信息
http://docs.ansible.com/ansible/intro_installation.html
http://docs.ansible.com/modules_by_category.html
ansible常用参数

#1说明 command模块作为默认模块 在不指定时即是
[root@m01 scripts]# ansible oldboy -a "date"
172.16.1.31 | SUCCESS | rc=0 >>
Mon Jun 4 16:59:02 CST 2018
172.16.1.8 | SUCCESS | rc=0 >>
Mon Jun 4 16:59:02 CST 2018
172.16.1.41 | SUCCESS | rc=0 >>
Mon Jun 4 16:59:02 CST 2018
#2说明 测试所有主机的连通性模块
[root@m01 scripts]# ansible oldboy -m ping
172.16.1.41 | SUCCESS => {
"changed": false,
"ping": "pong" ###表示成功连接
}
172.16.1.31 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.16.1.8 | SUCCESS => {
"changed": false,
"ping": "pong"
}
#3 debug
[root@m01 scripts]# ansible oldboy -m debug
172.16.1.31 | SUCCESS => {
"msg": "Hello world!"
}
172.16.1.41 | SUCCESS => {
"msg": "Hello world!"
}
172.16.1.8 | SUCCESS => {
"msg": "Hello world!"
}
[root@m01 scripts]# ansible oldboy -m debug -a "msg=nod"
172.16.1.31 | SUCCESS => {
"msg": "nod"
}
172.16.1.41 | SUCCESS => {
"msg": "nod"
}
172.16.1.8 | SUCCESS => {
"msg": "nod"
}
#4 复制模块--copy
[root@m01 scripts]# ansible oldboy -m copy -a "src=/home/history/0604.txt dest=/home/history/"

查看对端效果:
文件传输成功

补充案例 :假定我们在做copy操作时,需要回滚,或者误操作
;这个时候有一个backup参数就显得很重要(在分发文件前,对已有源文件进行备份)
[root@m01 scripts]# ansible oldboy -m copy -a "src=/home/history/0604.txt dest=/home/history/ backup=yes"



#设置文件的属组信息 权限信息
[root@m01 scripts]# ansible oldboy -m copy -a "src=/home/history/0604.txt dest=/home/history/ mode=0600 owner=oldboy group=oldboy backup=yes"



###ansible命令输出信息中:
绿色表示查询或者没有发生任何改变时
红色表示执行命令操作出现异常
黄色表示执行命令后发生对受控主机产生了影响,发生了配置改变
###ansible基础模块实践
#批量执行脚本 shell (万能模块)
#第一个里程碑:先在m01撰写脚本

#第二个里程碑:分发脚本到oldboy群组的主机上
[root@m01 scripts]# ansible oldboy -m copy -a "src=/server/scripts/yum.sh dest=/server/scripts"

#第三个里程碑:远程执行shell脚本
[root@m01 scripts]# ansible oldboy -m shell -a "/bin/bash /server/scripts/yum.sh"


备注:对于shell能识别特殊符号 对比command command不行的操作shell都可以实现
[root@m01 scripts]# ansible oldboy -m shell -a "cat /etc/hosts>>/home/history/0604v2.txt"


##删除指定文件 ---file

###运行脚本模块 script(不需要分发脚本 第二种方法)远程执行本地脚本中的命令
[root@m01 scripts]# ansible oldboy -m script -a "/server/scripts/yum.sh"

对端没有脚本:&但是命令也执行成功了

###yum模块


###ansible模块-->file
[root@m01 scripts]# ansible oldboy -m file -a "src=/server/scripts/yum.sh dest=/server/scripts/yum.sh.link state=link"



ansible帮助信息系统中查看方法:
ansible-doc -l | wc -l
ansible-doc -s file
###ansible 定时任务模块实践 CRON
之前如何撰写定时任务
***** /bin/sh /server/scripts/test.sh &>/dev/null


minute
hour
day
month
weekday
job
[root@m01 scripts]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 ###每隔五分钟做一次时间同步
ansible书写方式:
[root@m01 scripts]# ansible oldboy -m cron -a "minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'"

在对端已经生效:

TIP:设置name属性 避免重复添加

重复添加时会报错:

删除定时任务 absent(缺席)慎用
[root@m01 scripts]# ansible oldboy -m cron -a "name=luna minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' state=absent"

说明删除计划任务
如何注释计划任务:
正在不是注释状态的计划任务可以注释


如何取消注释:

ansible剧本书写方式


编写ansible-playbook
01 编写的时候需要识别空格字符 (严格判断空格)
02 一定得用空格键 不能用tab
03 减号和冒号在剧本中使用时(非末尾),后面要接一个空格(例如: - oldboy) 对于注释信息不能有空格
04 剧本编写有等级划分 每个等级相差2个空格
###剧本编写实践

ansible-playbook编写格式
#注释信息
###剧本的开头,可以不写
- hosts:空格all(oldboy&172.16.1.41)
###处理所有服务器,找到所有服务器
cron.yml 剧本内容 存放位置:
/etc/ansible/ansible-playbook

创建目录
/etc/ansible/ansible-playbook
之前学过的其他语法检查命令:
[root@m01 ansible-playbook]# visudo -c
/etc/sudoers: parsed OK
#检查ansible剧本的语法

如果语法有错误的话 ,则会是该提示

###执行1个剧本
##执行前先彩排:本地模拟运行 不影响主机

##彩排结束后,真正执行剧本

检查确认:

###剧本编写扩展
ansible-playbook cron.yml -v ###显示ansible命令详细过程
- hosts: oldboy
tasks:
- cron: name=nod03 minute= hour= job='/bin/sh /server/scripts/test.sh &>/dev/null' state=absent
cron.yml
#add cron
- hosts: all
tasks:
- name: cron:nod03
cron: name=nod03 minute= hour= job='/bin/sh /server/scripts/test.sh &>/dev/null'
cron2.yml


Linux 期中架构 Ansible的更多相关文章
- Linux 期中架构 inotify
全网备份数据同步方案 备份网站内部人员信息 不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...
- Linux 期中架构 rsync
上篇 Rsync rysnc查看版本 --version 全量 与增量在效率上有区别 cp mv scp --全量复制 rsync --增量复制 rsync利用的是quick ch ...
- Linux期中架构
1 在构建完模板后 开启虚拟机后 需要再重启一次 以解决网卡不能看见的问题 ########################################add begin 2018-05 ...
- Linux 期中架构 SSH
为其他网络服务提供安全协议.替代Telnet SSH: 实现数据加密传输 22 默认支持root用户远程连接 类似sftp-server服务 nmap -p 22 10.0.0.41 nc 10 ...
- Linux 期中架构 PHP
环境 PHP安装前准备 先将需要的软件包如下位置放置.另外需要有WWW用户 参照nginx 满足以上条件后执行安装脚本 PHP安装脚本: #!/bin/bash #install PHP #au ...
- Linux 期中架构 MySQL
MySQL基础部分 mysql安装脚本 安装前请将相关安装包copy放到/server/tools目录下 -rw-r--r-- 1 root root 314149697 Mar 23 2017 ...
- Linux期中架构 全网备份案例
server端脚本 #!/bin/bash #1 进行数据完整性验证 并生成结果 find /backup -type f -name "finger.txt"| xargs md ...
- linux 期中架构之 nginx 安装与排错
1, 安装 nginx 所需要的pcre库 即:perl 兼容正则表达式 yum install pcre pcre-devel -y rpm -qa pcre pcre-devel 检查是否安装好p ...
- Linux运维就业技术指导(八):期中架构考核
一,期中架构考核概述 1.1 架构图 1.2 架构图公司背景概述 公司是一个新兴的人脸识别高新创业公司,公司名称xxxx 老总是博士生导师,还有一个副总是研究生导师 副总同时是研发总监,负责所有的研发 ...
随机推荐
- python3.6 django2.06 使用QQ邮箱发送邮件
开通QQ邮箱IMAP/SMTP服务,忘记了,重新开通一下,记住密码串. import smtplib from email.mime.text import MIMEText # 收件人列表 mail ...
- grafana的一些坑
坑1: 在设置alert的时候template中的变量是不被支持的,警告如下: 解决办法: 使用不带变量的具体sql查询 坑2: 时间轴的设置: 在更早的版本中时间轴的locale是无法设置的,就是说 ...
- 关于CGI和FastCGI的理解
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器. 0.CGI的引入 在网站的整体架构中,Web Se ...
- [LeetCode&Python] Problem 806. Number of Lines To Write String
We are to write the letters of a given string S, from left to right into lines. Each line has maximu ...
- ElasticSearch(七):ElasticSearch集群的搭建
由于资源有限,使用是一台机器上安装三个elasticSearch服务端组成的集群. 1. 安装elasticSearch6.3.2 将原本安装的elasticSearch6.3.2复制两份,分别重新命 ...
- 度限制最小生成树 POJ 1639 贪心+DFS+prim
很好的解题报告: http://blog.csdn.net/new_c_yuer/article/details/6365689 注意两点: 1.预处理环中权值最大的边···· 2.可以把去掉度限制后 ...
- Executors Future Callable 使用场景实例
https://www.jb51.net/article/132606.htm: 我们都知道实现多线程有2种方式,一种是继承Thread,一种是实现Runnable,但这2种方式都有一个缺陷,在任务完 ...
- Windows下同一台机器上elasticsearch集群的配置以及elasticsearch-head插件的使用
ElasticSearch是一个基于Lucene的开源搜索服务器,现已经被越来越多的企业运用于项目当中,笔者为了学习es在自己机器上简单的搭建了一个es集群,此文权当记录. 1.我用到的压缩包 下载地 ...
- StreamSets 管理 SDC Edge上的pipeline
可选的方式: ui (data colelctor) 发送命令 UI 主要是创建edge pipeline 的时候进行edge server 的配置 默认是 http://localhost:1863 ...
- Map 的营救;使对象属性有顺序
使用ES6的新特性Map.Map 对象以插入的顺序遍历元素.for...of循环为每一次循环返回一个[key, value]数组. 如果想在跨浏览器环境中模拟一个有序的关联数组,你要么使用两个分开的数 ...