首页 > 其他分享 >Ansible自动化运维模块详解

Ansible自动化运维模块详解

时间:2023-12-05 11:26:38浏览次数:38  
标签:Ansible name 运维 data state ansible 模块 root 详解

ansible  ad-hoc点对点模块

ping模块主机连通性测试

[root@node2 ~]# ansible all -m ping

192.168.200.10 | SUCCESS => {

    "ansible_facts": {

        "discovered_interpreter_python": "/usr/bin/python"

    },

    "changed": false,

    "ping": "pong"

}

command命令模块 远程主机上执行命令

chdir      # 在执行命令之前,先切换到该目录

creates  # 一个文件名,当这个文件存在,则该命令不执行,可以用来做判断

removes       # 一个文件名,这个文件不存在,则该命令不执行,与creates相反的判断

executable   # 切换shell来执行命令,需要使用命令的绝对路径(不常用,常用下面shell 模块)

free_form    # 要执行的Linux指令,一般使用Ansible的-a参数代替(不常用,常用下面shell 模块)

[root@node2 ~]# ansible all -m command -a 'creates=/data/f1 touch /data/f2'

[WARNING]: Consider using the file module with state=touch rather than running 'touch'.  If

you need to use command because file is insufficient you can add 'warn: false' to this

command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.

192.168.200.10 | CHANGED | rc=0 >>

 

[root@node2 ~]# ansible all -m command -a 'removes=/data/f1 touch /data/f2'

192.168.200.10 | SUCCESS | rc=0 >>

skipped, since /data/f1 does not exist

[root@node2 ~]#

[root@node2 ~]# ansible all -m command -a 'chdir=/tmp ls'

192.168.200.10 | CHANGED | rc=0 >>

123

ansible_command_payload_xJ1PZW

ansibleplaybook_test.txt

ansible_test.txt

qq.txt

systemd-private-4b79af62d3ad4f759f7735cc99135b88-chronyd.service-cm2Obp

test.sh

vmware-root

shell模块

shell模块在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道、echo等

在配置文件中将模块进行修改,就不需要输入-m shell选项,修改位置:

$ vim /etc/ansible/ansible.cfg

module_name = shell

[root@node2 ~]# ansible all -a 'cat /etc/passwd |grep test'

192.168.200.10 | CHANGED | rc=0 >>

test:x:1000:1000::/home/test:/bin/bash

test1:x:1001:1001::/home/test1:/bin/bash

test2:x:1002:1002::/home/test2:/bin/bash

script模块在指定节点运行服务端的脚本

[root@node2 ~]# ansible all -m script -a 'test.sh'

[root@node2 ~]# ansible all -a "chdir=/data ls"

[root@node2 ~]# ansible all  -m shell -a "cat /data/test"

192.168.200.10 | CHANGED | rc=0 >>

文件系统                 容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root   17G  1.2G   16G    7% /

devtmpfs                 899M     0  899M    0% /dev

tmpfs                    911M     0  911M    0% /dev/shm

tmpfs                    911M   18M  894M    2% /run

tmpfs                    911M     0  911M    0% /sys/fs/cgroup

/dev/sda1               1014M  142M  873M   14% /boot

tmpfs                    183M     0  183M    0% /run/user/0

/dev/sr0                 4.2G  4.2G     0  100% /opt/centos

copy模块

复制文件到远程主机,可以改权限等

复制文件

-a "src= dest= "

给定内容生成文件

-a "content= dest= "

相关选项如下:

src:源,被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

dest:目标,必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

backup:被管理的远程主机已经有文件了,在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no

content:用于替代“src”,可以直接设定指定文件的值

directory_mode:递归设定目录的权限,默认为系统默认权限

force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

others:所有的file模块里的选项都可以在这里使用

---------------------------------

#ansible all -m copy -a "src=/etc/issue dest=/data/fstab owner=nobody mode=600 backup=yes"  将src(源)/etc/issue文件复制到dest(目标)的data目录下,起名叫fstab,所有者为nobody,权限为600,如果有此文件,进行备份。

[root@node2 ~]# ansible all -a "ls -l /data"

192.168.200.10 | CHANGED | rc=0 >>

总用量 8

-rw-r--r--. 1 root   root   0 9月   1 10:02 f2

-rw-------. 1 nobody root  23 9月   1 10:21 fstab

-rw-r--r--. 1 root   root 520 9月   1 10:12 test

 

fetch模块从远程复制文件到本地

从远程某主机获取文件到本地

dest:用来存放文件的目录,例如存放目录为backup,源文件名称为/etc/profile在主机pythonserver中,那么保存为/backup/pythonserver/etc/profile

Src:在远程拉取的文件,并且必须是一个file,不能是目录

注意:从远程获取到本地的文件,会保存到以远程主机的IP 为名的目录中,且保存目录结构

------------------------------------

# ansible all -m fetch -a "src=/etc/hosts dest=/data"

# ls /data/

192.168.200.10

# ansible all -m shell -a "tar -cvf /root/data.tar /data"

# ansible all -m shell -a "ls -l /root/"

192.168.200.10 | CHANGED | rc=0 >>

