使用ansible管理其他主机有两种方式:

1.命令行执行ansible ad-hoc命令

2.把要做的动作行为写入一个文件【playbook脚本】,ansible读取脚本自动完成相应的任务。

Ansible ad-hoc是一种通过命令行批量管理的方式

格式:ansible 主机集合,组名 -m 模块名 -a "参数" -k

其他参数: -k使用密码远程、-i指定主机列表文件

注意事项:

执行ansible命令一定要先cd到ansible目录

1.查看主机列表

#cd ~/ansible

#ansible all --list-hosts       #查看所有主机  all是ansible自带的已经定义好的特殊组

2.测试远程主机是否能ping通。当需要远程多个主机或者多个组时,中间使用逗号分隔

#ansible node1 -m ping

#ansible node1,webserver -m ping

3.模块就是脚本(多数为Python脚本),多数脚本都支持参数,默认模块为command

#ansible node1 -m command -a "uptime"          #查看CPU负载

#ansible node1 -m command -a "uname -r"      #查看内核版本

#ansible node1 -a "ip a s"                                 #查看网卡信息
#ansible all -a "date"                                         #查看时间

#####################################################

失败检查:

检查/etc/hosts

检查~/ansible/ansible.cfg

检查~/ansible/hosts

####################################################

command和shell模块的区别,command模块的命令不启动shell,直接通过ssh执行命令,command不支持bash特性,如管道和重定向等功能,所有需要调用shell的功能都无法使用。

不可以使用shell模块执行交互命令,如vim、top等

4.Shell模块

# ansible test -m shell -a "ps aux | wc -l"                   #进程数量

# ansible test -m shell -a "who"                                 #登陆信息

#ansible test -m shell -a "touch /tmp/a.txt"   #使用shell模块创建文件会有Warning警告提示,正常

#####################################################################

注意:ansible使用ssh远程连接被管理主机,退出ssh后所有状态失效。

#ansible test -m shell -a "cd /tmp"                   #切换目录

#ansible test -m shell -a "touch b.txt"              #创建文件(没有指定路径,在家目录创建的文件)

#ansible test -m shell -a "ls /tmp/b.txt"            #查看,没有文件和目录

#ansible test -m shell -a “chdir=/tmp touch b.txt”   #使用chdir参数切换共作目录

#####################################################################

shell模块支持判断(creates、removes)

creates文件名:文件存在,不执行shell命令。

removes文件名:文件不存在,不执行shell命令。

#ansible test -m shell -a "touch /tmp/b.txt creates=/tmp/b.txt"

# ansible会远程test目标主机,判断目标主机有没有/tmp/b.txt文件,如果有该文件则ansible对应的shell命令不执行,没有则执行shell命令。

假设我有一个xxx.zip压缩包

#ansible test -m shell -a “unzip /root/xxx.zip”

远程test主机,执行unzip命令解压一个压缩包文件

#ansible test -m shell -a “unzip /root/xxx.zip  removes=/bin/unzip”

ansible会远程test主机,判断目标主机有没有/bin/unzip程序,如果没有不执行shell命令,有则执行

############################################################################

5.script模块。script模块会把-a后面的脚本拷贝到被管理端主机,在目标主机执行这个脚本。

# vim ~/ansible/test.sh

#!/bin/bash

yum -y install httpd

systemctl start httpd

#ansible test -m script -a ‘./test.sh’       #test主机组

在node1电脑检测,是否安装了httpd软件

#rpm -q httpd

#systemctl status httpd

###############

6.file模块

###############

file模块可以创建文件、目录、链接;修改权限与属性等。

很多ansible模块具有【幂等性】的特征。

幂等性:任意次执行所产生的影响均与一次执行的影响相同。

#state=touch是创建文件,state=directory是创建目录,state=absent代表删除,state=link是创建快捷方式

#ansible test  -m file -a “path=/tmp/file.txt state=touch”

# ansible test -m file -a "path=/tmp/mydir state=directory"

#远程test组中所有主机,创建目录,path后面指定要创建的文件或目录的名称

## 验证:到node1主机,使用ls /tmp/看看tmp目录下是否有mydir子目录

# ansible test -m file -a "path=/tmp/file.txt owner=sshd group=adm mode=0777"

#修改文件或目录权限,path后面指定要修改的文件名或目录名称,owner后面指定用户,group后面指定组,mode后面指定要修改的权限(0777中第一个0代表的是无特殊权限,如SUID、SGID等)

## 验证:到node1主机,使用ls -l /tmp/file.txt查看文件的详细信息是否正确

# ansible test -m file -a "path=/tmp/mydir state=absent"

#state=absent代表删除(删除目录)

# ansible test -m file -a "path=/tmp/file.txt state=absent"

# state=absent代表删除(删除文件)

# ansible test -m file -a "src=/etc/hosts path=/tmp/host.txt state=link"

#给/etc/hosts文件创建一个链接文件/tmp/host.txt(src指定源文件,path是软链接文件名)

