自动化运维工具Ansible-常用模块使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维工具Ansible-常用模块使用相关的知识,希望对你有一定的参考价值。

1、setup

用来查看远程主机的一些基本信息

ansible web -m setup #由于主机基本信息较多,此处已单台主机为例
技术图片

2、ping

用来测试远程主机的运行状态
ansible web -m ping
技术图片

3、file

相关选项如下:
force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归设置文件的属性,只对目录有效
src:被链接的源文件路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:
directory:如果目录不存在,就创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
ansible web -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link" #远程文件符号链接创建
技术图片
ansible web -m command -a " ls –al /tmp/resolv.conf" #远程文件信息查看
技术图片
ansible web -m file -a "path=/tmp/resolv.conf state=absent" #远程文件符号链接删除
技术图片

4、copy

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

ansible web -m copy -a "src=/tmp/123.txt dest=/tmp/123.txt owner=root group=root mode=0644" #将本地文件“/ tmp/123.txt”复制到远程服务器
技术图片

5、command

在远程主机上执行命令,默认模块,此命令不支持$NAME、<、>、|、;、&等变量、特殊字符、管道。

raw, shell, command的区别:三个模块都能调用对象机器上的某条指令或者某个可执行文件;
raw和shell模块很像, 都支持管道; command模块不支持管道

相关选项如下:
creates:一个文件名,当该文件存在,则该命令不执行
free_form:要执行的linux指令
chdir:在执行指令之前,先切换到该目录
removes:一个文件名,当该文件不存在,则该选项不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径

ansible web -m command -a "uptime" #查看web组主机的系统运行时间
技术图片

6、shell

远程执行脚本
常用参数
free_form参数 :必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考 command 模块。
chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
creates参数 :使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。
removes参数 :使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。
executable参数:默认情况下,shell 模块会调用远程主机中的 /bin/sh 去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,需要使用绝对路径。
示例:
1)先在本地创建一个SHELL脚本
cat /tmp/rocketzhangtest.sh
#!/bin/sh
date +%F
%H:%M:%S
#chmod +x /tmp/rocketzhang_test.sh
2)将创建的脚本文件分发到远程
ansible web -m copy -a "src=/tmp/123.sh dest=/tmp/123.sh owner=root group=root mode=0755"
技术图片
3)远程执行
ansible web -m shell -a "/tmp/123.sh" 或者 ansible web -m shell -a "bash /tmp/123.sh"
技术图片
4)其他演示
ansible ansible-demo3 -m shell -a "chdir=/testdir echo mytest > test"
技术图片
由于shell支持管道与重定向等符号。上面命令打印出mytest并写入test文件
ansible web -m shell -a "chdir=/tmp echo mytest > test ; cat /tmp/test"
技术图片

7、yum

用于软件的安装,升级,卸载,支持红帽.rpm软件的管理
相关选项如下:
conf_file:设定远程yum执行所以来的yum配置文件
disable_gpg_check: 关闭gpg_check
name:需要安装的软件名称
update_cache:安装软前更新缓存
disablerepo:不启用某个源
enablerepo:指定repo源名称
skip_broken:跳过异常软件节点
state:软件包状态,包括:installed,present,latest,removed,absent,其中installed and present等效,latest标志安装yum中最新版本,removed和absent表示卸载
ansible web -m yum -a "name=lrzsz state=installed"
技术图片
ansible web -m yum -a "name=lrzsz state=removed"
技术图片

8、service

管理远程主机上的服务;要管理远程主机中的某个服务,那么这个服务必须能被 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一种所管理,否则 service 模块也无法管理远程主机的对应服务。

常用参数
name参数:用于指定需要操作的服务名称,比如 nginx
state参数:用于指定服务的状态, state有为 started、stopped、restarted、reloaded。
enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。

ansible web –m service –a “name=httpd state=started” #给本地linux系统安装httpd服务,并设置开机自启

9、stat

获取远程文件状态信息, 包括atime, ctime, mtime, md5, uid, gid等信息.

ansible web -m stat -a "path=/etc/resolv.conf"
技术图片

10、get_url

#主要用于从http、ftp、https服务器上下载文件(类似于wget)

常用选项
sha256sum:下载完成后进行sha256 check;
timeout:下载超时时间,默认10s
url:下载的URL
url_password、url_username:主要用于需要用户名密码进行验证的情况
use_proxy:是事使用代理,代理需事先在环境变更中定义
dest:文件下路后的保存路径

ansible web -m get_url -a "url=file:///root/free.sh dest=/tmp" #将本地/root/free.sh下载到/tmp
技术图片
将远端的url连接下载到本地/tmp目录下
ansible web -m get_url -a "url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/tmp"
技术图片

11、script

运行脚本
ansible web -m script -a “/root/sys_init.sh”

12、fetch

从客户端取文件至服务端,与copy相反,目录可先tar
ansible web -m fetch -a "src=/root/a.sh dest=/home/script"

13、Hostname

管理主机名
ansible web -m hostname -a "name=node"

14、Cron

计划任务,支持分时日月周,即 minute hour dag month weekday
ansible web -m cron -a "minute=*/5 job=/usr/sbin/ntpdate 172.16.0.1 & > /dev/null name=sysctime" #创建任务
ansible web -m cron -a "state=absent name=sysctime" #删除任务

15、User

管理用户
ansible web m user –a ‘name=user1 comment="test user" uid=1000 home=/app/user1 group=root‘ #创建用户,用户说明,uid,指定家目录和加入的组
ansible web –m user –a “name=user2 system=yes home=/app/user2” #创建用户,且为系统用户并指定家目录
ansible web –m user –a "name=user2 state=absent remove=yes" # 删除用户及家目录等数据

16、Group

管理组
ansible web –m group –a "name=testgroup system=yes" #创建组并未系统组
ansible web –m group –a "name=testgroup state=absent" #删除组

以上是关于自动化运维工具Ansible-常用模块使用的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维—Ansible工具的使用

自动化运维—Ansible工具的使用

自动化运维—Ansible工具的使用

ansible自动化运维工具和常用模块介绍

Ansible 自动化运维工具之inventory和常用模块介绍

自动化运维工具Ansible-常用模块使用