tnblog
首页
视频
资源
登录

Ansible 常见企业级应用实战

6513人阅读 2021/3/21 15:40 总访问:3768062 评论:0 收藏:1 手机
分类: Ansible

ansible

Ansible 常见企业级应用实战

Fetch模块


从客户端取文件至服务器端,与copy模块相反,我们可以通过ansible-doc -s fetch命令来查看fetch的参数

Fetch主参数表参考

参数 描述
src 指定远程主机的单个文件路径(不可指定文件夹)
dest 指定存放的主机目录,格式为本地指定目录/主机名/远程的路径

获取远程单个日志文件


从远程主机上获取/var/log/messages文件保存到本地/data目录下

  1. # 创建/data目录
  2. mkdir /data
  3. # 收集message文件
  4. ansible all -m fetch -a 'src=/var/log/messages dest=/data'


查看收集情况

  1. # tree /data
  2. /data
  3. ├── 10.211.55.5
  4. └── var
  5. └── log
  6. └── messages
  7. └── 10.211.55.6
  8. └── var
  9. └── log
  10. └── messages

获取多个日志文件


由于该模块只可以获取传输单个文件,所以我需要先将日志文件进行打包然后再进行传入到本地

  1. # 打包/var/log/*.log 所有的日志文件
  2. ansible all -m shell -a 'tar Jcf log.tar.xz /var/log/*.log'
  3. # 获取该文件
  4. ansible all -m fetch -a 'src=/root/log.tar.xz dest=/data'
  5. # 查看文件
  6. tree /data
  7. /data
  8. ├── 10.211.55.5
  9. ├── root
  10. └── log.tar.xz
  11. └── var
  12. └── log
  13. └── messages
  14. └── 10.211.55.6
  15. ├── root
  16. └── log.tar.xz
  17. └── var
  18. └── log
  19. └── messages
  20. # 查看包中日志
  21. 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

示例

  1. # 创建文件夹
  2. ansible all -m file -a 'path=/data state=directory'
  3. # 创建文件
  4. ansible all -m file -a 'path=/data/test.txt state=touch'
  5. # 设置目录拥有者,与文件权限设置为755
  6. ansible all -m file -a 'path=/data/test.sh owner=testuser mode=755'
  7. # 创建源文件`/data/test.txt`的`/root/test.txt`软连接
  8. ansible all -m file -a 'src=/data/test.txt dest=/root/test.txt state=link'

Hostname模块


可以修改主机或一个组主机的hostname

参数

参数 描述
name (必要)需要修改成什么样的主机名
use 更新主机名的策略

示例

  1. # 修改IP 10.211.55.5 的主机名
  2. ansible 10.211.55.5 -m hostname -a 'name=app.node1.com'
  3. # 修改组webserver下的所有主机名
  4. 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) 作业任务

示例

  1. # 每分钟执行 FBI warning
  2. ansible webserver -m cron -a 'minute=* job="/usr/bin/wall FBI warning" name=fbijg'
  3. # 关闭该任务
  4. ansible webserver -m cron -a 'disabled=yes job="/usr/bin/wall FBI warning" name=fbijg'
  5. # 删除该任务
  6. ansible webserver -m cron -a 'state=absent job="/usr/bin/wall FBI warning" name=fbijg'
  7. # 可以在客户端中 crontab -e 查看任务列表

Yum管理包模块


使用yum包管理器安装、升级、降级、删除和列出包和组。

参数列表

参数 描述
name 包名称
state present为安装,absent为删除
list 查看应用列表与yum list相似,值如下:
installed表示以及安装的列表。
updates 需要更新的应用列表。还有 availablerepos.
disable_gpg_check yes进行gpg检查
update_cache yes进行更新缓存(需要指定某个包的name)

更多说明请参考:ansible-doc -s yum

安装tree包

  1. # 安装tree应用,还可以通过,号的形式安装多个
  2. ansible all -m yum -a 'name=tree'
  3. # 查看以及安装应用
  4. ansible all -m yum -a 'list=installed'
  5. # 卸载应用
  6. ansible all -m yum -a 'name=tree state=absent'

安装本地包

  1. # 运用copy模块将文件分发出去
  2. ansible all -m copy -a 'src=/data/xxx.rpm dest=/root/'
  3. # 安装该程序
  4. 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

示范

  1. # 启动阿帕奇,并设置自启动
  2. ansible all -m service -a 'name=httpd state=started enabled=yes'
  3. # 关闭
  4. ansible all -m service -a 'name=httpd state=stopped'

User用户模块


管理用户帐户和用户属性。

参数列表

参数 描述
home 指定家目录路径
system 指定系统账号
group 指定组
remove 清除账户
shell 指定shell类型
home 工作目录
uid 进程账号
comment 描述

示例

  1. # 创建一个nginx的用户,shell类型为`/sbin/nologin`,并设置为系统账号,设置家目录为`/var/nginx`,分配到root与bin组目录下,uid进程号为80
  2. ansible all -m user -a 'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"'
  3. # 查看用户账号
  4. ansible all -a 'getent passwd nginx'
  5. # 删除nginx并删除
  6. ansible all -m user -a 'name=nginx state=absent remove=yes'

Group用户组模块


管理用户组。

参数列表

参数 描述
name 组名称。
system 是否为系统组。
gid 指定gid为多少

示例

  1. # 创建一个nginx组且为系统组,gid为80
  2. ansible all -m group -a 'name=nginx system=yes gid=80'
  3. # 删除该组
  4. ansible all -m group -a 'name=nginx state=absent'

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

如何升级到 Ansible 的最新版本

如何升级 Ansible 的版本[TOC] 访问 https://pypi.org/project/ansible/#files 找到 ansible-{版本}.tar.gz #下载到本...

如何解决 Ansible Galaxy SSL报错

如何解决 Ansible Galaxy SSL报错[TOC] 当我们下载插件的时候ansible-galaxy install geerlingguy.nginx,会报如下错误 ...

Ansible 安装与简介

Ansible 安装与简介[TOC] Ansible简介 Ansible是您安装在控制节点上的无代理自动化工具。Ansible从控制节点远程管理计算...

Ansible 使用和模块化深入解析

Ansible 使用和模块化深入解析[TOC] Ansible 主配置文件讲解 Ansible中的某些设置可以通过配置文件(ansible.cfg)进行调...

Ansible Playbook的用法

Ansible Playbook的用法[TOC] Ansible-galaxy它可以连接 https://galaxy.ansible.com 下载相应的roles 相关命令# 列出...

Ansible Playbook的用法(变量与template)

Ansible Playbook的用法(变量与template)[TOC] 使用变量变量名:仅能由字母、数字和下划线组成,且只能以字母开头。我们...

Ansible Role详解

Ansible Role详解[TOC] RolesRoles介绍ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据...
这一世以无限游戏为使命!
排名
2
文章
665
粉丝
44
评论
93
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术