首页 > 其他分享 >Ansible ad-hoc模式及常用模块

Ansible ad-hoc模式及常用模块

时间:2022-11-18 12:22:31浏览次数:42  
标签:ad 管理 主机 ansible Ansible 参数 模块 软件包 hoc

Ansible ad hoc模式

基本语法:ansible {主机名/主机地址/主机组} [-m 模块名] [-a 模块参数]
-m 模块名
指定使用的模块名称
-a 模块参数列表
指定模块执行操作时的参数,参数列表须使用单引号或双引号包围
命令执行时,ansible将通过查找主机清单文件,获得被管理主机信息

1 ping模块:用于测试控制节点和被管理主机的连通性
ansible {主机名/主机地址/主机组} -m ping

eg:

ansible group1 -m ping 
 #测试与group1的主机是否连通

模块返回值
SUCCESS/CHANGED(黄色和绿色):模块执行成功;
FAILED(红色):模块执行失败;
UNREACHABLE(红色):无法与被管理主机建立连接
WARNING(紫色):一般由主机清单文件中的错误导致

2 command模块:帮助我们在被管理主机执行命令(command 模块不支持重定向、管道的使用 )
ansible {主机名/主机地址/主机组} -m command -a “执行的命令”

eg:

ansible group1 -m command -a "date"   
#执行显示被管理主机的当前时间命令

模块返回值
rc(命令返回码):表明被管理主机对命令的执行情况
rc = 0:命令执行成功
rc > 0:命令执行失败
注:command模块是ansible默认模块,因此-m command可以省略

3 shell模块:与command模块类似,shell模块可以帮助我们在远程主机上执行命令(shell模块支持管道与重定向)
ansible {主机名/主机地址/主机组} -m shell -a “执行的命令”

eg:

ansible group1 -m command -a "echo 'hello' > /tmp/a.txt" 
#在被管理主机执行输出hello到/tmp/a.txt

command和shell模块的选择:
优先选择command模块,如果命令中需要使用管道、重定向等操作,使用shell模块

4 script模块:script模块用于在被管理主机上执行控制节点上的脚本
ansible {主机名/主机地址/主机组} -m script -a “脚本执行命令”
eg:

ansible group1 -m script -a "/root/test.py"  
#在被管理主机上执行test.py脚本

5 copy模块:copy模块将控制节点的文件或文件夹复制到被管理主机
ansible {主机名/主机地址/主机组} -m copy -a “模块参数”
eg:

ansible group1  -m copy -a "src=test.conf dest=/root  mode=644 owner=root"
#复制文件——将控制节点当前目录下的test.conf文件,复制到被管理主机的/root目录下,并将权限设置为644,属主设置为root

模块常用参数
dest(必选参数):复制的目的路径(被管理主机上的绝对路径)
src (必选参数):被复制对象(文件、文件夹)在控制节点上的路径
mode :设置被复制对象在被管理主机上的权限(设置方法与Linux chmod命令类似)
owner:设置被复制对象在被管理主机上的属主
注:src参数的路径结尾没有“/”——表明将整个目录复制到被管理主机
src参数的路径以“/”结尾——表明只将目录下的内容复制到被管理主机

模块返回值
dest:最终产生的文件在被管理主机上的绝对路径
mode:最终 产生的文件、文件夹在被管理主机上的权限设置
owner:最终产生的文件、文件夹在被管理主机上的属主
size:文件大小
msg:模块执行错误的原因
不支持的模块参数——参数拼写错误
Unsupported parameters for (copy) module: ownerr --表明copy模块没有ownerr参数
Supported parameters include--示支持的参数有哪些

6 fetch模块:用于收集被管理主机上的文件
ansible {主机名/主机地址/主机组} -m fetch -a “模块参数”
eg:

ansible group1 -m fetch -a "src=/etc/hostname dest=/root/hostname"
#收集被管理主机的/etc/hostname文件,并存放在控制节点的/root/hostname目录下

模块常用参数
src(必选参数):所收集文件在被管理主机上的绝对路径
dest(必须参数):所收集文件在控制节点上的存放目录

模块返回值
dest:所收集文件的存放路径

7 file模块:用于对被管理主机上的文件/文件夹操作,如创建、删除文件/文件夹,设置权限等
ansible {主机名/主机地址/主机组} -m file -a “模块参数”
eg:

ansible group1 -m file -a "path=/root/test/test.py state=touch mode=744"
#在被管理主机上创建文件,并设置权限

模块常用参数
path(必须参数):被操作对象(文件、文件夹)在被管理主机上的绝对路径
mode:设置被操作对象的权限(设置方法与Linux chmod命令类似)
owner :设置被操作对象的属主
state:指定操作类型
directory:表明是对文件夹进行操作,如果path参数指定的文件夹不存在,则创建该文件夹(包括路径上的中间文件夹)
touch:表明是对文件进行操作,如果path参数指定的文件不存在,则创建该文件,如果存在,则更新该文件的最近访问时间
absent:删除文件/文件夹

8 dnf模块:使用dnf包管理器来管理软件包(安装、升级、删除、列表显示)
ansible {主机名/主机地址/主机组} -m dnf -a “模块参数”

eg:

ansible group1 -m dnf -a "name=vsftpd state=present"
#在被管理主机安装vsftpd安装包

