自动化运维工具--Ansible常用模块

注意:-a 参数后的命令用单引号;双引号有可能会出问题,特别是在user模块

模块一:测试目标主机是否在线,ping模块

主机如果在线,则回复Pong

[[email protected] ~]# ansible web -m ping
192.168.30.36 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.30.32 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

模块二:command模块和shell模块

用于在各被管理主机节点运行指定的命令

shell与command的区别:command模块是执行ansible自带模块执行,如果要用> < | & ‘ ‘等管道,需要使用shell模块

[[email protected] tmp]# ansible web -m command -a ‘uptime‘
192.168.30.32 | SUCCESS | rc=0 >>
 21:10:43 up 138 days,  1:34,  1 user,  load average: 0.00, 0.01, 0.05
192.168.30.36 | SUCCESS | rc=0 >>
 21:08:30 up 95 days,  3:02,  4 users,  load average: 0.00, 0.00, 0.00

shell模块:

[[email protected] tmp]# ansible web -m shell -a ‘cat /etc/fstab | grep ^UUID‘
192.168.30.36 | SUCCESS | rc=0 >>
UUID=28b3513d-9e6f-42a8-ade0-7700573fed2a /boot                   ext4    defaults        1 2
192.168.30.32 | SUCCESS | rc=0 >>
UUID=de2e369a-c0e8-4188-89e0-db1f4aded764 /boot                   xfs     defaults        0 0

相关选项如下:

creates:一个文件名,当文件名存在,则该命令不执行
chdir:在执行指令之前,先切换到该目录
free_from:要执行的Linux指令
removes:一个文件名,当文件名不存在,则该命令不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径

参考:<https://docs.ansible.com/ansible/latest/modules/shell_module.html>

模块三:远程复制备份--copy模块

[[email protected] tmp]# ansible web -m copy -a ‘src=/etc/hosts dest=/tmp/hosts‘

相关选项:

backup:在覆盖前,将源文件备份,备份文件包含时间信息,有俩选项:yes|no
content:用于替代”src”,可以直接设定指定文件的值
dest:必选项,要将源文件复制到远程主机的绝对路径,如果源文件是一个目录,那么该路径必须是个目录
directory_mode:递归设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,他将递归复制。这种情况路径使用”/”来结尾,则只复制目录里的内容,如果没有使用“/”,则包含目录在内的全部内容复制,类似与rsync。
owner:指定属主
group:指定属组
mode:指定权限,可以以数字指定比如0644

参考:<https://docs.ansible.com/ansible/latest/modules/copy_module.html>

模块四:对远程文件管理--file模块

修改文件权限:
[[email protected] ~]# ansible web -m file -a ‘path=/srv/a.txt mode=600 owner=snow group=snow‘
创建一个文件:
[[email protected] ~]# ansible web -m file -a ‘dest=/srv/a.txt state=touch‘
创建一个目录文件:
[[email protected] ~]# ansible web -m file -a ‘path=/srv/haha mode=600 state=directory‘
创建一个软链接:
[[email protected] ~]# ansible web -m file -a ‘dest=/srv/a.lnk src=/srv/a.txt state=link‘
删除文件:
[[email protected] ~]# ansible web -m file -a ‘path=/srv/a.lnk state=absent‘

相关选项:

force:需要在两种情况下强制创建软链接,一种源文件不存在,但之后会建立的情况;另一种是目标软链接存在,需要先取消之前的链接,再创建新链接,有两个选项:yes|no
path:必选项,定义文件/目录的路径(alias:dest,name)
recurse:递归设置文件的属性,只对目录有效
src:被链接的源文件路径,只能用于state=link情况
dest:目标文件路径,只能用于state-link情况
state:
        directory:如果目录文件不存在,就创建目录文件
        *file:即使文件不存在也会被创建
        link:创建软链接
        hard:创建硬链接
        touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
        absent:删除目录、文件或者取消链接文件

参考:<https://docs.ansible.com/ansible/latest/modules/file_module.html>

fetch模块: 从远程服务器拉取文件至本机,只能fetch文件,不能fetch目录,如果拉目录,先tar/zip 再拉到本机即可。

使用参考:<https://docs.ansible.com/ansible/latest/modules/fetch_module.html>

模块五:程序包管理工具--yum模块

安装程序包(可接版本号):
[[email protected] ~]# ansible web -m yum -a ‘name=httpd state=present‘
安装最新程序包:
[[email protected] ~]# ansible web -m yum -a ‘name=httpd state=latest‘
卸载程序包:
[[email protected] ~]# ansible web -m yum -a ‘name=httpd state=absent‘

相关选项:

conf_file            #设定远程yum安装时所依赖的配置文件。如配置文件没有在默认的位置。
disable_gpg_check    #是否禁止GPG checking,只用于`present‘ or `latest‘。
disablerepo          #临时禁止使用yum库。 只用于安装或更新时。
enablerepo           #临时使用的yum库。只用于安装或更新时。
name=                #所安装的包的名称
state=               #present安装, latest安装最新的, absent 卸载软件。
update_cache         #强制更新yum的缓存

参考:<https://docs.ansible.com/ansible/latest/modules/yum_module.html>

注意:此模块只能在Python2上使用,在Python3上需要使用dnf模块用于包管理

使用参考:<https://docs.ansible.com/ansible/latest/modules/dnf_module.html>