#相当于执行命令 ln -s /etc/hosts /tmp/host.txt

## 验证:到node1主机使用ls -l /tmp/hosts查看文件是否为软链接

#############

7.copy模块,可以将文件拷贝到远程主机,如果目标主机有同名文件时,通过定义backup=yes则先备份在拷贝。

#############

copy模块可以将文件拷贝到远程主机 (ansible-doc copy)。

# echo AAA > ~/a3.txt

#ansible test -m copy -a "src=~/a3.txt dest=/root/"

#把管理端本机的a3.txt文件,拷贝到test组中所有主机的/root/目录

#src代表源文件,dest代表目标文件

## 验证:到node1主机使用ls /root/a3.txt查看是否有该文件

#echo CCC > ~/a3.txt

#ansible test -m copy -a "src=~/a3.txt dest=/root/ backup=yes"

查看node1#ls

a.txt

a.txt.3600.2020-09-06@17:50:08~

############################

8.fetch模块,fetch模块与copy类似,作用相反,可以将其他主机的文件拷贝到本地。flat=yes拷贝目录

############################

# ansible all -m fetch -a "src=/etc/hostname dest=~/"

#将all所有主机的hostname文件下载到本地家目录

#ls

########################

9.lineinfile|replace模块,在修改单个文件的单行内容时可以使用lineinfile模块,lineinfile会替换一整行,replace可以替换关键词

########################

#ansible test -m lineinfile -a "path=/etc/issue line='hello world'"

#在/etc/issue文件中添加一行内容hello world,默认添加到最后,line后面跟的是需要添加的文件内容

# ansible test -m lineinfile -a "path=/etc/issue line='insert' insertafter='Kernel'"

#将line后面的内容插入到/etc/issue文件中Kernel行的后面

#######################################################

replace可以替换关键字

#######################################################

#ansible test -m replace -a “path=/etc/issue regexp=‘hello’ replace=ni hao”

将node1主机中/etc/issue文件全文所有的hello替换为ni hao

#regexp后面是需要替换的旧内容;replace后面是需要替换的新内容

########

10.user模块,可以实现linux系统账户管理

########

#ansible test -m user -a "name=tuser1"

#ansible test -m user -a "name=tuser2 uid=1010 group=adm groups=daemon,root home=/home/tuser2"

#name是用户名,uid指定用户ID号,group指定用户属于哪个基本组

#groups指定用户属于哪些附加组,home指定用户的家目录

#ansible test -m user -a "name=tuser1 password={{'abc'| password_hash('sha512')}}"

#修改账户密码,用户名是tuser1,密码是abc,密码经过sha512加密

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

#删除账户tuser1,state=absent代表删除账户的意思,name指定要删除的用户名是什么

#账户的家目录不会被删除,相当于执行userdel tuser1

# ansible test -m user -a "name=tuser2 state=absent remove=true"

#删除tuser2账户同时删除家目录、邮箱,相当于执行userdel -r tuser2

################################

11.yum_repository模块,使用yum_repository可以创建或修改yum源配置文件(/etc/yum.repo.d/文件)

################################

#ansible test -m yum_repository -a "name=myyum description=hello baseurl=ftp://192.168.4.254/centos gpgcheck=no"

#新建一个yum源配置文件/etc/yum.repos.d/myyum.repo

yum源文件名为myyum,该文件的内容如下:

[myyum]

name= hello

baseurl= ftp://192.168.4.254/centos

gpgcheck= 0

#ansible test -m yum_repository -a "name=myyum description=test baseurl=ftp://192.168.4.254/centos gpgcheck=yes gpgkey=…"

#修改yum源文件内容

# ansible test -m yum_repository -a "name=myyum state=absent"

#删除yum源文件myyum

################################

12.yum模块,使用yum模块可以安装、卸载、升级软件包,state: present(安装)|absent(卸载)|latest(升级)。

################################

#ansible test -m yum -a "name=unzip state=present"

#安装unzip软件包,state默认为present,也可以不写

# ansible test -m yum -a "name=unzip state=latest"

#升级unzip软件包,软件名称可以是*,代表升级所有软件包

# ansible test -m yum -a "name=unzip state=absent"

#调用yum模块,卸载unzip软件包,state=absent代表卸载软件

############################

13.service模块,(ansible-doc service)。service为服务管理模块(启动、关闭、重启服务等)state:started|stopped|restarted,enabled:yes设置开机启动。

############################

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

#调用yum模块,安装httpd软件包

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

#调用service模块,启动httpd服务

# ansible test -m service -a "name=httpd state=stopped"

#调用service模块,关闭httpd服务

# ansible test -m service -a "name=httpd state=restarted"

#调用service模块,重启httpd服务

# ansible test -m service -a "name=httpd enabled=yes"

#调用service模块,设置httpd服务开机自启

############################

14.逻辑卷相关模块(ansible-doc lvg、ansible-doc lvol)

############################

