【Linux32-2】Ansible命令与模块详解



【Linux32-1】Ansible自动化运维-基础篇
【Linux32-3】Ansible之ad-hoc示例



1. Ansible系列命令详解


ansible命令官方文档


ansible-doc:常用于获取模块信息及其使用帮助

ansible-doc
-l
列出可用的模块
-s 模块名
获取指定模块的使用帮助
-v
显示ansible-doc的版本号查看模块列表
(v越多越详细)
-h
显示命令参数API文档

ansible:临时命令的执行

命令格式:
ansible <host-pattern> 选项 参数

host-pattern 匹配主机的列表
All
表示所有Inventory中的所有主机
*
通配符
逻辑或
:&
逻辑与
:!
逻辑非

ansible
-a
模块的参数
(如果执行默认COMMAND的模块,即是命令参数)
-B
后台运行超时时间
-c
连接类型使用
-k
提示输入SSH密码
-K
提示连接密码
-f
并行任务数,默认为5
-i
指定主机清单的路径,默认为 /etc/ansible/hosts
--list-hosts
查看有哪些主机组
-m
执行模块的名字,默认使用 command 模块
(所以如果是只执行单一命令可以不用 -m参数)
-S
用 su 命令
-R
指定 su 的用户,默认为 root 用户
-s
用 sudo 命令
-U
指定 sudo 到哪个用户,默认为 root 用户
-T
指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u
远程用户,默认为 root 用户
-v
查看详细信息
(-vvv,-vvvv可查看更详细信息)

ansible-playbook:执行自动化任务.yml文件

ansible-playbook [options] XXX.yml

ansible-playbook
--syntax-check
检查.yml的语法
-C
预测试,不会改变目标主机的任何设置
--list-tasks
列出任务列表
--list-hosts
列出主机列表
--list-tags
列出标签
-t 标签名
执行指定任务
--skip-tags=标签名
除了指定的任务不执行,执行其他任务
--start-at-task=标签名
从指定任务开始执行

ansible-vault:文件加密工具

ansible-vault [option] XXX.yml

ansible
create
创建
encrypt
加密
decrypt
解密
view
查看
edit
编辑加密文件
rekey
修改口令

ansible-galaxy:用于查找,下载和共享社区开发的角色

ansible-gaalxy官网帮助

下载可使用的角色:https://galaxy.ansible.com/


ansible-galaxy list	#列出已安装的galaxy
ansible-galaxy search XXX	#查找
ansible-galaxy install XXX	#安装galaxy(需要联网操作)
ansible-galaxy remove XXX	#移除galaxy

ansible-pull

见ansible-pull官方文档


2. Ansible 常用模块


ansible-doc -l | grep 模块名:查看指定模块帮助

ansible模块官方文档

copy 文件模块:主要用于将管理主机上的数据信息传送给多台主机

copy 参数
src
复制到远程服务器的文件的本地路径
dest
文件应复制到的远程绝对路径
owner
文件数据复制到远程主机,设置文件的所有者
group
文件数据复制到远程主机,设置文件的所属组
mode
文件数据复制到远程主机,设置文件的权限

copy模块官方文档

copy模块示例:
ansible <host-pattern> -m copy -a "src=/etc/passwd dest=/mnt"

file 文件模块:实现创建/删除文件信息,对数据权限进行修改

file 参数
dest 或 path 或 name
要操作的远程文件的路径
owner
设置文件的所有者
group
设置文件的所属组
mode
设置文件的权限
state=absent
删除文件
state=directory
创建目录
state=touch
创建文件
state=file
查看指定目录是否存在
state=link
创建一个链接

file模块官方文档

file模块示例:
ansible <host-pattern> -m file -a "dest=/mnt/file1 mode=600 owner=kiosk group=kiosk"

yum/dnf 安装模块

yum或dnf 参数
name
安装软件的名称
state=present
安装
state=installed
state=absent
卸载
state=removed
state=latest
安装最新的软件

yum模块官方文档

yum模块示例:
ansible <host-pattern> -m dnf -a "name=httpd state=present"

service 服务模块:用于管理服务运行状态

service 参数
name
服务的名称
enabled=yes/no
设置是否开机自启
state=reloaded
平滑重启
state=restarted
重启
state=started
启动
state=stopped
停止

service模块官方文档

service模块示例:
ansible <host-pattern> -m service -a "name=httpd state=started"

user 用户模块:远程批量创建用户信息

user 参数
name
指定用户名
password
密码
uid
用户uid
group
指定用户主组
groups
指定附加组
create_home
是否创建家目录
home
家目录路径(默认为 /home)
state=absent
删除用户

user模块官方文档

user模块示例:
ansible <host-pattern> -m user -a "name=user1"	#创建用户
ansible <host-pattern> -m user -a "name=user1 state=absent"	#删除用户

group 用户模块:远程批量创建用户组信息

group 参数
gid
组id
name
组名称
state=present
创建用户组
state=absent
删除用户组

group模块官网文档

firewalld 模块:添加、删除防火墙规则

firewalld 参数
service
指定放行的服务
permanent
永久保存策略
immediate=yes/no
防火墙策略是否立即生效
state=enabled
表示策略生效
state=disabled
表示策略禁用
state=present
新建策略
state=absent
删除策略
port
指定放行的端口/协议
zone
指定防火墙信任级别

firewalld模块示例:
ansible <host-pattern> -m firewalld -a "service=http permanent=yes immediate=yes state=enabled"

mysql_user 模块

mysql_user 参数
login_host
指定用户登录本机mysql
login_user
登陆mysql的用户
login_password
登陆用户的密码
name
用户名
password
用户密码
login_port=3306
数据库端口号
priv
库名.权限
state=present
创建用户
state=absent
删除用户

mysql_user模块示例:
ansible <host-pattern> -m mysql_user -a "name=zy password=westos priv='*.*:select' state=present"

template 模块:所有模板均在目标计算机上发送和执行任务之前在Ansible控制器上进行


template 参数
backup=yes/no
建立文件备份
src
本地jinja2模板的文件位置
dest
远程节点的路径
owner
远程节点的文件所属用户
group
远程节点的文件所属组
mode
远程节点的文件的权限

猜你喜欢

转载自blog.csdn.net/weixin_46069582/article/details/112131858