模块六:服务程序管理--Service模块

启动服务:
[[email protected] ~]# ansible web -m service -a ‘name=httpd state=started‘
开机启动服务:
[[email protected] ~]# ansible web -m service -a ‘name=httpd enabled=yes‘

相关选项:

arguments         #命令行提供额外的参数
enabled           #设置开机启动。
name=             #服务名称
runlevel          #开机启动的级别,一般不用指定。
sleep             #在重启服务的过程中,是否等待。如在服务关闭以后等待2秒再启动。
state     #started启动服务, stopped停止服务, restarted重启服务, reloaded重载配置

参考:<https://docs.ansible.com/ansible/latest/modules/service_module.html>

模块七:管理计划任务--cron模块

[[email protected] ~]# ansible web -m cron -a ‘name="sync time" minute=*/10 job="/usr/sbin/ntpdate ntp.aliyun.com"‘

相关选项:

backup=        # 如果设置,创建一个crontab备份
cron_file=     #如果指定, 使用这个文件cron.d,而不是单个用户crontab
day=           # 日应该运行的工作( 1-31, *, */2, etc )
hour=          # 小时 ( 0-23, *, */2, etc )
job=           #指明运行的命令是什么
minute=        #分钟( 0-59, *, */2, etc )
month=         # 月( 1-12, *, */2, etc )
name=          #定时任务描述
reboot         # 任务在重启时运行,不建议使用,建议使用special_time
special_time   # 特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)
state          #指定状态,prsent表示添加定时任务,也是默认设置,absent表示删除定时任务
user           # 以哪个用户的身份执行
weekday        # 周 ( 0-6 for Sunday-Saturday, *, etc )

参考:<https://docs.ansible.com/ansible/latest/modules/cron_module.html>

模块八:远程主机执行本地脚本--script模块

[[email protected] ~]# ansible web -m script -a ‘/tmp/a.sh‘

相关选项:

creates:一个文件名,当文件名存在,则该命令不执行
chdir:在执行指令之前,先切换到该目录
free_from:要执行的Linux指令
removes:一个文件名,当文件名不存在,则该命令不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径
decrypt:使用Vault控制源文件的自动解码,选项yes|no

参考:<https://docs.ansible.com/ansible/latest/modules/script_module.html>

模块九:用户管理--User模块

创建加密密码:
[[email protected] ~]# echo 123456 | openssl passwd -1 -stdin
$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0
创建新用户:
[[email protected] ~]# ansible web -m user -a ‘name=wolf system=yes password=$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0 state=present‘
更新用户密码:
[[email protected] ~]# ansible web -m user -a ‘name=wolf update_password=always password=$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0‘
删除用户:
[[email protected] ~]# ansible web -m user -a ‘name=wolf remove=yes state=absent‘

相关选项:

comment    # 用户的描述信息
createhom  # 是否创建家目录,yes,默认项,即创建家目录;no,创建用户时不创建家目录.
force      # 在使用`state=absent‘是, 行为与`userdel --force‘一致.
group      # 指定基本组
groups     # 指定附加组,如果指定为(‘groups=‘)表示删除所有组
home       # 指定用户家目录
login_class     #可以设置用户的登录类 FreeBSD, OpenBSD and NetBSD系统.
move_home       # 如果设置为`home=‘时, 试图将用户主目录移动到指定的目录
name=           # 指定用户名
non_unique      # 该选项允许改变非唯一的用户ID值
password        # 指定用户密码,password参数需要接受md5加密后的值
remove          # yes:删除家目录,需要指定此参数;no:默认项,删除用户时默认不删除用户家目录.
shell           # 指定默认shell
state           #设置帐号状态,默认值为present表示创建,可不写,指定值为absent表示删除
system          # 当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户。
uid             #指定用户的uid
update_password # 更新用户密码,always:新密码和旧密码不同时进行修改,on_create:为新建用户指定密码
expires         #指明密码的过期时间

参考:<https://docs.ansible.com/ansible/latest/modules/user_module.html>

模块十:收集远程主机的信息--setup模块

收集可用的facts用于内建变量。每个主机的各种信息,cpu颗数、内存大小等。会存在facts中的某个变量中。调用后返回很多对应主机的信息,在后面的操作中可以根据不同的信息来做不同的操作。如redhat系列用yum安装,而debian系列用apt来安装软件

[[email protected] ~]# ansible web -m setup

参考:<https://docs.ansible.com/ansible/latest/modules/setup_module.html>

原文地址:https://www.cnblogs.com/walkman-sky/p/9458682.html

时间: 2024-10-09 23:13:29

自动化运维工具--Ansible常用模块的相关文章

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具ansible详细介绍以模块的使用

1.anisble 简介anisble 是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible只是提供一种框架.主要包括:(1)连接插件:负责和被监控端实现通信:(2)host inventory :指定操作的主机,是一个配置文件里面定义监控的主机(3)各种模块核心模块,command 模块,自定义模块.(4)借助于插件完成记录日志邮件等功能:(5)playboo

自动化运维工具--Ansible(安装部署、模块简介与操作)

一.Ansible概述 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式. 自动化运维工具划分为两类: 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet.func.zabbix等 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等. 自动化运维工具比较: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python

自动化运维工具ansible——安装及模块管理

ansible简介 ?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ?ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng