初识ansible核心模块

news2024/12/24 3:35:19

目录

1、ansible模块

1.1   ansible常用模块

1.2   ansible-doc -l 列出当前anisble服务所支持的所有模块信息,按q退出

1.3  ansible-doc 模块名称 随机查看一个模块信息

2、运行临时命令

         2.1 ansible命令常用的语法格式

3、常用模块详解与配置实例

3.1命令与脚本类模块

3.1 .1  command模块

3.1.2  scripts模块-传输脚本到被管理端并执行脚本

3.2 文件与目录管理模块

3.2.1  file模块

实例1-创建/shcool目录

实例2-创建文件/shcool/test.txt

实例3-创建软连接/shcool/test.txt到/tmp/test.txt.soft​编辑

实例4-删除文件/目录、软连接

实例5-创建文件/tmp/test.txt ,所有者root,用户组root,权限为755

3.2.2  copy远程传输模块

实例1-传输/etc/hosts文件到/etc/hosts 

案例02-传输/etc/hosts⽂件到/etc/hosts-先备份然后修改

3.3服务管理模块

3.3.1 systemd

实例1-关闭firewalld

实例2-重启firewalld

3.4 软件包管理模块

3.4.1 yum源配置管理模块

实例1-批量增加nginx-yum源

3.4.2 yum模块

实例1-安装net-tools

3.4.3   get_url模块(wegt)

实例1-下载源码包到/packages目录下

3.5 系统管理模块

3.5.1 mount模块

3.5.2  cron模块

实例1-添加自动同步时间的定时任务

3.6   用户管理模块

3.6.1 user模块user

实例1-创建用户ami

3.5.2 group模块

实例1-创建用户kmi,gid为10088


官网:Ansible.Posix — Ansible Community Documentationicon-default.png?t=N7T8https://docs.ansible.com/ansible/latest/collections/ansible/posix/

1、ansible模块

Ansible服务实际上只是一个框架,能够完成工作的是模块化功能代码

1.1   ansible常用模块
模块名称模块作用
ping检查ansible与受控节点的连通性
yum 安装、更新及卸载软件
yum_repository管理主机的软件仓库配置文件。
template复制模板文件到受管节点主机。
copy新建、修改及复制文件。
user创建、修改及删除用户。
group创建、修改及删除用户组。
service启动、关闭及查看服务状态。
get_url从网络中下载文件。
file设置文件权限及创建快捷方式。
cron添加、修改及删除计划任务。
command直接执行用户指定的命令。
shell直接执行用户指定的命令(支持特殊字符)。
debug输出调试或报错信息。
mount挂载硬盘设备文件。
filesystem格式化硬盘设备文件。
lineinfile通过正则表达式修改文件内容。
setup收集受管节点主机上的系统及变量信息。
firewalld添加、修改及删除防火墙策略。
lvg管理主机的物理卷及卷组设备。
lvol

管理主机的逻辑卷设备。

1.2   ansible-doc -l 列出当前anisble服务所支持的所有模块信息,按q退出

如果要实现某个功能,但是不知道用什么模块,或者知道模块名称但是不清楚模块使用,可以使用ansible-doc命令查找。1.3  

1.3  ansible-doc 模块名称 随机查看一个模块信息

会在屏幕上显示出这个模块的作用、可用参数及实例

