管理的方式、命令运行方式及常用参数、颜色代表信息、常用模块command、shell、script、copy、fetch、file、archive、unarchive

  • 1、ansible实现管理的方式
  • 2、ansible命令运行方式及常用参数
  • 3、ansible的基本颜色代表信息
  • 4、ansible中的常用模块
  • (1)command
  • (2)shell
  • (3)script
  • (4)copy
  • (5)fetch
  • (6)file
  • (7)archive
  • (8)unarchive
  • (9)hostname


1、ansible实现管理的方式

(1)Ad-Hoc,利用ansible命令直接完成管理,主要用于临时命令使用场景,前面已经演示。

显示模块帮助的指令

ansible-doc -l 列出所有模块

ansible-doc 名称 列出指定模块

ansible-doc -s 简要列出指定模块

ansible解压zip包 ansible archive_ansible解压zip包


(2)playbook,ansible脚本,主要用于大型项目场景,需要前期的规划

编写test.yaml,执行test.yaml

ansible解压zip包 ansible archive_ansible_02

2、ansible命令运行方式及常用参数

-v显示详细信息

ansible解压zip包 ansible archive_压缩包_03


-k是指定ssh的密钥,-u指定远程执行的用户

ansible解压zip包 ansible archive_压缩包_04


预执行检测

ansible解压zip包 ansible archive_linux_05


--bocome在远程主机中,执行命令时使用sudo调用

--become-user=root,sudo调用命令时,用到的用户身份

-K是sudo的执行密钥,

3、ansible的基本颜色代表信息

绿色,执行成功但为对远程主机做任何改变

黄色,执行成功并对远程主机做改变

红色,执行失败

ansible解压zip包 ansible archive_linux_06

4、ansible中的常用模块

(1)command

功能为在远程主机执行命令,此模块为默认模块,常用参数有

chdir

执行命令前先进入到指定目录

removes

存在运行

create

存在不运行

进入mnt,创建文件file1file2file3

ansible解压zip包 ansible archive_运维_07


成功创建

ansible解压zip包 ansible archive_linux_08


/mnt/file5文件存在时,运行后面的删除指令,没有执行

/mnt/file1文件存在时,运行后面的删除指令,成功运行

ansible解压zip包 ansible archive_linux_09


/mnt/file1文件存在时,不运行后面的指令。第一条因为/mnt/file1文件不存在,执行创建文件。第二条因为/mnt/file1文件存在,不执行删除文件。

ansible解压zip包 ansible archive_ansible解压zip包_10

(2)shell

shell和command功能类似,主要有两点不同

  • shell中支持通配符* ,command不支持通配符* 如下图,command中无法删除/mnt,shell中可以删除/mnt
  • ansible解压zip包 ansible archive_压缩包_11


  • shell多了executable模块
    默认使用的执行环境为sh,加入executable模块,可以指定执行环境为bash

(3)script

功能为指定脚本在被控主机中运行

为了方便操作,现在只留了200为受控主机

ansible解压zip包 ansible archive_运维_12


使用script模块,受控机执行test.sh脚本

ansible解压zip包 ansible archive_ansible_13

(4)copy

从ansible主机复制文件到受控主机

常用参数

含义

content

指定文本内容直接在受控主机中生成文件

dest

目的地文件

group

指定目的地文件的组

mode

指定目的地文件权限

owner

指定目的地文件所有人

backup=yes

当受控主机中存在文件时备份原文件

src

源文件

使用copy模块,从ansible主机复制test.sh文件到被控主机的/mnt/test.sh文件,拥有者为westos,权限为755

ansible解压zip包 ansible archive_压缩包_14


进入受控机,查看文件权限为755,拥有者为westos

ansible解压zip包 ansible archive_linux_15


修改test.sh文件,再次执行copy模块,添加backup参数,可以备份之前的同名文件

ansible解压zip包 ansible archive_运维_16


查看,之前的文件备份了,接受了新的文件

ansible解压zip包 ansible archive_linux_17


copy模块,还可以直接输入文件内容,发给受控主机的/mnt/westos文件

ansible解压zip包 ansible archive_ansible解压zip包_18


受控主机的westos文件的内容的确是hello word

ansible解压zip包 ansible archive_ansible_19

(5)fetch

从受控主机把文件复制到ansible主机,但不支持目录

src

受控主机的源文件

dest

本机目录

flat

基本名称功能,单纯只要文件,不要路径的层层目录

使用fetch模块,从受控主机复制/etc/sysconfig/network-scripts/ifcfg-ens3文件到ansible主机的lee用户的家目录,可以看到层层的子目录也复制过来了。

ansible解压zip包 ansible archive_linux_20


多加flat参数,表示只要这个文件,不要层层目录

