ansible自动化软件工具(01)

ansible批量管理服务

  • ansible批量管理服务概述
  1. 是基于python语言开发的自动化软件工具
  2. 是基于ssh远程管理服务实现主机批量管理
  • ansible批量管理服务意义
1、 提高工作的效率
2、 提高工作的准确度
3、 减少维护的成本
4、 减少重复性工作
  • ansible批量管理服务功能
1、 可以实现批量系统操作配置
2、 可以实现批量软件服务部署
3、 可以实现批量文件数据分发
4、 可以实现批量系统信息收集

ansible批量管理服务部署

  • ansible批量管理软件的epel源
vim /etc/yum.repos.d/ansible.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
- 配置文件
/etc/ansible/ansible.cfg 			ansible服务配置文件
/etc/ansible/hosts					主机清单文件 
/etc/ansible/roles/					角色目录

1. 安装ansible软件
vim /etc/yum.repos.d/ansible.repo
yum clean all
yum makecache

2. 需要编写主机清单文件
vim /etc/ansible/hosts
# 定义可以管理的主机信息(分发过公钥的主机)
172.16.1.31
172.16.1.41

3. 测试是否可以管理多台主机
脚本 hostname
ansible all -a "hostname"
# 172.16.1.41 | CHANGED | rc=0 >>
# backup
# 172.16.1.31 | CHANGED | rc=0 >>
# nfs

ansible服务架构信息

在这里插入图片描述

ansible软件模块应用

  • ansible官方网站: https://docs.ansible.com/ansible/latest/index.html

  • 模块的应用语法模式

ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) "执行什么动作"
  • ansible软件输出颜色说明
	绿色信息:查看主机信息/对主机未作改动
	黄色信息:对主机数据做了修改
	红色信息:命令执行出错了
	粉色信息:警告信息
	蓝色信息:显示ansible命令执行的过程

命令类型模块

  • 第一个模块:command(默认模块)
command	 				在一个远程主机上执行一个命令

基本用法:
ansible 172.16.1.31 -m command -a "hostname"
# 172.16.1.31 | CHANGED | rc=0 >>
# nfs

扩展应用:
chadir	在执行命令之前对目录进行切换
ansible 172.16.1.31 -m command -a "chdir=/opt touch a.txt"

- 判断
creates	如果一个文件存在,不执行命令操作
ansible 172.16.1.31 -m command -a "creates=/abc chdir=/opt touch c.txt"
# /abc不存在,切换到opt目录下,创建c.txt

removes	如果一个文件存在,执行命令操作
ansible 172.16.1.31 -m command -a "removes=/opt chdir=/opt touch b.txt"
# /opt存在,切换到opr目录下,创建b.txt

- 可输入任意命令
free_form(required)	使用command模块的时候,-a参数后面必须写上一个合法的linux命令信息	
# ansible命令后面必须要加上一个合法的命令行


注意事项:
有些符号信息无法识别:  <   >   |   ;   and   &
- 如果需要使用无法识别的符号,那么需要切换shell模块来进行操作
ansible 172.16.1.31 -m shell -a "cd /root;pwd"
# 172.16.1.31 | CHANGED | rc=0 >>
# /root
  • 第二个模块:shell(万能模块)
shell 				在一个节点上执行一个命令
	
基本用法:
ansible 172.16.1.31 -m shell -a "hostname"
# 172.16.1.31 | CHANGED | rc=0 >>
# nfs

扩展应用:
chadir	在执行命令之前对目录进行切换
ansible 172.16.1.31 -m shell -a "chdir=/opt touch a.txt"

- 判断
creates	如果一个文件存在,不执行命令操作
ansible 172.16.1.31 -m shell -a "creates=/abc chdir=/opt touch c.txt"
# /abc不存在,切换到opt目录下,创建c.txt

removes	如果一个文件存在,执行命令操作
ansible 172.16.1.31 -m shell -a "removes=/opt chdir=/opt touch b.txt"
# /opt存在,切换到opt目录下,创建b.txt

- 可输入任意命令
free_form(required)	使用shell模块的时候,-a参数后面必须写上一个合法的linux命令信息	
# ansible命令后面必须要加上一个合法的命令行
  • 第三个模块:script(脚本文件运行模块)
script				在一个远程主机上执行一个脚本文件

- 编写一个脚本
vim /root/a.sh
echo 666 > /opt/a.txt

基本用法:
ansible 172.16.1.31 -m script -a "/root/a.sh"
# 172.16.1.31 | CHANGED | rc=0 >>

扩展应用:
chadir	在执行命令之前对目录进行切换
ansible 172.16.1.31 -m script -a "chdir=/opt /root/a.sh"

- 判断
creates	如果一个文件存在,不执行命令操作
ansible 172.16.1.31 -m script -a "creates=/opt /root/a.sh"
# /opt存在,不运行a.sh脚本文件

removes	如果一个文件存在,执行命令操作
ansible 172.16.1.31 -m script -a "removes=/opt /root/a.sh"
# /opt存在,运行a.sh脚本文件

- 可输入任意命令
free_form(required)	使用模块的时候,-a参数后面必须写上一个合法的脚本文件路径	
# ansible命令后面必须要加上一个合法的脚本文件路径


