Ansible自动化管理

目录

一、安装ansible

二 、修改主机清单

1、首先做主控端到被控端ssh免密操作

2、添加被控制端主机IP

 三、ansible模块

1、command ---- 远程主机执行命

①切换到/data目录下执行ls

②如果不存在/data目录 执行ls

③如果存在/data目录 执行ls

④只能执行简单命令,shell不执行

2、shell----支持shell特性的command

①查看所有主机boot分区的磁盘使用率

3、script ---- 运行shell脚本 

①输入hello world到远程主机的/opt/test.txt文件中

4、copy ---- 复制文件到远程主机

①复制本地的test.sh到远程主机,强制覆盖并备份

5、fetch ---- 从主机提取文件到主控端 

①不指定 flat 会在dest指定目录下创建一个目录,以主机名命名

6、archive ---- 压缩

①压缩/data/data目录,并删除/data/data目录下文件

7、unarchive ---- 解压缩

①打包本机/data目录,上传到远程主机并解压


一、安装ansible

yum -y install epel-release && yum -y install ansible

二 、修改主机清单

1、首先做主控端到被控端ssh免密操作

ssh-keygen

ansible all -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k   批量推公钥

2、添加被控制端主机IP

vi /etc/ansible/hosts

ssh 192.168.127.129 ##首次通信需要留下指纹,可以手动ssh一次,也可以修改配置文件
 
ansible client2 -m ping #验证ansible是否可用
 

 三、ansible模块

1、command ---- 远程主机执行命

使用 command 模块在远程主机中执行命令时,不会经过远程主机的 shell 处理,在使用 command 模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效。

相关选项如下:
creates:一个文件名,当该文件存在,则该命令不执行
free_form:要执行的linux指令,这里的free_form不需要写成赋值的形式,直接写要执行的命令即可,ansible -a代替
chdir:在执行指令之前,先切换到该目录
removes:一个文件名,当该文件不存在,则该选项不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径

①切换到/data目录下执行ls

②如果不存在/data目录 执行ls

③如果存在/data目录 执行ls

④只能执行简单命令,shell不执行

2、shell----支持shell特性的command

在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)

①查看所有主机boot分区的磁盘使用率

ansible all -m shell -a ' df -h | grep boot'

3、script ---- 运行shell脚本 

实现远程批量运行本地的 shell 脚本

①输入hello world到远程主机的/opt/test.txt文件中

4、copy ---- 复制文件到远程主机

相关选项如下:
backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代“src”,可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync
owner    文件复制到远程并设定属主,默认为root
group    文件复制到远程并设定属组,默认为root
mode    文件复制到远程并设定权限,默认file=644,directory=755

①复制本地的test.sh到远程主机,强制覆盖并备份

mv /etc/ansible/test.sh .
ansible client1 -m copy -a "src=/root/test.sh dest=/root/ backup=yes force=yes"

5、fetch ---- 从主机提取文件到主控端 

该模块用于从远程某主机获取(复制)文件到本地。有两个选项:
dest:用来存放文件的目录
src:在远程拉取的文件,并且必须是一个file,不能是目录

①不指定 flat 会在dest指定目录下创建一个目录,以主机名命名

6、archive ---- 压缩

path    远程主机上需要被打包/压缩的源文件(可以是文件列表,支持glob模式)
dest    打包/压缩后的包文件路径(包文件的父目录必须存在);如果包文件已存在,则会被覆盖。
format    指定压缩类型,包括:bz2、gz(默认)、tar、xz、zip
owner    指定属主
group    指定属组
mode    指定权限
remove    yes|no,默认为no,在打包/压缩后,不删除源文件。

①压缩/data/data目录,并删除/data/data目录下文件

ansible client1 -m archive -a 'path=/data/data dest=/data/data.gz format=gz remove=yes'

7、unarchive ---- 解压缩

用于解压文件,模块包含如下选项:
copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。
creates:指定一个文件名,当该文件存在时,则解压指令不执行
src:如果copy为yes,则需要指定压缩文件的源路径
dest:远程主机上的一个路径,即文件解压的路径
owner:解压后文件或目录的属主
group:解压后的目录或文件的属组
mode:解压后文件的权限
list_files:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项

①打包本机/data目录,上传到远程主机并解压

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉吉吉吉吉吉吉吉吉吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值