总用量 16

-rw-------. 1 root root  1231 7月   1 20:54 anaconda-ks.cfg

-rw-r--r--. 1 root root 10240 9月   1 10:34 data.tar

file模块设置文件属性

l 创建目录:-a “path= state=directory”

l 创建链接文件:-a “path= src= state=link”

l 删除文件:-a “path= state=absent”

 

创建文件

# ansible all -m file -a "path=/data/f4 state=directory"

删除文件

# ansible all -m file -a "path=/data/f4 state=absent"

创建软链

# ansible all -m file -a "src=/data/fstab path=/data/fstab.link state=link"

创建硬链接 

# ansible all -m file -a "src=/data/fstab path=/data/fstab.link state=hard"

hostname模块  管理主机名

ansible 192.168.200.10 -m hostname -a “name=centos102” 修改为centos102

cron模块 计划任务

管理cron计划任务;-a “”: 设置管理节点生成定时任务

crontab

n day=     #日应该运行的工作( 1-31, *, */2, )

n hour=   # 小时 ( 0-23, *, */2, )

n minute=    #分钟( 0-59, *, */2, )

n month=     #月( 1-12, *, /2, )

n weekday   # 周 ( 0-6 for Sunday-Saturday,, )

n job=       #指明运行的命令是什么

n name=   #定时任务描述

n reboot    # 任务在重启时运行,不建议使用,建议使用special_time

n special_time   #特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)

n state   #指定状态,present表示添加定时任务,也是默认设置,absent表示删除定时任务

n user    #以哪个用户的身份执行 

# ansible all -m cron -a "minute=*/1 weekday=4 job="/use/bin/date 192.168.200.10 &> /dev/null" name=synctime"

# ansible all -m cron -a "minute=*/1 weekday=4 job="/use/bin/date 192.168.200.10 &> /dev/null" name=synctime disable=ture"

 

 ansible all -m cron-a "name=' clean iptables' minute=*/5 job='/sbin/iptables -F &> /dev/null' "

 

state=absent 删除计划

 

yum模块

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

安装应用

# ansible all -m yum -a "name=httpd "

卸载应用

# ansible all -m yum -a "name=httpd state=absent"

安装多个应用

# ansible all -m yum -a "name=httpd,vsftpd,net-tools"

卸载多个应用

# ansible all -m yum -a "name=httpd,vsftpd,net-tools state=absent"

service模块服务程序管理

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

# ansible all -m service -a "name=httpd state=started"

[root@node2 ~]# ansible all -a "ss -nlt"

192.168.200.10 | CHANGED | rc=0 >>

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              

LISTEN     0      128          *:22                       *:*                  

LISTEN     0      100    127.0.0.1:25                       *:*                  

LISTEN     0      128         :::80                      :::*                  

LISTEN     0      128         :::22                      :::*                  

LISTEN     0      100        ::1:25                      :::*                  

[root@node2 ~]# # ansible all -m service -a "name=httpd state=stopped"

user模块 用户模块

  • comment        # 用户的描述信息
  • createhome    # 是否创建家目录
  • force      # 在使用state=absent是, 行为与userdel -force一致.
  • group     # 指定基本组
  • groups   # 指定附加组,如果指定为(groups=)表示删除所有组
  • home     # 指定用户家目录
  • move_home    # 如果设置为home=时, 试图将用户主目录移动到指定的目录
  • name     # 指定用户名
  • non_unique     # 该选项允许改变非唯一的用户ID值
  • password       # 指定用户密码,若指定的是明文密码,是不能用的,需用md5加密过后的密码
  • remove   # 在使用state=absent时, 行为是与userdel -remove一致
  • shell      # 指定默认shell
  • state      # 设置帐号状态,不指定为创建,指定值为absent表示删除
  • system  # 当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户
  • uid     # 指定用户的uid
  • update_password    # 更新用户密码

创建用户

# ansible all -m user -a 'name=test comment="test user" uid=200 home=/data/testhome group=root groups=bin,nobody shell=/sbin/nologin'

移除用户

# ansible all -m user -a "name=test state=absent"

group模块

  • gid         # 设置组的GID号
  • name=  # 管理组的名称
  • state     # 指定组状态,默认为创建,设置值为absent为删除
  • system  # 设置值为yes,表示为创建系统组

 ansible webs -m group -a "name=testgroup system=yes“  创建系统组

 ansible webs -m group -a "name=testgroup state=absent"  删除组

 

setup模块 查机器的facts信息

  • facts 组件是Ansible 用于采集被管机器设备信息的一个功能,我们可以使用setup 模块查机器的所有facts信息,可以使用filter来查看指定信息。整个facts信息被包装在一个JSON格式的数据结构中,ansible_facts是最上层的值。
  • acts就是变量,内建变量 。每个主机的各种信息,cpu颗数、内存大小等。会存在facts中的某个变量中。调用后返回很多对应主机的信息,在后面的操作中可以根据不同的信息来做不同的操作。如redhat系列用yum安装,而debian系列用apt来安装软件。
  • setup模块,主要用于获取主机信息,在playbooks里经常会用到的一个参数gather_facts就与该模块相关。
  • setup模块下经常使用的一个参数是filter 参数,查询的是全部信息,很多,filter 相当于匹配筛选。