[root@localhost ~]# ansible-doc ping
> PING    (/usr/lib/python2.7/site-packages/ansible/modules/syste

        A trivial test module, this module always returns `pong' 
        successful contact. It does not make sense in playbooks, 
        it is useful from `/usr/bin/ansible' to verify the abilit
        login and that a usable Python is configured. This is NOT
        ping, this is just a trivial test module that requires Py
        on the remote-node. For Windows targets, use the [win_pin
        module instead. For Network targets, use the [net_ping] m
        instead.

  * This module is maintained by The Ansible Core Team
OPTIONS (= is mandatory):

- data
        Data to return for the `ping' return value.
        If this parameter is set to `crash', the module will caus
        exception.
        [Default: pong]
        type: str


SEE ALSO:
      * Module net_ping
           The official documentation on the net_ping module.
           https://docs.ansible.com/ansible/2.9/modules/net_ping
        _module.html
      * Module win_ping
           The official documentation on the win_ping module.
           https://docs.ansible.com/ansible/2.9/modules/win_ping
        _module.html


AUTHOR: Ansible Core Team, Michael DeHaan
:

> PING    (/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py)

        A trivial test module, this module always returns `pong' on
        successful contact. It does not make sense in playbooks, but
        it is useful from `/usr/bin/ansible' to verify the ability to
        login and that a usable Python is configured. This is NOT ICMP
        ping, this is just a trivial test module that requires Python
        on the remote-node. For Windows targets, use the [win_ping]
        module instead. For Network targets, use the [net_ping] module
        instead.

  * This module is maintained by The Ansible Core Team
OPTIONS (= is mandatory):

- data
        Data to return for the `ping' return value.
        If this parameter is set to `crash', the module will cause an
        exception.
        [Default: pong]
        type: str


SEE ALSO:
      * Module net_ping
           The official documentation on the net_ping module.
           https://docs.ansible.com/ansible/2.9/modules/net_ping
        _module.html
      * Module win_ping
           The official documentation on the win_ping module.
           https://docs.ansible.com/ansible/2.9/modules/win_ping
        _module.html


AUTHOR: Ansible Core Team, Michael DeHaan
        METADATA:
          status:
          - stableinterface
          supported_by: core
        

EXAMPLES:

# Test we can logon to 'webservers' and execute python with json lib.
# ansible webservers -m ping

# Example from an Ansible Playbook
- ping:

# Induce an exception to see what happens
- ping:
    data: crash


RETURN VALUES:

ping:
    description: value provided with the data parameter
    returned: success
    type: str
    sample: pong

(END)

2、运行临时命令

在ansible服务中,ansible是用于执行临时任务的命令,执行后结束(与基本文件的可重复执行不同)。在使用ansible命令时,必须指明受管主机信息。

2.1 ansible命令常用的语法格式

ansible受管主机节点 -m模块名称[-a模块参数]

其中,-a是要传递给模块的参数,只有功能极其简单的模块才不需要额外参数

                                                     ansible命令常用参数列表

参数作用
-k 手动输入ssh协议密码
-i指定主机清单文件
-m 指定要使用的模块名
-M指定要使用的模块路径
-S使用su命令
-T设置SSH协议连接超时时间
-a设置传递给模块的参数
--version查看版本信息
-h帮助信息

3、常用模块详解与配置实例

3.1命令与脚本类模块
3.1 .1  command模块

仅⽀持简单命令,不⽀持特殊符号,管道....

⚠ 这个模块是默认模块,ansible不加上模块,默认就使⽤这个模块.

ansible all   -m command -a '命令'
ansible all  -a 'hostname' #相当于省略 -m command 

3.1.2  scripts模块-传输脚本到被管理端并执行脚本

传输脚本

执行脚本

[root@ansible ~]# mkdir -p /server/scripts
[root@ansible ~]# vi /server/scripts/yum.sh
[root@ansible ~]# cat /server/scripts/yum.sh
yum install ipvsadm
[root@ansible ~]# ansible dev -m script -a '/server/scripts/yum.sh'
192.168.81.132 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.81.132 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.81.132 closed."
    ], 
    "stdout": "Loaded plugins: fastestmirror\r\nLoading mirror speeds from cached hostfile\r\n * base: ftp.sjtu.edu.cn\r\n * extras: mirrors.aliyun.com\r\n * updates: mirrors.aliyun.com\r\n\rbase                                                     | 3.6 kB     00:00     \r\n\rdocker-ce-stable                                         | 3.5 kB     00:00     \r\n\rextras                                                   | 2.9 kB     00:00     \r\n\rupdates                                                  | 2.9 kB     00:00     \r\nPackage ipvsadm-1.27-8.el7.x86_64 already installed and latest version\r\nNothing to do\r\n", 
    "stdout_lines": [
        "Loaded plugins: fastestmirror", 
        "Loading mirror speeds from cached hostfile", 
        " * base: ftp.sjtu.edu.cn", 
        " * extras: mirrors.aliyun.com", 
        " * updates: mirrors.aliyun.com", 
        "", 
        "base                                                     | 3.6 kB     00:00     ", 
        "", 
        "docker-ce-stable                                         | 3.5 kB     00:00     ", 
        "", 
        "extras                                                   | 2.9 kB     00:00     ", 
        "", 
        "updates                                                  | 2.9 kB     00:00     ", 
        "Package ipvsadm-1.27-8.el7.x86_64 already installed and latest version", 
        "Nothing to do"
    ]
}