使用script命令和shell命令运行脚本文件的差别
- script脚本运行命令
1. 编写一个脚本
vim /root/a.sh
echo 666 > /opt/a.txt

2. 运行ansible命令执行脚本
ansible 172.16.1.31 -m script -a "/root/a.sh"		


- shell脚本运行命令
1. 编写一个脚本
vim /root/a.sh
echo 666 > /opt/a.txt

2. 将脚本发送到远程主机
 scp -r yum.sh root@172.16.1.31:/opt

3. 运行ansible命令执行脚本(如果不用bash命令执行还需要修改文件权限)
 ansible 172.16.1.31 -m shell -a "bash /opt/a.sh"

文件类型模块

  • 语法输出信息
ansible 172.16.1.31 -m copy -a "src=/root/a.txt dest=/opt/a.txt"
172.16.1.31 | CHANGED => {					对哪台主机进行操作
    "ansible_facts": {						
        "discovered_interpreter_python": "/usr/bin/python"		
    }, 
    "changed": true, 							是否对主机信息进行改变	
    "checksum": "8cd34810f040326ac69088bb1dabe8fc6797b8ce", 		生成一个文件效验码==MD5数值
    "dest": "/opt/a.txt", 						显示目标路径信息
    "gid": 0, 									显示复制后文件的gid信息
    "group": "root", 							显示复制后文件的属主信息
    "md5sum": "971658bc2f5bdee5660844a83b5bf0a2", 			生成一个文件效验码==MD5数值
    "mode": "0644", 							显示复制后文件权限信息
    "owner": "root", 							显示复制后文件属主信息
    "size": 4, 									显示文件的大小信息
    "src": "/root/.ansible/tmp/ansible-tmp-1619345289.14-18747-94224893036914/source", 
    "state": "file", 							显示文件的类型信息
    "uid": 0									显示复制后文件的uid信息
}
  • 第一个模块:copy(将数据信息进行批量分发)
基本用法:
ansible 172.16.1.31 -m copy -a "src=/root/a.txt dest=/opt/a.txt_bak"
# 将本机的/root/a.txt发送给172.16.1.31主机,并且改名成/opt/a.txt_bak
# 如果/opt目录下已经存在了a.txt_bak,那么新发过去的文件将覆盖原文件

扩展用法:
owner group		在传输文件时修改文件的属主和属组信息
ansible 172.16.1.31 -m copy -a "src=/etc/ansible/file/rsync/rsync.passwd dest=/etc/ owner=www group=www"
# 将src=/etc/ansible/file/rsync/rsync.passwd文件传输给/etc/目录下,并且将传输过去的文件属组和属主修改成www

mode		在传输文件时修改文件的权限信息
ansible 172.16.1.31 -m copy -a "src=/etc/ansible/file/rsync/rsync.passwd dest=/etc mode=666"

backup		在传输数据文件信息时对远程主机源文件进行备份
ansible 172.16.1.31 -m copy -a "src=/etc/ansible/file/rsync/rsync.passwd dest=/opt backup=yes"
# 远程主机/opt的原文件备份格式 : rsync.passwd(新文件)  rsync.passwd.6177.2021-04-25@20:33:24~(源文件)

content		在远程主机上创建一个文件并直接编辑文件信息(本地主机并不会创建)
ansible 172.16.1.31 -m copy -a "content='lala' dest=/etc/rsync.passwd"

remote_src	(默认为no)
- no : src参数指定文件信息,会在本地管理端服务进行查找
ansible 172.16.1.31 -m copy -a "src=/a/ dest=/opt"
- yes : src参数指定文件信息,会从远程主机上进行查找
ansible 172.16.1.31 -m copy -a "src=/a/ dest=/opt remote_src=yes"

ansible 软件copy模块复制目录信息
- src后面的目录有/:只将目录下面的内容都进行远程传输复制
ansible 172.16.1.31 -m copy -a "src=/a/ dest=/A"	
- src后面的目录没有/:将目录本身以及目录下面的内容都进行远程传输复制		
ansible 172.16.1.31 -m copy -a "src=/a dest=/A"				
  • 第二个模块:file (设置文件属性信息)
基本用法:
ansible 172.16.1.31 -m file -a "dest=/etc/hosts owner=oldboy group=oldboy mode=666"

扩展用法:
1. 可以利用模块创建数据信息(文件 目录 链接文件)
state=directory			创建目录信息
ansible 172.16.1.31 -m file -a "dest=/abc state=directory"					创建单个目录
ansible 172.16.1.31 -m file -a "dest=/abc/a/b/c state=directory"			创建多层级目录/a/b/c/

state=touch				创建文件信息
ansible 172.16.1.31 -m file -a "dest=/abc/nana.txt state=touch"				

- 创建链接文件信息
state=hard				创建硬链接
ansible 172.16.1.31 -m file -a "src=/abc/nana.txt dest=/abc/nana_hard.txt state=hard"

state=link				创建软链接
ansible 172.16.1.31 -m file -a "src=/abc/nana.txt dest=/abc/nana_link.txt state=link"

2. 可以利用模块删除数据信息
state=absent			删除信息
ansible 172.16.1.31 -m file -a "dest=/abc/nana_link.txt state=absent"		删除文件信息
ansible 172.16.1.31 -m file -a "dest=/abc/a state=absent"					删除目录信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值