ansible组件学习记录
主机清单
1 | 默认读取路径:/etc/ansible/hosts |
1 | [root@localhost ~]# tree /etc/ansible/ |
hosts 配置:
1 | [webservers] ---------主机组名称-使用ansible时指定主机组时用 |
Ansible选项
Ansible选项 | 作用 |
---|---|
-i | 指定主机清单 |
-m | module 指定模块 |
-a | action 指定动作(一般是模块中选项的命令) |
Ansible模块
- Ansible AD-Hoc ansible命令行批量执行(使用各种模块)
Ansible模块 | 作用 |
---|---|
ping | 检查ansible与主机直接的通信情况 |
script | 分发shell脚本 |
file | 文件/目录创建,删除 |
copy | 远程复制(ansible------》节点) |
命令/脚本模块 | |
shell | 批量执行shell命令 |
command | 默认模块,试用于执行简单的命令(不支持特殊符号) |
查看ansible模块执行参数,支持的内容
1 | ansible-doc -s 模块名 |
颜色区分
- 绿色/黄色:正常
- 紫色:警告与建议
- 红色:故障
ansible认证方式
- 秘钥认证
- 密码认证
script
file
file模块
path 路径(目录,文件)必须要写
state 状态(模式)state=directory 创建目录
state=file(默认) 创建文件
state=link 创建软链接
src 源文件 (link创建软连接时当做源文件)
copy模块
src 源目录
dest 目标目录
owner 传输中指定所有用户
groupadd 传输中指定所有组
mode=644 指定文件启动权限
backup=yes 如果目标文件存在则备份
content 向文件中写入内容 增加内容
服务管理
systemd模块
name 指定服务名称
enabled=yes 开机自启动
state 表示服务开关,重启…
state=started,
state=restarted,
state=stopped,
state=reloaded
daemon-relaod yes是否重新加载对应服务的配置文件
服务管理模块 | systemd | service |
---|---|---|
开机自启动 | enable | enable |
服务名称 | name | name |
服务开关重启 | state | state |
运行级别 | 无 | runlevel |
重新加载systemd配置 | daemon-reload=yes |
ansible-doc -l 显示所有模块
ansible-doc -s 查询指定模块
软件包管理
- yum模块:yum_repository
- 通过yum安装软件
yum_repository |
---|
name yum源中名字[epel] |
description yum源的注释说明 对应的是name的内容 |
baseurl yum源中baseurl下载地址 |
enabled 是否启动这个源 yes/no |
gpgcheck 是否启动gpgcheck功能no |
file 指定yum源的文件 自动添加.repo 默认与n模块的名称一致 |
1 | [epel] #模块名称 |
yum模块
name 指定软件包名 |
---|
state installed 安装(present) removed 卸载 (absent) latest 安装或更新 |
下载软件包
wget
get_url模块 |
---|
url 下载地址 |
dest 下载到指定目录 |
系统管理
mount模块
fstype 指定文件系统 |
---|
src 源地址 |
path 挂载点 |
mount模块的state参数值 |
---|
absent 卸载(仅修改/etc/fstab) |
umounted 卸载(并修改/etc/fstab) |
present 不挂载 (仅修改/etc/fstab) |
mounted 挂载 (并修改/etc/fstab) |
remounted 重新挂载 |
cron定时任务
cron模块 定时任务 |
---|
name 任务名称(一定要加) |
minute 分钟 minute=“*/2” |
hour 小时 |
day 日期 |
month 月份 |
week 周几 |
job 指定命令或脚本(定向到)job=“shell 命令” |
state absent(删除定时任务) present(添加定时任务) |
disabled diabled=yes,disabled=no定时任务注释(必须state=present) |
用户管理
group 模块 |
---|
name 指定用户组名字 |
gid 指定组的gid |
state present(添加) |
user模块 |
---|
name 用户名 |
uid 用户名 uid |
group 属于的组 |
groups 属于多个组 |
shell 指定命令解释器 |
create_home 是否创建家目录yes/no |
state present(添加) absent(删除) |
模块小结
模块分类 |
---|
命令和脚本模块 command 默认模块,执行简单命令,不支持特殊符号 |
shell模块,执行命令,支持特殊符号 |
script模块 分发脚本并执行 |
文件相关模块 file创建目录和软连接 |
copy远程分发,修改权限,备份 |
服务模块 systemd服务管理 |
service服务管理(了解) |
软件包 |
yum源 yum_repository |
yum命令 |
get_url 下载软件 |
系统管理 |
mount模块 挂载 |
cron模块 定时任务 |
用户管理 |
group模块 管理用户组 |
user模块 管理用户 |
其他 |
压缩解压,rsync模块,数据库模块 |
Ansible剧本
- ad-hoc命令对于重复执行不方便
- 重复的操作与部署推荐写一个Ansible剧本(脚本),剧本本质 使用模块+固定格式(对齐)
剧本格式
- yaml格式
Playbook组成
-hosts: all
remote_user: root
vars:
file_name: oldboylinux
tasks
-
name: touch new files
shell: touch /tmp/
playbook
play 动作中的一个一个场景 一般用于指定不同的主机
task 这一个场景中不同的动作 指定了机器后,让这些机器执行的模块
-
具体书写注意事项
- 同一层级的内容对齐的
- 不同层级的通过2个空格对齐
- 不能使用Tab键
cowsay-----机器上安装执行剧本时会变成奶牛
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 忆录云博客!
评论
WalineTwikoo