Ansible 常见企业级应用模块实战| 学习笔记

简介: 快速学习 Ansible 常见企业级应用模块实战

开发者学堂课程【自动化运维工具 Ansible 实战Ansible 常见企业级应用模块实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/577/detail/7976


Ansible 常见企业级应用模块实战


内容介绍

一、Ansible 常用模块

二、总结

一、Ansible 常用模块

1Fetch:

从客户端取文件至服务器端,copy 相反,把文件从被控端抓取到服务器端。但目录需要先 tar,需注意。

ansible’srv-m fetch-a‘src=/root/a. sh dest=/data/scripts'

看模块说明:

[root@ansible ~]# ansible -doc-s fetch

- nameFetches a file from remote nodes

fetch:

dest:

#(required)A directory to save the file into. For example, if the'dest'directory is

/backup'a'src'file named'/etc/profile'on host

'host. example. com' would be saved into

/backup/host, example, com/etc/profile'

fail _ on _ missing:

#when“set to'yes' ,the task will fail if the remote file cannot be read for any reason. Prior

to Ansible-2.5, setting this would only fail if the source file

was missing. The default was changed to“yes”in Ansible-2.5.

flat:

#Allows you”to override the default behavior of appending hostname/path/to/file to the

destination . If dest ends with '/' , it will use the basename

of the source file, similar to the copy module. obviously this

is only hardy if the filenames are unique.

src:

#(required) The file on the remote system to fetch. This'must'be a file, not a directory.

Recursive fetching may be supported in a later release.

validate _ checksum:

#Verify that the source and  destination  checksums match after the files are fetched.

从模块说明(ansible -doc-s fetch)上看出,这个文件在远程主机的系统上,必须是一个文件,不能是目录,所以现在这个模块,它的功能只能复制远程的单个文件,他不能不能录入,源的的文件在客户端的远程节点上,那目标目标是一个目录。

要把当前你要抓取的文件指定到一个目录里面,也就是说可以把远程的一个文件抓取到机的某个目录里面以清单就是主机清单名字为文件夹的下面的子目录里面。

示例如下:

[root@ansible ~]#ansible   all -m fetch -a 'src=/var/log/messages dest=/data'

[root@ansible ~]#tree /data

/data

├── 192.168.30.101

└── var

└── log

└── messages

├── 192.168.30.102

└── var

└── log

└── messages

├── 192.168.30.103

└── var

└── log

└── messages

9 directories, 3 files

此时只抓了单个文件,若要抓取多个主机上的文件时需要打包,

[root@ansible-]# ansibleall -m shell-a 'tar Jcf log.tar xz/var/log/*. log'

打包好后在抓取。

目前已有打包模块 archive 解包模块 unarchive。可自看详细介绍。


2File:设置文件属性

ansible srv-m file-a"path=/root/a. sh owner=wang mode=755“

ansible web-m file-a'src=/app/testfile dest=/app/testfile-link state=link'

说明:

[root@ansible ~]# ansible -doc-s file一一一一一一一一一

看到详细介绍,它可以设置文件属性,可以根据 state 不同的值来创建子目录、空文件、软链接等等。

[root@ansible ~]#ansible all -m file  -a'name=/data/f3 state=touch'来创建空文件。

[root@ansible ~]# ansible -a ‘ls-l /data’验证下是否成功

[root@ansible ~]# ansible all -m file  -a'name =/data/ f3 state=absent'删除空文件

[root@ansible ~]#ansible all -m file -a'name =/data/dir1 state=directory'建文件夹

[root@ansible ~]#ansible all -m file -a'name =/data/dir1 state= absent ' 删除文件夹

[root@ansible ~]# ansible all -m file -a'src =/etc /fstab dest=/data fstab.linkstate=link'建软链接

[root@ansible ~]# ansible all -m file -a' dest=/data/ fstab.link state= absent ' 删除软链接

创建空文件

ansible all -m file  -a'name=/data/f3 state=touch'

删除空文件

ansible all -m file  -a'name =/data/ f3 state=absent'

建立文件夹

ansible all -m file -a'name =/data/dir1 state=directory'

创建软链接

ansible all -m file -a'src =/etc /fstab dest=/data fstab.link state=link'


3Hostname:管理主机名

此为更改单一一个主机的主机名,可能会出现重复,所以若要改许多主机,后期会学习其他方法。

ansiblenode1 -m hostname-a"name=websrv"

输入:

[root@ansible ~]# ansible 192.168.30.101 -m hostname -a'name=node1'

改其他:

[root@ansible ~]# ansible 192.168.30.103 -m hostname -a'name=node3'就更改完成了


4Cron:计划任务

若每周1、3、5的每分钟执行一下广播:

[root@ansible ~]#ansible all -m cron -a ‘minute=*weekday=1,2.5 job=”/usr/bin/wall FBI warning”name=warningcron’

此时就实现了各个主机的报警。