[root@ansible ~]# 

查看受管主机,验证!!!

3.2 文件与目录管理模块

file 创建/删除 文件、目录、软连接

copy 远程分发文件、目录、软件包、压缩包 

3.2.1  file模块

管理⽂件或⽬录,软连接

file模块中的选项
path路径(⽬录,⽂件) 必须要写
src(source源)源⽂件⼀般⽤于link(创建软连接模式) ⽤于指定源⽂件
state

状态(模式)

state=directory 创建⽬录

state=file (默认) 更新⽂件,如果⽂件不存在也不创建.

state=link 创建软连接

state-hard 创建硬链接

state=touch 创建⽂件

state=absent 删除

实例1-创建/shcool目录

在192.168.81.132主机上验证!!!

实例2-创建文件/shcool/test.txt

在192.168.81.132主机上验证!!!

实例3-创建软连接/shcool/test.txt到/tmp/test.txt.soft

验证!!!

实例4-删除文件/目录、软连接

实例5-创建文件/tmp/test.txt ,所有者root,用户组root,权限为755

3.2.2  copy远程传输模块
copy模块
srcsource源文件
destdestination ⽬标
backupbackup=yes 则会在覆盖前进⾏备份
mode修改权限
owner修改为指定所有者
group修改为指定⽤户组

实例1-传输/etc/hosts文件到/etc/hosts 

案例02-传输/etc/hosts⽂件到/etc/hosts-先备份然后修改

3.3服务管理模块

systemctl命令

启动/关闭/重启服务.

开机⾃启动/开机不⾃启动.

3.3.1 systemd
systemd模块
name⽤于指定服务名称
enabled 控制服务的开机⾃启动 enabled=yes /enabled=no
state 

表示服务开,关,重启...

state=started 开启

state=stopped 关闭

state=reloaded 重读配置⽂件(服务⽀持) sshd,nfs

state=restarted 重启(关闭再开启)

daemon-reloadyes是否重新加载对应的服务的管理配置⽂件(讲解了systemctl配置⽂件.)
实例1-关闭firewalld

实例2-重启firewalld

3.4 软件包管理模块
3.4.1 yum源配置管理模块
yum源模块 yum_repositoryyum源配置⽂件内 容
name[epel]yum源中名字(中括号⾥⾯的名字即可.)
descriptionname=xxxxxxyum源的注释说明
baseurlbaseurl=yum源中下载软件包的地址(可以访问到repodata⽬录)
enabled=yes 或noenabled=1或0是否启动这个源
gpgcheck=yes或nogpgcheck=0是否启动gpgcheck功能
file (可以不加)指定yum源的⽂件 ⾃动添加.repo file=lidao 默认与模块名字⼀致.

实例1-批量增加nginx-yum源

.

[nginx]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
 ansible web  -m yum_repository   -a 'name=nginx description="nginx stable repo" baseurl="http://nginx.org/packages/centos/$releasever/$basearch/"  gpgcheck=no              enabled=yes'
3.4.2 yum模块
yum模块
name指定软件包的名字
state

installed 安装(present)

removed 删除 (absent)

latest安装或更新

实例1-安装net-tools

方法一:ansible 192.168.81.132 -m yum -a 'name=net-tools state=installed'

方法二:ansible 192.168.81.132  -a  'yum install net-tools -y'

3.4.3   get_url模块(wegt)
get_url下载功能
url指定要下载的地址
dest下载到哪个目录
实例1-下载源码包到/packages目录下

验证!!!

3.5 系统管理模块

mount挂载nfs模块

cron 管理定时任务

3.5.1 mount模块
mount
fstyps指定文件系统(nfs)
src源地址(nfs)服务端地址
path挂载点(要把源挂载点到哪里)
state

state=absent         卸载(umount)并修改fstab(清理配置)

atate=unmounted  卸载不修改/etc/fstab

state=present        仅修改/etc/fstab 不挂载

mounted                挂载(⽤mount命令)并修改/etc/fstab(永久挂载)

remounted             重新挂载

实例1-挂载

192.168.81.132把nfs共享的⽬录/data⽬录挂载到/upload_video 
步骤01_192.168.81.132上⾯创建挂载点/upload_video
ansible 192.168.81.132  -m file  -a 'path=/upload_video   state=directory'
步骤02_挂载nfs
 ansible 192.168.81.132 -m mount   -a 'fstype=nfs src="192.168.81.132:/data" path=/upload_video 
