【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模板的文件位置 |
| 远程节点的路径 |
| 远程节点的文件所属用户 |
| 远程节点的文件所属组 |
| 远程节点的文件的权限 |