区别:
command可以在受管主机上执行shell命令,但是不支持环境变量和操作符
shell模块调用的/bin/sh指令执行,也就是可以直接像终端环境一样使用
shell模块调用的/bin/sh指令执行
不需要受管主机上安装Python,直接使用远程shell运行命令,通常用于无法安装Python的系统
举例:
- name: Copy using inline content # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
- name: copy test # 第一个任务的描述
shell: touch /123.txt # 使用的模块是shell作用是像shell环境里一样创建123.txt文档
完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目录、修改文件
权限等
path参数 :必须参数,用于指定要操作的文件或目录
state参数 : 创建文件还是目录还是链接等 state= touch|directory|link|hard|absent
owner参数 :用于指定被操作文件的属主
group参数 :用于指定被操作文件的属组
mode参数:用于指定被操作文件的权限
例
- name: file mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
- name: file # 第一个任务的描述
path: /123.txt # 创建文件的路径
owner: root # 属主 root
group: root
mode: 777 # 文件权限
state: touch # 创建
copy模块的作用就是拷贝文件,它与fetch模块类似,不过,fetch模块是从远程主机中拉取
文件到ansible主机,而copy模块是将ansible主机上的文件拷贝到远程主机中。
src参数 :用于指定需要copy的文件或目录
dest参数 :用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数
content参数 :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与
content两个参数必有其一,否则会报错。
force参数 : 是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖。
owner参数 : 指定文件拷贝到远程主机后的属主
group参数 : 指定文件拷贝到远程主机后的属组
mode参数 : 指定文件拷贝到远程主机后的权限
例:
- name: copy mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
- name: copy # 第一个任务的描述
src: /123.txt # 要复制文件的路径
dest: ~/ # 复制到的目的地路径
owner: root # 属主 root
group: root
mode: 777 # 文件权限
拉取远程主机的文件,并以主机IP地址或者主机名为目录,并保留了原来的目录结构
dest 目标地址
src 源
flat yes 不按照src的目录来创建目录,flat为no就在当前路径创建和src一样的目录路径
例:
ansible webservers -m fetch -a 'src=/etc/hosts dest=/opt' # 远程被控制节点copy文件到控制节点
path参数 :必须参数,指定要操作的文件。
line参数 : 使用此参数指定文本内容。
state参数:删除对应的文本时,需要将state参数为absent,state的默认值为present
backup参数:是否在修改文件之前对文件进行备份。
create参数 :当要操作的文件并不存在时,是否创建对应的文件。
例:
- name: lineinfile mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
- name: # 第一个任务的描述
path: /123.txt
line: "123\n12345" # 在123.txt中写入的内容 会换行
create: yes
state: present #写入的内容存在就不会再写,不存在就写
src:解压的源路径
dest:解压到的目标路径
mode:设置解压缩后的文件权限
user模块实现用户账号管理。
name=:用户名
uid:用户的uid
group:所属组,即私有组
groups:附加组。
state:状态。
例:
- name: user mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
- user: # 第一个任务的描述
name: tom # 创建的用户是tom
group: tom # 属 组是tom
state: present # 创建
name参数:必须参数,用于指定要操作的唯一的仓库ID,也就是”.repo”配置文件中每个仓库对应
的”中括号”内的仓库ID。
baseurl参数:此参数用于设置 yum 仓库的 baseurl。
description参数:此参数用于设置仓库的注释信息,也就是”.repo”配置文件中每个仓库对应的”
name字段”对应的内容。
file参数:此参数用于设置仓库的配置文件名称,即设置”.repo”配置文件的文件名前缀,在不使用
此参数的情况下,默认以 name 参数的仓库ID作为”.repo”配置文件的文件名前缀,同一个”.repo”
配置文件中 可以存在多个 yum 源。
enabled参数:此参数用于设置是否激活对应的 yum 源,此参数默认值为 yes,表示启用对应的
yum源,设置为 no 表示不启用对应的 yum 源。
gpgcheck参数:此参数用于设置是否开启 rpm 包验证功能,默认值为 no,表示不启用包验证,
设置为 yes 表示开启包验证功能。
gpgkey参数:当 gpgcheck 参数设置为 yes 时,需要使用此参数指定验证包所需的公钥。
state参数:默认值为 present,当值设置为 absent 时,表示删除对应的 yum 源。
例:
ansible web -m yum_repository -a
'name=AppStream description="AppStream"
baseurl="http://classrom.example.com/rhel8/AppStream" gpgcheck=no file=rhel8'
name参数:必须参数,用于指定需要管理的软件包,比如 nginx。
state参数:用于指定软件包的状态 ,默认值为。present,表示确保软件包已经安装,除了。
present,其他可用值有 installed、latest、absent、removed,其中 installed 与present 等效,
latest 表示安装 yum 中最新的版本,absent 和 removed 等效,表示删除对应的软件包。
disable_gpg_check参数:用于禁用对 rpm 包的公钥 gpg 验证。默认值为 no,在对应的 yum 源没有开启 gpg 验证的情况下,需要将此参数的值设置为 yes,否则会报错而无法进行安装。
enablerepo参数:用于指定安装软件包时临时启用的 yum 源。
disablerepo参数:用于指定安装软件包时临时禁用的 yum 源。
例:
ansible all -m yum -a 'name=telnet disable_gpg_check=yes disablerepo=local'
name参数:此参数用于指定需要操作的服务名称,比如 nginx。
state参数:此参数用于指定服务的状态,启动为 started;停止服务为 stopped。此参数的可用值有 started、stopped、restarted、reloaded。
enabled参数:yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动
arguments: 给命令提供一些选项:如
ansible all -m service -a "name=network state=restarted args=eth0"
runlevel : 运行等级
sleep: 如果运行看restarted 则stop and start 之间沉睡几秒中
例:停止NGINX服务,开机不启动
ansible all -m systemd -a "name=nginx state=stopped enabled=no "
State 指防火墙策略状态enable disable present absent
service 指定服务
immediate 立即启用
port 端口 port=80/tcp
permanent 永久生效
例:添加http服务,永久添加,
ansible webservers -m firewalld -a 'service=http permanent=true immediate=true state=enabled'
nmcli
模块支持管理网络连接和设备。此模块支持配置网络接口组合和绑定,以及ipv4和ipv6寻址
例:
- name: mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
nmcli:
conn_name: ens224
ifname: ens224
type: ehternet
ip4: 172.25.250.30/24
gw4: 172.25.250.1
state: present
该模块主要用于从http、ftp、https服务器上下载文件(类似于wget),主要有如下选项:
sha256sum:下载完成后进行sha256 check;
timeout:下载超时时间,默认10s
url:下载的URL
url_password、url_username:主要用于需要用户名密码进行验证的情况
use_proxy:是事使用代理,代理需事先在环境变更中定义
owner: 指定属主
group: 指定属组
例:
- name: user mode # 剧本的描述
hosts: web2 # 受控主机或者组
tasks: # 执行的任务
get_url:
url: https://www.baidu.com
dest: /etc/ # 下载到的路径
配置挂载点
fstype:必选项,挂载文件的类型
path:必选项,挂载点
opts:传递给mount命令的参数
src:必选项,要挂载的文件系统
state:必选项present:只处理fstab中的配置absent
挂载点mounted
unmounted:卸载
例:
- name: mount mode
hosts: web2
tasks:
- name: mount
mount:
fstype: iso9660 # 光盘文件系统类型
src: /dev/sr0 # 要挂载的
path: /mnt/ # 挂载点
state: mounted # 挂载