做实验之前需要给对应的虚拟机添加额外磁盘,并创建磁盘2个分区

可以使用parted或fdisk命令给磁盘创建分区

这里的磁盘名称仅供参考,不要照抄!

lvg模块:创建、删除卷组(VG),修改卷组大小,state:present(创建)|absent(删除)。

# ansible test -m yum -a "name=lvm2"

#安装lvm2软件包,安装了lvm2软件后,才有pvcreate、vgcreate、lvcreate等命令

# ansible test -m lvg -a "vg=myvg pvs=/dev/sdb1"

#创建名称为myvg的卷组,该卷组由/dev/sdb1组成

#注意:这里的磁盘名称要根据实际情况填写

# ansible test -m lvg -a "vg=myvg pvs=/dev/sdb1,/dev/sdb2"

#修改卷组大小,往卷组中添加一个设备/dev/sdb2

lvol模块:创建、删除逻辑卷(LV),修改逻辑卷大小,state:present(创建)|absent(删除)。

# ansible test -m lvol -a "lv=mylv vg=myvg size=2G"

#使用myvg这个卷组创建一个名称为mylv的逻辑卷,大小为2G

# ansible test -m lvol -a "lv=mylv vg=myvg size=4G"

#修改LV逻辑卷大小

# ansible test -m lvol -a "lv=mylv vg=myvg state=absent force=yes"

#删除逻辑卷,force=yes是强制删除

# ansible test -m lvg -a "vg=myvg state=absent"

#删除卷组myvg

ansible使用,常用模块的更多相关文章

  1. ansible中常用模块详解

    ansible中常用的模块详解: file模块 ansible内置的可以查看模块用法的命令如下: [root@docker5 ~]# ansible-doc -s file - name: Sets ...

  2. ansible api常用模块与参数

    ###ansibleAPI 常用模块 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括 ...

  3. Ansible之常用模块(一)

    ansible之所以功能强大,不是ansible本身,是因为它有众多的模块,前文我们介绍了ansible的基础介绍,系列命令的用法以及选项的说明,通过前文的学习我们知道了ansible是基于pytho ...

  4. ansible API 常用模块

    常用模块 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 fro ...

  5. ansible 四常用模块

    常用模块 Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块 ...

  6. ansible 003 常用模块

    常用模块 file 模块 管理被控端文件 回显为绿色则,未变更,符合要求 黄色则改变 红色则报错 因为默认值为file,那么文件不存在,报错 改为touch则创建 将state改为directory变 ...

  7. Ansible Playbooks 常用模块

    官网链接:https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html ansible python module ...

  8. ansible小结常用模块

    根据官方的分类,将模块按功能分类为:云模块.命令模块.数据库模块.文件模块.资产模块.消息模块.监控模块.网络模块.通知模块.包管理模块.源码控制模块.系统模块.单元模块.web设施模块.window ...

  9. Ansible之常用模块(二)

    1.hostname:此模块的主要作用是管理远端节点主机名 模块帮助: root@localhost ~]# ansible-doc -s hostname - name: Manage hostna ...

  10. Ansible之常用模块介绍

    环境 ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS -C -f forks ssh-keygen -t rsa -P "" ssh-co ...

随机推荐

  1. PYTHON-错误-函数有返回值未接收导致替换不成功

    #1.有返回值,没有赋值,替换不成功 cxj = 'guapi' cxj.replace(cxj,'2b') print(cxj) #2.有返回值,赋值,替换成功 cxj = 'guapi' cxj ...

  2. utf-8变长

    utf-8变长 变长规则 一字节:0******* 两字节:110,10* 三字节:1110,10,10**** 四字节:11110**,10******,10,10* 如果是以0开头的,那么他就是一 ...

  3. 你想了解的JDK 10版本更新都在这里

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  4. Java14版本特性【一文了解】

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  5. RCON 服务器命令协议

    介绍 编辑 RCON是一种允许服务器管理员远程执行Minecraft命令的协议.在1.9pre4中引入,它基本上是Minecraft的Source RCON协议的实现. 格式 编辑 响应将使用您发送的 ...

  6. JS - 有趣的面试题

    for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, 1000); } //这个例子执行完输出什么结果 ...

  7. 使用OpenCV和Python构建自己的车辆检测模型

    概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分之前,我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自 ...

  8. Labview学习之路(六)条件结构

    条件结构位于 函数---结构 子选版中.相当于c语言的switch语句, 结构: 分支选择器 分支器标签 分支子框图 可接数据类型 布尔型 布尔常量 真和假   错误信息簇 真和假 整型数值 单值 可 ...

  9. 最佳实践:Pulsar 为批流处理提供融合存储

    非常荣幸有机会和大家分享一下 Apache Pulsar 怎样为批流处理提供融合的存储.希望今天的分享对做大数据处理的同学能有帮助和启发. 这次分享,主要分为四个部分: 介绍与其他消息系统相比, Ap ...

  10. 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导

    在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...