1::ansible模块:
(1):command 模块
command 模块在远程主机执行命令,但是不支持管道,重定向等shell的特性,常见参数如下:(不支持管道,不建议使用)
- chdir:在远程主机上运行命令前要提前进入目录
- creates:在命令运行时创建一个文件,如果文件已经存在,则不会创建任务
- removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务
- executeble:指明运行命令shell程序
实验案例:
a:在所有主机上运行“ls ./"命令,运行前切换/home目录下,操作如下
准备一下环境,在两台主机上分别创建crushlinux用户,否则/home下是空的查看不到效果
《1》:ansible webserver -m command -a "useradd crushlinux" 创建用户
《2》:ansible webserver -m command -a "chdir=/home ls -l" 先进入home目录下,在执行ls -l
《3》:ansible webserver -m command -a "uptime" 查看uptime的相关信息
(2):shell模块
shell模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一下子shell运行命令,和command模块的区别是他支持shell特性,如管道,重定向等,
案例:
《1》:ansible webserver -m shell -a "echo 11111 > 1.txt" 重定向到1.txt
(3):raw模块(建议使用)
最原始的方式运行命令(不依赖Python,仅通过ssh实现)
(4):copy 模块
copy模块用于复制指定主机文件到远程主机的指位置,常见参数如下
- dest:指出复制文件的目标文件位置,使用绝对路径,如果源是目录,指目标也是目录,如果目标文件已经存在会覆盖原有内容。
- src:指出源文件的路径,可以使用相对路劲或绝对路径,支持直接指定目录,如果源是目录测试目标也要是目录。
- mode:指出复制时,目标文件的权限可选
- owner:指出复制时,目标文件的属主可选
- group:指出复制时,目标文件的属组 可选
- content:指出复制到目标主机上的内容,不能与src一起使用,相当于复制content指明的数据到目标文件中
特别提示:
参数:backup=yes ==>意思是,如果目标路劲下,有与我同名但不同内容的文件时,在覆盖前,对目标文件先进性备份。
所有被管理端节点必须安装libselinux-Python 包
《1》:yum -y install libselinux-python
《2》:rpm -qa libselinux-python
实验案例:
将crushlinux 组中主机的/etc/hosts 文件拷贝到/tmp下,指定权限为777更该属于主为crushlinux更改属组为root
《1》:ansible webserver -m copy -a "src=/etc/hosts dest=/tmp mode=777 owner=crushlinux group=root"
(5):hostname 模块
Hostname 模块用于管理远程主机上的主机名,常用参数如下:
《1》:ansible 192.168.100.20 -m hostname -a "name=crushlinux" 修改主机名称
(6):yum模块
yum模块基于yum机制,对远程主机管理程序包,常见参数如下
- name:程序包的名称,可以带上版本号,如不指定版本号默认安装为最新版本
- state=present | latset | absent :指明对程序包执行的操作,presset 表示安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包
- disablerepo:在用yum安装时禁用某个仓库的ID
- enabierepo:在用yum安装时启用某个参考的ID
- conf_file:yum运行时的配置文件而不是使用默认的配置文件
- disable_gpg_check=yes|no:是否启用完整性校验功能
实验案例:
注意实验前要在client端配置yum仓库
管理员只是发送yum命令道被管理端,被管理端要存在可用的yum仓库才可以成功安装
《1》:ansible webserver -m yum -a "name=bind state=present" 安装软件包
(7):service 模块
service模块为用来管理远程主机的服务的模块,常见参数如下:
- name:被管理的服务名称
- state=started | stoped | restarted:动作包含启动关闭或重启
- enabled=yes|no:表示是否设置该服务开机自启动
- runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自启动
实验案例:
《1》:ansible webserver -m -service -a "name=httpd state=started enabled=yes" 设置为开机自启动
systemctl is-enbaled httpd 查看是否是开机自启动
(8):user模块
user模块用于管理远程主机上的用户账户,常见的参数如下:
- name:必选参数 账户名称
- state=present|absent:创建账户或者删除账号,present表示创建,absent表示删除
- system=yes|no:是否为系统账号
- UID:用户UID
- group:用户的基本组
- groups:用户的附加组
- shell:默认使用的shell
- home:用户的家目录
- move_home=yes|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
- password:用户的密码,建议使用加密后的字符串
- comment:用户的注释信息
- remove=yes|no:当state=absent是,是否删除用户的家目录
实验案例:
《1》:ansible webserver -m user -a 'name=user1 system=yes uid=502 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"' 创建用户、
《2》:ansible webserver -m user -a "name=user1 state=absent remove=yes"删除用户
(9):script 模块
script模块能够实现远程服务器批量运行本地的shell脚本
远程批量分布并自动部署nginx
所有被管理端需要挂载光盘,并创建本地yum仓库文件
《1》:vim /opt/file20.sh 编写脚本
《2》:写入:
#! /bin/bash
touch /tmp/file {1..20}.txt
《3》:ansible webserver -m script -a "/opt/file20.sh" 执行脚本