[root@ansible ~]#ansible all -m cron -a’disabled=true job="/usr/bin/wall Fēi warning"name=warning’禁用任务

[root@ansible ~]#ansible all -m cron -a’disabled=false job="/usr/bin/wall FBI warning"name=warning’重启任务

[root@ansible ~]#ansible all -m cron -a ‘job="/usr/bin/wall FBI warning"name=warningcronstate=absent’删除任务

它支持的有:minute,hour,day,month,weekday

ansible srv-mcron-a“minute=*/5job='/usr/shin/ntpdate 172. 16.0.1&>/dev/null'name=Synctime” 创建任务

ansiblesrν-m cron-a"state=absent name=Synctime'删除任务


5Yum:管理包

ansible srv -m yum-a'name= httpd state =latest'安装

ansible srv -m yum-a'name= httpd state =absent'删除

它可以安装、升级、降级、删除、列出包组。

示例:

[root@ansible ~]#ansible all -m yum -a 'name=vsftpd'

注意安装 Yum 需要 Yum 库,在安装 ansible 时可配置上。

[root@ansible~]# ansible all -m yum -a' list=installed’

可以查看所有装的包

[root@ansible ~]#ansible all -m yum -a 'name=vsftpd state=removed'卸载包。

当然也可以装不在 Yum 里的 r 名包,从互联网上下载的包放入当前目录下,然后把文件 copy 到其他主机上,再用 Yum 安装。Yum 也可以实现更新缓存(update-cache),更新是需要指定包的


6Service:管理服务

ansible srv -m service-a'name= httpd state -stopped'

ansible srv -m service-a'name= httpd state =started"

ansible srv -m service-a'name= httpd state =reloaded'

ansible srv -m service-a'name= http dstate =restarted"

说明:

[root@ansible~]#ansible-doc-sservice

name:Manage services

service

arguments:

#Additional  arguments provided on the command line

enabled:

#Whether the service should start on boot.“At least one of state and enabled are required.”

name:

#(required) Name of the service.

pattern:

#If the service does not respond to the status command, name a substring to look for as would be found in the output of the’ps'command as a stand-in for a

status result. If the string is found, the service will be

assumed to be running.

runlevel:

#For openRC init scripts(ex:Gentoo) only. The runleyel that this service belongs to.

sleep:

#If the service is being"restarted"then sleep this many seconds between the stop and start command. This helps to  workaround badly behaving init scripts

that exit  immediately  after signaling a process"to stop.

state:

#started'/stopped are  idempotent  actions that will not run commands unless necessary.

‘restarted'will always bounce the service,'reloaded'will

always reload.*At least one of state and enabled are

required*Note that reloaded will start the service if it is

not already started, even if your chosen init system wouldn't normally,use:

#The service module actually uses system specific modules, normally through auto detection. this setting can force a specific module, Normally it uses the value of the'ansible _ service _ mgr'fact and falls'back to the old'service'module when none matching is found.

看到有开机启动服务等各种功能。

[root@ansible~]#ansible websrvs -m service-a'name=vsftpd state=started enabled=yes’

来实现开机启动服务

[root@ansible~]#ansible websrvs -m service-a'name=vsftpd state=restarted’

来实现重启


7User;管理用户

用来创建用户管理用户用:ansible-doc -s user 来查看详细,用户的属性这都能看到,如注释、是否创建家目录、过期时间,包括的组,而且组还有两个不一样的,一个主组一个附加组,而且这个是用户的家目录,包括他的 name 用户名,还可以设置用户的加密口令,而在特定的环境中必须是明文的。

还有删除,当用户 state 相当于用户把家目录删了,还可以指定系统账号等等。

ansiblesry —m user—a'name= user1comment =“test user”wid=2048 home=/app/ user1group =root'

ansible srv -m user-a'name=sysuser1system=yes home=/app/sysuser1"[root@ansible~]#ansible websrvs-m user-a'name= nginx shell =/sbin/nologin system =yes home =/var/nginx groups=root,bin uid=80 comment=nginx service”'

创建 nginx 账号

[root@ansible~]#ansible websrvs-m user-a'name= nginxe  state=absent remove=yes'

删除用户及家目录等数据


8Group:管理组

ansible srv-m group-a"name=testgroup system=yes“

ansible srv-m group-a"name=testgroup state=absent"

管理组的选项不多

[root@ansible~]#ansible websrvs-m user-a'name= nginx system =yes gid=80'

创建 nginx

[root@ansible~]#ansible websrvs-m user-a'name= nginx system =absent

删除 nginx

 

二、总结

现已学习模块有:pingcommandshellscriptcopyfetchfilehostnamecronyumserviceusergroup,若不熟悉模块使用方法,可用帮助来查看(ansible +模块名)使用方法。

相关文章
|
25天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
20天前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
22天前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
28 5
|
23天前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
26 1
|
28天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
52 4
|
26天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
35 2
|
2月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
29天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
9天前
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
|
7天前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。