模块常用参数
name:软件包的名字/rpm文件的url地址/rpm文件在被管理主机的本地路径
state:决定了对软件包的操作
present:安装软件包/rpm文件
latest:如果该软件包没安装,则安装软件包最新版本,如果该软件包已安装,则将软件包升级为最新版本
absent:卸载软件包
autoremove:在软件包卸载时,是否自动卸载该软件包的依赖包
no(默认):不卸载
yes:卸载
list:列表显示软件包信息(所属软件仓库、版本、是否已安装等)
list=软件包名

模块返回值
results:操作(安装、删除、列表显示)的软件包的信息

9 service模块:用于管理被管理主机上的服务
ansible {主机名/主机地址/主机组} -m service -a “模块参数”

eg:

ansible group1 -m service -a "name=vftpd state=started enabled=yes"
#在被管理主机上启动vsftpd服务,并设置为开机自启

模块常用参数
name(必选参数):服务名称
enabled:是否开机启动
yes
no
state:对服务的操作
reloaded:重新加载服务
started:启动服务
stopped:停止服务
restarted:重新启动服务

10 firewalld模块:用于为被管理主机上的某服务、端口添加firewalld规则
ansible {主机名/主机地址/主机组} -m firewalld -a “模块参数”

eg1:

ansible group1 -m  firewalld -a "port=8080/tcp state=enabled immediate=yes"
#允许对被管理主机的tcp 8080端口连接

eg2:

ansible group1 -m  firewalld -a "service=httpd state=enabled immediate=yes permanent=yes"
#允许对被管理主机的http服务的连接

模块常用参数:
service:被管理的服务名称
port:被管理的端口号
state:
enabled:接受对服务/端口的连接
disabled:拒绝对服务/端口的连接
permanent:
yes:被管理主机重启时,该配置不丢失
no:被管理主机重启时,该配置将丢失
immediate: 配置是否立即生效
yes
no(默认)

11 setup模块:用于获取被管理主机信息(软、硬件信息)
ansible {主机名/主机地址/主机组} -m setup -a “模块参数”

eg:

ansible -m setup -a "filter=ansible_distribution*"
#查看所有以ansible_distribution开头的键的值

模块常用参数
filter:对收集的信息进行过滤,只显示通过过滤的信息
filter=针对键的过滤条件

总结:
既然可以通过shell模块、command模块进行被管理主机的软件包管理、服务管理、防火墙管理等等操作——为什么需要那么多其它的ansible模块?
幂等性:针对同一被管理主机,重复执行同一模块的操作,并不会产生什么副作用,而且便于运维,不需要对各种异常情况进行过多考虑
shell模块、command模块不具备幂等性
绝大多数的ansible模块,具有幂等性

标签:ad,管理,主机,ansible,Ansible,参数,模块,软件包,hoc
From: https://www.cnblogs.com/tjane/p/16902795.html

相关文章

  • iptables学习:MASQUERADE
    MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。在iptables中有着和SNAT相近的效果,但也有一些区别,但使用SNAT的时候,出口ip的地址范围可以是一个,也可以是多......
  • 【HMS Core】使用图形引擎服务点击一次会多次触发RenderView的方法addOnTouchEventLis
    ​问题描述使用图形引擎服务点击一次会多次触发RenderView的方法addOnTouchEventListener 解决方案addOnTouchEventListener会有MotionEvent.ACTION_DOWN、MotionEven......
  • PAT (Advanced Level) Practice——Social Clusters
    ​​题目​​​这是昨天的博客。(拆东墙补西墙。。)今天的博客将会在明天凌晨一点打完比赛后发。昨天在帮我的一位同学看题,所以就顺便谈谈这道题。这道题的解题思路还是很......
  • 自定义django admin Action
    https://blog.csdn.net/anbuqi/article/details/100810993 自定义djangoadminAction 文章目录自定义djangoadminAction简介Adminactions简介编写Admin......
  • stmp 501 5.1.3 Invalid Address 无效的邮件地址
    stmp5015.1.3InvalidAddress无效的邮件地址一般来说就是要确认邮箱地址是不是对的还有一种可能的情况是使用的邮件服务器仅支持对内邮件,没有对外邮件的发送权限......
  • Ansible安装和基本使用
    一、安装ansible1、dnf安装ansible首先得安装EPEL源,然后才能安装ansible。EPEL是一个软件仓库项目,为RHEL和Centos提供软件包信息dnf-yinstallepel-releasednf-yin......
  • Thread
    Thread自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程packagecom.deng.demo01;//创建线程方式一:继承Thread类,重写ru......
  • README
    山海个人笔记note所爱隔山海山海亦可平你只管做剩下的交给时间更新记录2022.10.1914:10tf-idf实现sanic服务框架实践pet-prompt解读kpt-prompt解读2022.1......
  • 线程--thread
    线程:线程是系统分配给内核的最小单元,线程是进程的一部分。特点:1.一个进程可以包含多个线程2.线程也是一个运行行为,消耗计算机资源3.一个进程中的所有线程共享这个进程......
  • 不惧寒冬:20岁女孩创办400亿美元平台,正在击败Adobe、挑战微软
    不惧寒冬:20岁女孩创办400亿美元平台,正在击败Adobe、挑战微软投递人 itwriter 发布于2022-11-1614:56 评论(0) 有1311人阅读 原文链接 [收藏] « »最近......