查看机器全部信息

# ansible all -m setup

查看主机总内存

# ansible all -m setup  -a "filter=ansible_memtotal_mb"  其中filter是过滤的含义

 

查看centos版本号

# ansible all -m setup -a "filter=ansible_distribution_major_version"

 

 

unarchive 解压模块

ansible web01 -m unarchive -a 'src=/package/php.tar.gz dest=/tmp/'

- name: Unarchive a file that is already on the remote machine

  unarchive:

    src: /tmp/foo.zip            #要解压的包

    dest: /usr/local/bin        #解压到目标位置

    remote_src:

        yes                        #要解压的包在受控端

        no                        #要解压的包在控制端

archive 压缩模块

ansible web01 -m archive -a 'path=/code dest=/tmp/code.tar.gz'

EXAMPLES:

- name: Compress directory /path/to/foo/ into /path/to/foo.tgz

  archive:

    path: /path/to/foo            #要压缩的文件或目录

    dest: /path/to/foo.tgz        #压缩后的文件

    format:bz2, gz, tar, xz, zip    #指定打包的类型

 

标签:Ansible,name,运维,data,state,ansible,模块,root,详解
From: https://www.cnblogs.com/daiqinghui/p/16650756.html

相关文章

  • CentOS7 安装 Oracle12c 详解
    1.安装前准备中科大镜像站下载完整版CentOS7 Indexof/centos/7/isos/x86_64/(ustc.edu.cn)安装时设置硬盘大小40G,选择GNOME桌面安装,勾选必要的一些东西安装时选择只装root用户重启后要求配置一个用户,设置用户名为oracle下载历史版本Oracle数据库 https://edelivery.o......
  • 【教程】苹果推送证书的创建和使用流程详解
    ​【教程】苹果推送证书的创建和使用流程详解 摘要本篇博客主要介绍了苹果推送证书的使用流程。首先,在苹果开发者中心创建推送证书,然后在应用程序中使用该证书进行消息推送。文章详细说明了创建推送证书的步骤,并提供了在应用程序中注册推送服务、发送推送消息以及处理推送消......
  • 神经网络入门篇:详解参数VS超参数(Parameters vs Hyperparameters)
    参数VS超参数什么是超参数?比如算法中的learningrate\(a\)(学习率)、iterations(梯度下降法循环的数量)、\(L\)(隐藏层数目)、\({{n}^{[l]}}\)(隐藏层单元数目)、choiceofactivationfunction(激活函数的选择)都需要来设置,这些数字实际上控制了最后的参数\(W\)和\(b\)的值,所以它们......
  • 深入理解泛型(经典详解):<T> T 和 T的使用以及public <E> List<E> get()泛型方法详解、类型擦
     一、为什么要使用泛型?    泛型俗称“标签”,使用<E>表示。泛型就是在允许定义类,接口时通过一个标识表示某个属性的类型或者是某个方法的返回值或者是参数类型,参数类型在具体使用的时候确定,在使用之前对类型进行检查。     泛型意味着编写的代码可以被很多不同......
  • openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引
    openGauss学习笔记-141openGauss数据库运维-例行维护-例行重建索引141.1背景信息数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。如果数据发生......
  • openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告
    openGauss学习笔记-142openGauss数据库运维-例行维护-导出并查看wdr诊断报告生成快照数据需参数enable_wdr_snapshot=on,访问WDR快照数据需要sysadmin或monadmin权限,因此需要使用root账号或其他拥有权限的账号来生成WDR诊断报告。执行如下命令新建报告文件。touch/home/om/w......
  • Java基本数据类型、包装类及拆装箱详解
    Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据,而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述,并对自动拆箱和装箱的源码实现进行分析。基本数据类型与......
  • 【Java集合】双列集合Map详解,让你快速上手!
    Map是一种双列集合,一个元素包含两个值,一个是Key,一个是Value。Map集合中的元素,key和value的数据类型可以相同,也可以不同。一个映射不能包含重复的键;每个键最多只能有一个值。今天我们继续探索Java集合的世界,这次我们要聊的主题是——双列集合Map。首先,让我们来理解一下什么是双......
  • 【Java集合】 Map双列集合详解:让你的代码更高效!
    Map是一种双列集合,一个元素包含两个值,一个是Key,一个是Value。Map集合中的元素,key和value的数据类型可以相同,也可以不同。一个映射不能包含重复的键;每个键最多只能有一个值。今天我们继续探索Java集合的世界,这次我们要聊的主题是——双列集合Map。首先,让我们来理解一下什么是双......
  • 在net中通过Autofac实现AOP的方法及实例详解
     在本示例中,我们将使用Autofac和AspectC(Autofac.Extras.DynamicProxy2)来演示如何实现AOP(面向切面编程)。我们将创建一个简单的C#控制台应用程序,并应用AOP以解决日志记录的问题。首先,让我们讨论AOP的用途和目标。AOP(面向切面编程)的用途AOP是一种编程范式,旨在解决横切关注点(cro......