【Linux32-1】Ansible自动化运维-基础篇
【Linux32-3】Ansible之ad-hoc示例
1. Ansible系列命令详解
ansible-doc:常用于获取模块信息及其使用帮助
|
|
---|---|
|
列出可用的模块 |
|
获取指定模块的使用帮助 |
|
显示ansible-doc的版本号查看模块列表 (v越多越详细) |
|
显示命令参数API文档 |
ansible:临时命令的执行
命令格式:
ansible <host-pattern> 选项 参数
|
|
---|---|
|
表示所有Inventory中的所有主机 |
|
通配符 |
|
逻辑或 |
|
逻辑与 |
|
逻辑非 |
|
|
---|---|
|
模块的参数 (如果执行默认COMMAND的模块,即是命令参数) |
|
后台运行超时时间 |
|
连接类型使用 |
|
提示输入SSH密码 |
|
提示连接密码 |
|
并行任务数,默认为5 |
|
指定主机清单的路径,默认为 /etc/ansible/hosts |
|
查看有哪些主机组 |
|
执行模块的名字,默认使用 command 模块 (所以如果是只执行单一命令可以不用 -m参数) |
|
用 su 命令 |
|
指定 su 的用户,默认为 root 用户 |
|
用 sudo 命令 |
|
指定 sudo 到哪个用户,默认为 root 用户 |
|
指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改 |
|
远程用户,默认为 root 用户 |
|
查看详细信息 (-vvv,-vvvv可查看更详细信息) |
ansible-playbook:执行自动化任务.yml文件
ansible-playbook [options] XXX.yml
|
|
---|---|
|
检查.yml的语法 |
|
预测试,不会改变目标主机的任何设置 |
|
列出任务列表 |
|
列出主机列表 |
|
列出标签 |
|
执行指定任务 |
|
除了指定的任务不执行,执行其他任务 |
|
从指定任务开始执行 |
ansible-vault:文件加密工具
ansible-vault [option] XXX.yml
|
|
---|---|
|
创建 |
|
加密 |
|
解密 |
|
查看 |
|
编辑加密文件 |
|
修改口令 |
ansible-galaxy:用于查找,下载和共享社区开发的角色
下载可使用的角色:https://galaxy.ansible.com/
ansible-galaxy list #列出已安装的galaxy
ansible-galaxy search XXX #查找
ansible-galaxy install XXX #安装galaxy(需要联网操作)
ansible-galaxy remove XXX #移除galaxy
ansible-pull:
2. Ansible 常用模块
ansible-doc -l | grep 模块名
:查看指定模块帮助
copy 文件模块:主要用于将管理主机上的数据信息传送给多台主机
|
|
---|---|
|
复制到远程服务器的文件的本地路径 |
|
文件应复制到的远程绝对路径 |
|
文件数据复制到远程主机,设置文件的所有者 |
|
文件数据复制到远程主机,设置文件的所属组 |
|
文件数据复制到远程主机,设置文件的权限 |
copy模块示例:
ansible <host-pattern> -m copy -a "src=/etc/passwd dest=/mnt"
file 文件模块:实现创建/删除文件信息,对数据权限进行修改
|
|
---|---|
|
要操作的远程文件的路径 |
|
设置文件的所有者 |
|
设置文件的所属组 |
|
设置文件的权限 |
|
删除文件 |
|
创建目录 |
|
创建文件 |
|
查看指定目录是否存在 |
|
创建一个链接 |
file模块示例:
ansible <host-pattern> -m file -a "dest=/mnt/file1 mode=600 owner=kiosk group=kiosk"
yum/dnf 安装模块:
|
|
---|---|
|
安装软件的名称 |
|
安装 |
|
|
|
卸载 |
|
|
|
安装最新的软件 |
yum模块示例:
ansible <host-pattern> -m dnf -a "name=httpd state=present"
service 服务模块:用于管理服务运行状态
|
|
---|---|
|
服务的名称 |
|
设置是否开机自启 |
|
平滑重启 |
|
重启 |
|
启动 |
|
停止 |
service模块示例:
ansible <host-pattern> -m service -a "name=httpd state=started"
user 用户模块:远程批量创建用户信息
|
|
---|---|
|
指定用户名 |
|
密码 |
|
用户uid |
|
指定用户主组 |
|
指定附加组 |
|
是否创建家目录 |
|
家目录路径(默认为 /home) |
|
删除用户 |
user模块示例:
ansible <host-pattern> -m user -a "name=user1" #创建用户
ansible <host-pattern> -m user -a "name=user1 state=absent" #删除用户
group 用户模块:远程批量创建用户组信息
|
|
---|---|
|
组id |
|
组名称 |
|
创建用户组 |
|
删除用户组 |
firewalld 模块:添加、删除防火墙规则
|
|
---|---|
|
指定放行的服务 |
|
永久保存策略 |
|
防火墙策略是否立即生效 |
|
表示策略生效 |
|
表示策略禁用 |
|
新建策略 |
|
删除策略 |
|
指定放行的端口/协议 |
|
指定防火墙信任级别 |
firewalld模块示例:
ansible <host-pattern> -m firewalld -a "service=http permanent=yes immediate=yes state=enabled"
mysql_user 模块:
|
|
---|---|
|
指定用户登录本机mysql |
|
登陆mysql的用户 |
|
登陆用户的密码 |
|
用户名 |
|
用户密码 |
|
数据库端口号 |
|
库名.权限 |
|
创建用户 |
|
删除用户 |
mysql_user模块示例:
ansible <host-pattern> -m mysql_user -a "name=zy password=westos priv='*.*:select' state=present"
template 模块:所有模板均在目标计算机上发送和执行任务之前在Ansible控制器上进行
|
|
---|---|
|
建立文件备份 |
|
本地jinja2模板的文件位置 |
|
远程节点的路径 |
|
远程节点的文件所属用户 |
|
远程节点的文件所属组 |
|
远程节点的文件的权限 |