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://www.ansible.com.cn/

http://docs.ansible.com/modules_by_category.html

http://www.ansible.cn/docs/

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的更多相关文章

  1. Linux 期中架构 inotify

    全网备份数据同步方案 备份网站内部人员信息  不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...

  2. Linux 期中架构 rsync

    上篇 Rsync rysnc查看版本   --version 全量  与增量在效率上有区别 cp mv scp  --全量复制 rsync       --增量复制 rsync利用的是quick ch ...

  3. Linux期中架构

    1    在构建完模板后  开启虚拟机后 需要再重启一次  以解决网卡不能看见的问题 ########################################add begin 2018-05 ...

  4. Linux 期中架构 SSH

    为其他网络服务提供安全协议.替代Telnet SSH:   实现数据加密传输 22  默认支持root用户远程连接 类似sftp-server服务 nmap -p 22 10.0.0.41 nc 10 ...

  5. Linux 期中架构 PHP

    环境 PHP安装前准备  先将需要的软件包如下位置放置.另外需要有WWW用户   参照nginx 满足以上条件后执行安装脚本 PHP安装脚本: #!/bin/bash #install PHP #au ...

  6. Linux 期中架构 MySQL

     MySQL基础部分 mysql安装脚本 安装前请将相关安装包copy放到/server/tools目录下 -rw-r--r-- 1 root root 314149697 Mar 23  2017 ...

  7. Linux期中架构 全网备份案例

    server端脚本 #!/bin/bash #1 进行数据完整性验证 并生成结果 find /backup -type f -name "finger.txt"| xargs md ...

  8. linux 期中架构之 nginx 安装与排错

    1, 安装 nginx 所需要的pcre库 即:perl 兼容正则表达式 yum install pcre pcre-devel -y rpm -qa pcre pcre-devel 检查是否安装好p ...

  9. Linux运维就业技术指导(八):期中架构考核

    一,期中架构考核概述 1.1 架构图 1.2 架构图公司背景概述 公司是一个新兴的人脸识别高新创业公司,公司名称xxxx 老总是博士生导师,还有一个副总是研究生导师 副总同时是研发总监,负责所有的研发 ...

随机推荐

  1. python 模块化管理,导入自己的模块(包)

    很多东西似懂非懂,或者当时看懂了,但是感觉不是很重要,经常不用,时间久了,也就变得似懂非懂了.今天被某度电话面试问道一个问题,就是模块倒入,其实我之前也是很仔细的研究过的,不过由于平时做的东西太简单, ...

  2. 使用Setup安装Windows8 RTM方法

    1.下载Windows 8 RTM版. 2.解压ISO映像或加载虚拟光驱. 3.为了安装双系统,打开sources文件夹中的setup.exe才可. 4.打开后选择“在线获取安装程序的最新更新(推荐) ...

  3. Java Socket 实现HTTP服务器核心

    原文链接:http://www.ihuxu.com/p/235.html   首先了解下HTTP协议: wikiPedia的说明很好,在此不重复了.链接:http://zh.wikipedia.org ...

  4. L207

    The leaders of the two countries are planning their summit meeting with a (pledge) to maintain and d ...

  5. mysql5.7高可用架构之MHA

    一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...

  6. 多种数据库之间的同步工具SymmetricDS

    代码:https://github.com/JumpMind/symmetric-ds 原理: 通过触发器模式同步时,是将数据库的变化记录到某个系统表中,然后在客户端建立缓冲,并定期将变化push到接 ...

  7. C++ 多线程中使用cout还是printf

    在多线程的设计模式下,如果多个线程都使用cout打印信息,那么很容易出现内容交替的现象,例如下图: 代码如下: 如果把cout替换成printf,那么就不会出现这个问题,运行结果如下图: 对应代码如下 ...

  8. rm: 无法删除"xxxx.dir": 是一个目录

    rm命令 -f:在删除过程中不给任何指示,直接删除. -r:将参数中列出的全部目录和子目录都递归地删除. -i:与-f选项相反,交互式删除,在删除每个文件时都给出提示. 删除文件可以直接使用rm命令, ...

  9. hdu1069 dp

    题意:有若干种不同规格(长.宽.高)的砖块,每种砖块有无数个,可以自由选择以砖块的哪条边做长.宽或高,用这些砖块搭高塔,要求上面砖块的长宽必须严格小于下面砖块的长宽,问塔最高能有多高 我的做法是每读入 ...

  10. 【转】python3中bytes和string之间的互相转换

    问题: 比对算法测试脚本在python2.7上跑的没问题,在python3上报错,将base64转码之后的串打印出来发现,2.7版本和3是不一样的:2.7就是字符串类型的,但是3是bytes类型的,形 ...