state=mounted '
 ansible web -a 'df -h'
 ansible web -a 'tail -2 /etc/fstab'

3.5.2  cron模块
cron模块 定时任 务模块定时任务配置中 的内容
name#及后⾯的内容定时任务名字(⼀定要加上), 对应下⾯注释的内容
minute*/2分钟 minute="*/2",如果没有⽤到不⽤填写即可
hour⼩时
day⽇期
month⽉份
week周⼏
job指定命令或脚本(定向到空) job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null"
statepresent 默认是添加 添加定时任务 absent 删除

实例1-添加自动同步时间的定时任务
#1. sync time lidao996 
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null
步骤01_备份数据
ansible all  -a  'cp /var/spool/cron/root /tmp/' 
ansible all  -a  'ls -l /tmp/root' 
ansible all  -a  'crontab -r'
步骤02_书写定时任务
ansible all  -m cron -a 'name="sync time by lidao996 20221111" minute="*/2" 
job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null" state=present'

3.6   用户管理模块

group 创建组模块

user    创建用户模块

3.6.1 user模块user
user模块
namewww用户名
uid指定uid
group指定用户组
shell指定命令解释器
create_home是否创建家目录(yes/no)
state

present 添加

absent   删除

实例1-创建用户ami

实例2-创建虚拟用户virtual  ,指定uid为888

命令解释器: /sbin/nologin

不创建用户家目录

方法一: useradd -u 888 -s /sbin/nologin -M  virtual 

方法二:ansible 192.168.81.132 -m user -a 'name=virtual  uid=888 shell=/sbin/nologin create_home=no state=present'

3.5.2 group模块
group
name 指定用户组名字
gid指定组的gid
state 

present 添加

absent   删除

实例1-创建用户kmi,gid为10088

#为美好的开源世界贡献一份力量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1605833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内部类

一.概念 当一个事物内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么将这个内部的完整结构最好使用内部类。在Java中,可以将一个类定义在另一个类或者一个方法内部,前…

如何进行开关电源温升极限测试?

开关电源温升极限测试是指开关电源在没有过温保护的条件下,逐渐升高电源的测试温度,直到开关电源损坏。温升极限测试是为了研究开关电源能够承受的最高环境温度,从而评估开关电源的性能,优化提升开关电源的工艺设计。 温升极限测试…

【Canvas技法】六种环状花纹荟萃

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>使用HTML5/Canvas绘制六种环状花纹</title><style type&quo…

SimCLR v2(NeurIPS 2020)论文解读

paper&#xff1a;Big Self-Supervised Models are Strong Semi-Supervised Learners official implementation&#xff1a;https://github.com/google-research/simclr 本文的创新点 本文在SimCLR的基础上做了一些改进&#xff0c;提出了SimCLR v2&#xff0c;进一步提升了…

车机系统与 Android 的关系概述

前言&#xff1a;搞懂 Android 系统和汽车到底有什么关系。 文章目录 一、基本概念1、Android Auto1&#xff09;是什么2&#xff09;功能 2、Google Assistant3、Android Automotive1、Android Auto 和 Android Automotive 的区别 4、App1&#xff09;App 的开发2&#xff09;…

JavaWeb开发02-MYSQL-DDL-DML-DQL-多表设计-多表查询-事务-索引

一、MySQL概述 通过SQL语句可以操作数据库 关系型数据库&#xff1a; 只要是关系型数据库就可以用SQL语句这一统一标准进行操作数据库 1.MYSQL数据模型 客户端通过SQL语句交给了数据库管理系统DBMS&#xff0c;进行相应操作&#xff0c;创建一个一个数据库&#xff0c;体现为一…

mysql使用逗号分隔的一行数据转多行数据

文章目录 学习链接准备建表插入数据 方法MySQL逗号拼接的列拆分为多行&#xff08;不使用mysql.help_topic&#xff09;遇到字段以逗号分隔符分号分隔符存放多个值&#xff0c;需要一行转化多行&#xff0c;以用来关联&#xff08;使用mysql.help_topic&#xff09;改为LEFT JO…

DevOps是什么?

DevOps是一系列实践、工具和文化理念的组合&#xff0c;旨在自动化并整合软件开发和信息技术运维团队之间的流程。以下是DevOps的几个关键点&#xff1a; 沟通与协作&#xff1a;DevOps强调开发和运维团队之间的沟通与合作&#xff0c;通过改善这两个部门间的协作关系&#xff…

