
Ansible 常见企业级应用实战
Fetch模块
从客户端取文件至服务器端,与copy模块相反,我们可以通过ansible-doc -s fetch
命令来查看fetch的参数
Fetch主参数表参考
参数 | 描述 |
---|---|
src | 指定远程主机的单个文件路径(不可指定文件夹) |
dest | 指定存放的主机目录,格式为本地指定目录/主机名/远程的路径 |
获取远程单个日志文件
从远程主机上获取/var/log/messages
文件保存到本地/data
目录下
# 创建/data目录
mkdir /data
# 收集message文件
ansible all -m fetch -a 'src=/var/log/messages dest=/data'
查看收集情况
# tree /data
/data
├── 10.211.55.5
│ └── var
│ └── log
│ └── messages
└── 10.211.55.6
└── var
└── log
└── messages
获取多个日志文件
由于该模块只可以获取传输单个文件,所以我需要先将日志文件进行打包然后再进行传入到本地
# 打包/var/log/*.log 所有的日志文件
ansible all -m shell -a 'tar Jcf log.tar.xz /var/log/*.log'
# 获取该文件
ansible all -m fetch -a 'src=/root/log.tar.xz dest=/data'
# 查看文件
tree /data
/data
├── 10.211.55.5
│ ├── root
│ │ └── log.tar.xz
│ └── var
│ └── log
│ └── messages
└── 10.211.55.6
├── root
│ └── log.tar.xz
└── var
└── log
└── messages
# 查看包中日志
tar tvf /data/10.211.55.5/root/log.tar.xz
File模块
在服务器端对文件,软硬连接与文件夹进行增删改的文件操作。
参数列表
参数 | 描述 |
---|---|
path | 要管理的文件路径 (强制添加) |
recurse | 递归,文件夹要用递归 |
src | 创建硬链接,软链接时,指定源目标,配合state=link state=hard 设置软链接,硬链接 |
mode | 文件权限设置 |
owner | 设置目录拥有者 |
state | 这里的状态表示操作状态,值有如下几个:absent 表示删除操作 directory 表示创建一个文件夹touch 表示创建一个文件 link 创建一个软连接 |
更多请参考ansible-doc -s file
示例
# 创建文件夹
ansible all -m file -a 'path=/data state=directory'
# 创建文件
ansible all -m file -a 'path=/data/test.txt state=touch'
# 设置目录拥有者,与文件权限设置为755
ansible all -m file -a 'path=/data/test.sh owner=testuser mode=755'
# 创建源文件`/data/test.txt`的`/root/test.txt`软连接
ansible all -m file -a 'src=/data/test.txt dest=/root/test.txt state=link'
Hostname模块
可以修改主机或一个组主机的hostname
参数
参数 | 描述 |
---|---|
name | (必要)需要修改成什么样的主机名 |
use | 更新主机名的策略 |
示例
# 修改IP 10.211.55.5 的主机名
ansible 10.211.55.5 -m hostname -a 'name=app.node1.com'
# 修改组webserver下的所有主机名
ansible webserver -m hostname -a 'name=app.webserver.com'
Cron模块
计划时间任务模块,比如定时干某件事情
参数列表
参数 | 描述 |
---|---|
cron_file | 如果指定,则使用此文件而不是单个用户的crontab。如果这是一个相对路径,那么它将根据/etc/cron.d 进行解释。如果是绝对值,则通常为/etc/crontab 。许多linux发行版期望(有些发行版要求)文件名部分仅由大小写字母、数字、下划线和连字符组成。要使用cron_file 参数,还必须指定user 。 |
hour | 作业应运行的小时(0-23 ,* ,*/2 ,等等)。 |
minute | 作业应运行的分钟 (0-59 , * , */2 ,等等). |
month | 作业应运行的月份 (1-12 , * , */2 , 等等). |
weekday | 作业应运行的星期几 (0-6 星期天到星期六, * , 等等). |
name | 作业名称 |
state | 表示是否确保作业或环境变量存在或不存在。(可以做删除操作) |
job | 执行的命令 |
disabled | 启动(no)或关闭(yes) 作业任务 |
示例
# 每分钟执行 FBI warning
ansible webserver -m cron -a 'minute=* job="/usr/bin/wall FBI warning" name=fbijg'
# 关闭该任务
ansible webserver -m cron -a 'disabled=yes job="/usr/bin/wall FBI warning" name=fbijg'
# 删除该任务
ansible webserver -m cron -a 'state=absent job="/usr/bin/wall FBI warning" name=fbijg'
# 可以在客户端中 crontab -e 查看任务列表
Yum管理包模块
使用yum
包管理器安装、升级、降级、删除和列出包和组。
参数列表
参数 | 描述 |
---|---|
name | 包名称 |
state | present 为安装,absent 为删除 |
list | 查看应用列表与yum list 相似,值如下:installed 表示以及安装的列表。updates 需要更新的应用列表。还有 available 与 repos . |
disable_gpg_check | yes进行gpg检查 |
update_cache | yes进行更新缓存(需要指定某个包的name) |
更多说明请参考:ansible-doc -s yum
安装tree包
# 安装tree应用,还可以通过,号的形式安装多个
ansible all -m yum -a 'name=tree'
# 查看以及安装应用
ansible all -m yum -a 'list=installed'
# 卸载应用
ansible all -m yum -a 'name=tree state=absent'
安装本地包
# 运用copy模块将文件分发出去
ansible all -m copy -a 'src=/data/xxx.rpm dest=/root/'
# 安装该程序
ansible all -m yum -a 'name=/root/xxx.rpm'
Service服务管理模块
控制远程主机上的服务。支持的init系统包括BSD init、OpenRC、SysV、Solaris SMF、systemd和upstart。
参数列表
参数 | 描述 |
---|---|
name | 指定服务的名称 |
enabled | 服务是(yes)否(no)应在开机时启动。 |
state | 该状态包括对服务对操作方式。stopped 表示停止服务。started 表示开启服务。reloaded 表示重新加载该服务。restarted 表示重新启动服务 |
更多参考ansible-doc -s service
示范
# 启动阿帕奇,并设置自启动
ansible all -m service -a 'name=httpd state=started enabled=yes'
# 关闭
ansible all -m service -a 'name=httpd state=stopped'
User用户模块
管理用户帐户和用户属性。
参数列表
参数 | 描述 |
---|---|
home | 指定家目录路径 |
system | 指定系统账号 |
group | 指定组 |
remove | 清除账户 |
shell | 指定shell类型 |
home | 工作目录 |
uid | 进程账号 |
comment | 描述 |
示例
# 创建一个nginx的用户,shell类型为`/sbin/nologin`,并设置为系统账号,设置家目录为`/var/nginx`,分配到root与bin组目录下,uid进程号为80
ansible all -m user -a 'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"'
# 查看用户账号
ansible all -a 'getent passwd nginx'
# 删除nginx并删除
ansible all -m user -a 'name=nginx state=absent remove=yes'
Group用户组模块
管理用户组。
参数列表
参数 | 描述 |
---|---|
name | 组名称。 |
system | 是否为系统组。 |
gid | 指定gid为多少 |
示例
# 创建一个nginx组且为系统组,gid为80
ansible all -m group -a 'name=nginx system=yes gid=80'
# 删除该组
ansible all -m group -a 'name=nginx state=absent'
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
665
粉丝
44
评论
93
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术