ansible解压zip包 ansible archive_ansible解压zip包_21

(6)file

受控主机的文件管理,设置文件的属性

参数

含义

path

指定文件名称

state

指定操作状态(touch建立文件、absent删除、directory建立目录、link建立软连接、hard建立硬连接)

mode

设定权限

owner

设定文件的用户

group

设定文件组

src

源文件

dest

目标文件

recurse=yes

递归更改

使用file模块,受控主机建立/mnt/westosfile文件

ansible解压zip包 ansible archive_ansible_22


已建立westosfile文件

ansible解压zip包 ansible archive_运维_23


受控主机建立westosdir目录

ansible解压zip包 ansible archive_压缩包_24


已建立westosdir目录

ansible解压zip包 ansible archive_压缩包_25


设定westosfile文件的拥有者为westos

ansible解压zip包 ansible archive_运维_26


成功设定westosfile文件的拥有者为westos

ansible解压zip包 ansible archive_ansible_27


设定westosdir目录的组为westos

ansible解压zip包 ansible archive_ansible解压zip包_28


成功设定westosdir目录的组为westos

ansible解压zip包 ansible archive_运维_29


建立层级文件westosdir/westosfile

ansible解压zip包 ansible archive_ansible_30

设定westosdir目录的组为devops,并设定westosdir目录下的文件的组为devops

ansible解压zip包 ansible archive_linux_31


成功设定westosdir目录以及里面的文件的组为devops

ansible解压zip包 ansible archive_ansible_32


用westosfile文件,创建受控主机的linuxfile软连接

ansible解压zip包 ansible archive_ansible解压zip包_33


查看软连接

ansible解压zip包 ansible archive_运维_34


用westosfile文件,创建受控主机的hahafile硬连接

ansible解压zip包 ansible archive_压缩包_35


查看硬连接,编号一样

ansible解压zip包 ansible archive_运维_36


删除受控主机的linuxfile文件

ansible解压zip包 ansible archive_压缩包_37


已成功删除受控主机的linuxfile文件

ansible解压zip包 ansible archive_linux_38


删除受控主机的westosdir目录

ansible解压zip包 ansible archive_ansible解压zip包_39


已成功删除受控主机的westosdir目录

ansible解压zip包 ansible archive_运维_40

(7)archive

压缩

常用参数

含义

path

打包目录名称

dest

声称打包文件名称

format

打包格式

owner

指定文件所属人

mode

指定文件权限

使用archive模块,受控主机把/etc打包为etc.tar.gz压缩包,格式为gz格式

ansible解压zip包 ansible archive_ansible解压zip包_41


查看etc.tar.gz压缩包

ansible解压zip包 ansible archive_ansible解压zip包_42


受控主机把/etc打包为etc.tar.bz2压缩包,格式为bz2格式,权限为755,拥有者为westos,组为devops

ansible解压zip包 ansible archive_ansible解压zip包_43


查看etc.tar.bz2,权限为755,拥有者为westos,组为devops

ansible解压zip包 ansible archive_压缩包_44

(8)unarchive

解压缩

常用参数

含义

copy

默认为yes(从ansible主机复制文件到受控主机);设定为no,从受控主机中寻找src源文件

remote_src

功能同copy且相反,设定为yes 表示包在受控主机,设定为no表示包在ansible主机

src

包路径,可以使用ansible主机也可以使用受控主机

dest

受控主机目录

mode

解压后文件权限

首先在ansible主机创建压缩包

ansible解压zip包 ansible archive_ansible_45


使用ansible主机的压缩包(可以使用相对路径),解压到受控主机的/media下

ansible解压zip包 ansible archive_linux_46


解压成功

ansible解压zip包 ansible archive_ansible解压zip包_47


使用ansible主机的压缩包,解压到受控主机的/media下,解压后文件权限为700,拥有者为westos

ansible解压zip包 ansible archive_ansible_48


查看解压后文件权限为700,拥有者为westos

ansible解压zip包 ansible archive_ansible_49


删除ansible主机的压缩包,使用受控主机的压缩包(绝对路径),解压到受控主机的/media下,解压后文件权限为700,拥有者为devops

ansible解压zip包 ansible archive_ansible_50


解压后目录中的文件权限为700,拥有者为devops

ansible解压zip包 ansible archive_ansible_51

(9)hostname

作用为修改主机名称

修改受控主机的主机名称为westos_node2

ansible解压zip包 ansible archive_压缩包_52


成功修改

ansible解压zip包 ansible archive_运维_53


恢复受控主机的主机名称为westos_node1

ansible解压zip包 ansible archive_ansible_54


修复成功

ansible解压zip包 ansible archive_linux_55


还有更多模块,在下一篇文章介绍