OpenHarmony轻量系统开发【13】鸿蒙小车开发

13.1 小车介绍 基于鸿蒙系统 Hi3861 的WiFi小车 首先&#xff0c;我们得有一套WiFi小车套件&#xff0c;其实也是Hi3861 加上电机、循迹模块、超声波等模块。 小车安装完大概是这样&#xff1a; 13.2 电机驱动 我们这里先只做最简单的&#xff0c;驱动小车的电机&#xff…

奶酪——并查集,BFS,DFS(NOIP2017提高组)

目录 题目 思路 并查集 代码&#xff08;java&#xff09; BFS&#xff08;DFS同理&#xff09; 代码&#xff08;C&#xff09; 题目 思路 这个题目意思是有很多个球分布在一个三维空间内&#xff0c;如果这些球相切或者相交都可以互相到达&#xff0c;我们需要判断能否…

【python从入门到精通】-- 第五战:函数大总结

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

元宇宙VR虚拟线上展馆满足企业快速布展的需要

想要拥有一个VR线上虚拟展馆&#xff0c;展现您的城市风采或企业特色吗? 相比实体展馆搭建&#xff0c;VR线上虚拟展馆投入资金少&#xff0c;回报周期短&#xff0c;只需几个月的时间&#xff0c;您就能开始资金回笼。那么一个VR线上虚拟展馆多少钱呢? 深圳VR公司华锐视点基…

C语言如何使⽤指针?

一、问题 指针变量在初始化以后就可以使⽤和参与操作了&#xff0c;那么就要⽤到对指针变量最常⽤的两个操作符——> * 和 &#xff06; 。 二、解答 这⾥⼜要提到始终贯穿着指针的⼀个符号“ * ”&#xff0c;但是这⾥的“ * ”是作为指针运算符使⽤的&#xff0c;叫做取内…

三大常用自动化框架对比

上次发布过性能测试工具的对比后&#xff0c;有小伙伴后台留言&#xff0c;想了解一下自动化测试框架的对比&#xff0c;尤其是RobotFramework、pytest和unitest之间的优劣势情况。 这不我们今天就来分析一下他们之间的区别和各自的优缺点。 1 RobotFramework 优点&#xff1a;…

selenium 下载文件取消安全下载的方法

问题描述 我要从一个网站上下载文件&#xff0c;谷歌浏览器总是自动阻止下载&#xff0c;并询问我是否保留。 可是&#xff0c;我想要的是不要询问&#xff0c;默认下载即可。 运行环境 OS: macOSselenium: 4.19.0python: 3.10.11Chrome: 124.0.6367.62selenium chromedrive…

openEuler-23.03下载

下载地址&#xff1a;openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 下载版本&#xff1a;openEuler-23.03-x86_64-dvd.iso

CTF中常见的四种python逆向

说在前面&#xff1a; 什么是pyc文件&#xff1f; pyc是一种二进制文件&#xff0c;是由py文件经过编译后&#xff0c;生成的文件&#xff0c;是一种byte code&#xff0c;py文件变成pyc文件后&#xff0c;加载的速度有所提高&#xff0c; pyc 文件是 Python 编译过的字节码文…

WdatePicker异常,无法弹出日期选择框

官网&#xff1a;My97日期控件官方网站 My97 DatePickerhttp://www.my97.net/ 可能使版本太老了&#xff0c;可以更新一下&#xff0c;然后根据官方的文件进行使用。 我的异常是因为在网上找的包里面缺少文件&#xff0c;去官网拉了一下最新的就行了。

【Linux驱动层】iTOP-RK3568学习之路(二):vscode中设置头文件路径-完成代码自动补全

在Ubuntu下用vscode写Linux驱动层的时候&#xff0c;需要添加头文件&#xff1a; #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h>但vscode没有智能提示&#xff0c;因此需要我们手动添加自己的头文件路径&#xff1a; topeetu…

Ubuntu 23.10.1 nginx源码安装

注&#xff1a;以下所有命令均在root管理员模式下&#xff0c;若不是&#xff0c;请在所有命令前加sudo 1、安装依赖库 1.1、安装gcc g的依赖库 apt-get install build-essential apt-get install libtool1.2、安装pcre依赖库 apt-get update apt-get install libpcre3 lib…