首页 > 其他分享 >ansible基本使用

ansible基本使用

时间:2023-07-02 19:32:21浏览次数:43  
标签:基本 Ansible 如下 state ansible 模块 使用 root

1,ansible简介

ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据管理,批量设备部署及批量命令执行。

ansible大致模块工作原理见下图

ansible基本使用_Ansible

大致工作原理就是ansible程序调用抽取/etc/ansible/ansible.cfg配置文件获取主机了列表清单/etc/ansible/hosts文件,获取所要处理的主机列表,然后查看剧本任务,在根据剧本中一系列任务生成一个临时脚本文件,然后将该脚本文件发送给所有管理的主机,脚本文件在远程主机执行完成后返回结果,然后删除本地临时文件。

2,ansible的安装部署及免密设置

 1,使用yum方式安装,需要先安装epel源后方可找到ansible

[root@ansible ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

或者阿里的epel源

[root@ansible ~]# wget -O  /etc/yum.repos.d/epel-7.repo  http://mirrors.aliyun.com/repo/epel-7.repo

#安装ansible

[root@ansible ~]# yum -y install ansible

ansible工具默认主目录为/etc/ansible,其中hosts文件为被管理ip或主机名列表,ansible.cfg为ansible著配置文件,roles为角色或者插件路径,默认该目录为空,如下图所示

ansible基本使用_Ansible_02

ansible远程批量管理,其中执行命令是通过ad-hoc来完成,也就是点对点的执行命令,能够快速执行,而去不需要保存执行的命令,默认host文件配置主机列表,可以配置分组,也可以定义各种ip及规则,hosts列表默认配置如下图所示

ansible基本使用_Ansible_03

Ansible基于多模块管理,常用的Ansible工具管理模块包括:command、shell、script、yum、copy、file、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy等。可以使用ansible-doc-l|more查看Ansible支持的模块,也可以查看每个模块的帮助文档,用法为ansible-doc module_name,如下图所示。

ansible基本使用_Ansible_04

ansible基本使用_Ansible_05

3,ansible工具参数详解

基于Ansible批量管理,需将被管理的服务器IP列表添加至/etc/ansible/hosts文件中,如下图添加4台被管理端IP地址,分成Web和DB两组,本机也可以是被管理机。

ansible基本使用_Ansible_06

Ansible自动运维工具管理客户端案例操作,由于Ansible管理远程服务器基于SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于ssh-keygen生成免秘钥。

Ansible自动化批量管理工具主要参数详解如下:

·-v,-verbose:打印详细模式

·-i PATH,-inventory=PATH:指定host文件路径

·-f NUM,-forks=NUM:指定fork开启同步进程的个数,默认为5。

·-m NAME,-module-name=NAME:指定module名称,默认模块为command。

·-a MODULE_ARGS:module模块的参数或者命令。

·-k,  -ask-pass:输入远程被管理端密码。

·-sudo:基于sudo用户执行。

·-K,-ask-sudo-pass:提示输入sudo密码与sudo一起使用。

·-u USERNAME,-user=USERNAME:指定执行用户。

·-C,--check:测试执行过程,不改变真实内容,相当于预演。

·-T TIMEOUT:执行命令超时时间,默认为10s。

·--version:查看Ansible软件版本信息。

###先生成密钥对,然后发送给被管理主机

[root@ansible ~]# ssh-keygen   #一值回车

[root@ansible ~]# ssh-copy-id [email protected]    #输入被管理主机密码,以下一样

[root@ansible ~]# ssh-copy-id [email protected]

[root@ansible ~]# ssh-copy-id [email protected]

[root@ansible ~]# ssh-copy-id [email protected]

3.1 ansible  ping模块实战

ansibel最基础的模块为ping模块,主要用于判断远程客户端是否在线,返回值为changed,ping。

使用ansible  ping服务器状态,代码如下:

ansible基本使用_Ansible_07

3.2 ansiable command模块实战

ansible command模块为ansible默认模块,主要执行linux基础命令,可以执行远程服务器命令执行,任务执行等操作,command模块使用详解如下:

·Chdir:执行命令前,切换到目录。

·Creates:当该文件存在时,则不执行该步骤。

·Executable:换用shell环境执行命令。

·Free_form:需要执行的脚本。

·Removes:当该文件不存在时,则不执行该步骤。

·Warn:若在ansible.cfg中存在告警,如果设定了false,不会警告此行。

Ansible command模块企业常用案例如下。

1,ansible command 模块远程执行date命令,代码如下:

ansible基本使用_Ansible_08

2,ansible command模块远程执行ping命令,代码如下:

ansible基本使用_Ansible_09

3.3 ansible copy模块实战

Ansible copy模块主要用于文件或者目录复制,支持文件、目录、权限、用户组功能,copy模块使用详解如下:

·src:Ansible端源文件或者目录,空文件夹不复制。

·content:用来替代src,用于将指定文件的内容复制到远程文件内。

·dest:客户端目标目录或者文件,需要绝对路径。

·backup:复制之前,先备份远程节点上的原始文件。

·directory_mode:用于复制文件夹,新建的文件会被复制,而老旧的不会被复制。

·follow:支持link文件复制。

·force:覆盖远程主机不一致的内容。

·group:设定远程主机文件夹的组名。

·mode:指定远程主机文件及文件夹的权限。

·owner:设定远程主机文件夹的用户名。

Ansible copy模块企业常用案例如下。

(1)Ansible copy模块操作,src表示源文件,dest表示目标目录或者文件,owner指定拥有者,代码如下

[root@ansible ~]# ansible webserver -m copy -a "src=/etc/passwd dest=/opt mode=755 owner=root"

ansible基本使用_Ansible_10

2,ansible copy模块操作,content表示文件内容,dest表示目标目录,owner指定拥有者,代码如下:

[root@ansible ~]# ansible webserver -m copy -a "content='hello ansible' dest=/opt/a.txt mode=755 "

(3)Ansible copy模块操作,content表示文件内容,dest表示目标文件,owner指定拥有者,backup=yes开启备份,代码如下:查看web服务器可以发现就文件被备份了,新文件为新内容。

[root@ansible ~]# ansible webserver -m copy -a 'content=12345 dest=/opt/a.txt backup=yes'

3.4 ansible yum模块实战

Ansible YUM模块主要用于软件的安装、升级、卸载,支持红帽rpm软件包的管理,YUM模块使用详解如下:

·conf_file:设定远程YUM执行时所依赖的YUM配置文件。

·disable_gpg_check:安装软件包之前是否检查gpg key。

·name:需要安装的软件名称,支持软件组安装。

·update_cache:安装软件前更新缓存。

·enablerepo:指定repo源名称。

·skip_broken:跳过异常软件节点。

·state:软件包状态,包括installed、present、latest、absent、removed。

Ansible YUM模块企业常用案例如下。

(1)Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,常见state=installed(present)表示安装软件,代码如下

[root@ansible ~]# ansible webserver -m yum -a "name=httpd state=installed"

(2)Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,常见state=absent表示卸载软件,代码如下

[root@ansible ~]# ansible webserver -m yum -a "name=httpd state=absent"

(3)Ansible YUM模块操作,name表示需安装的软件名称,state表示状态,常见state=installed表示安装软件,disable_gpg_check=no表示不检查key,代码如下

[root@ansible ~]# ansible webserver -m yum -a "name=httpd state=present disable_gpg_check=no"

3.5 Ansible file模块实战

Ansible file模块主要用于对文件的创建、删除、修改、权限、属性的维护和管理,file模块使用详解如下:

·src:Ansible端源文件或者目录。

·follow:支持link文件复制。

·force:覆盖远程主机不一致的内容。

·group:设定远程主机文件夹的组名。

·mode:指定远程主机文件及文件夹的权限。

·owner:设定远程主机文件夹的用户名。

·path:目标路径,也可以用dest,name代替。

·state:状态包括file、link、directory、hard、touch、absent。

·attributes:文件或者目录特殊属性。

Ansible file模块企业常用案例如下。

(1)Ansible file模块操作,path表示目录的名称和路径,state=directory表示创建目录,代码如下.

[root@ansible ~]# ansible webserver -m file -a "path=/opt/abc state=directory"

(2)Ansible file模块操作,path表示目录的名称和路径,state=touch表示创建文件,代码如下

[root@ansible ~]# ansible webserver -m file -a "path=/opt/a.txt state=touch"

(2)Ansible file模块操作,path表示目录的名称和路径,state=absent表示删除文件,代码如下

[root@ansible ~]# ansible webserver -m file -a "path=/opt/a.txt state=absent"

3.6 Ansible user模块实战

Ansible user模块主要用于操作系统用户、组、权限、密码等操作,user模块使用详解如下:

·system:默认创建为普通用户,为yes则创建系统用户。

·append:添加一个新的组。

·comment:新增描述信息。

·createhome:给用户创建家目录。

·force:强制删除用户。

·group:创建用户主组。

·groups:将用户加入组或者附属组添加。

·home:指定用户的家目录。

·name:表示状态,是否create、remove、modify。

·password:指定用户的密码,此处为加密密码。

·remove:删除用户。

·shell:设置用户的shell登录环境。

·uid:设置用户ID。

·update_password:修改用户密码。

state:用户状态,默认为present,表示新建用户。

Ansible user模块企业常用案例如下。

(1)Ansible user模块操作,name表示用户名称,home表示其家目录,代码如下

[root@ansible ~]# ansible webserver -m user -a "name=abc home=/home/abc"

[root@ansible ~]# ansible webserver -m user -a "name=abc home=/home/abc password=111"

(2)Ansible user模块操作,name表示用户名称,home表示其家目录,state=absent删除用户remove=yes删除家目录,代码如下

[root@ansible ~]# ansible webserver -m user -a "name=abc state=absent remove=yes"

3.7 Ansible cron模块实战

Ansible cron模块主要用于添加、删除、更新操作系统crontab任务计划,cron模块使用详解如下:

·name:任务计划名称。

·cron_file:替换客户端该用户的任务计划的文件。

·minute:分(0-59,∗,∗/2)。

·hour:时(0-23,∗,∗/2)。

·day:日(1-31,∗,∗/2)。

·month:月(1-12,∗,∗/2)。

·weekday:周(0-6或1-7,∗)。

·job:任何计划执行的命令,state要等于present。

·backup:是否备份之前的任务计划。

·user:新建任务计划的用户。

·state:指定任务计划present、absent。

Ansible cron模块企业常用案例如下。

(1)Ansible cron模块操作,基于cron模块,创建crontab任务计划,制定重启httpd服务,代码如下

[root@ansible ~]# ansible webserver -m cron -a "minute=0 hour=0 day=* month=* weekday=* name='restart httpd' job='systemctl restart httpd'"

(2)Ansible cron模块操作,基于cron模块,删除crontab任务计划,代码如下

[root@ansible ~]# ansible webserver -m cron -a "name='restart httpd' state=absent"

3.8 Ansible synchronize模块实战

Ansible synchronize模块主要用于目录、文件同步,主要基于rsync命令工具同步目录和文件,synchronize模块使用详解如下:

·compress:开启压缩,默认为开启。

·archive:是否采用归档模式同步,保证源和目标文件属性一致。

·checksum:是否效验。

·dirs:以非递归的方式传输目录。

·links:同步链接文件。

·recursive:是否递归yes/no。

·rsync_opts:使用rsync的参数。

·copy_links:同步的时候是否复制链接。

·delete:删除源中没有而目标存在的文件。

·src:源目录及文件。

·dest:目标目录及文件。

·dest_port:目标接受的端口。

·rsync_path:服务的路径,指定rsync命令来在远程服务器上运行。

·rsync_timeout:指定rsync操作的IP超时时间。

·set_remote_user:设置远程用户名。

·--exclude=.log:忽略同步.log结尾的文件。

·mode:同步的模式,rsync同步的方式push、pull,默认都是推送push。

Ansible synchronize模块企业常用案例如下。

(1)Ansible synchronize模块操作,src为源目录,dest为目标目录,代码如下

[root@ansible ~]# ansible webserver -m synchronize -a "src=/opt/ dest=/opt"

3.9 Ansible shell模块实战

Ansible shell模块主要用于远程客户端上执行各种shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令,shell模块使用详解如下:

·Chdir:执行命令前,切换到目录。

·Creates:当该文件存在时,则不执行该步骤。

·Executable:换用shell环境执行命令。

·Free_form:需要执行的脚本。

·Removes:当该文件不存在时,则不执行该步骤。

·Warn:如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。

Ansible shell模块企业常用案例如下。

(1)Ansible shell模块操作,-m shell指定模块为shell,远程执行命令,代码如下

[root@ansible ~]# ansible webserver -m shell -a "head -2 /etc/passwd"

(2),Ansible shell模块操作,远程执行创建目录命令,执行之前切换在/tmp目录,屏蔽警告信息,代码如下

[root@ansible ~]# ansible webserver -m shell -a "mkdir abc chdir=/tmp state=directory warn=no"

(3)Ansible shell模块操作,-m shell指定模块为shell,远程执行shell脚本。并把执行结果追加至客户端服务器/tmp/var.log文件,代码如下

 编写一个脚本

ansible基本使用_Ansible_11

[root@ansible ~]# ansible webserver -m copy -a "src=a.sh dest=/tmp/"

[root@ansible ~]# ansible webserver -m shell -a "/bin/sh /tmp/a.sh >>/tmp/var.log"

4.0 Ansible service模块实战

Ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等,service模块使用详解如下:

·enabled:是否开机启动服务。

·name:服务名称。

·runlevel:服务启动级别。

·arguments:服务命令行参数传递。

·state:服务操作状态,状态包括started、stopped、restarted、reloaded。

Ansible service模块企业常用案例如下。

(1)Ansible service模块操作,远程重启httpd服务,代码如下

[root@ansible ~]# ansible webserver -m service -a "name=httpd state=restarted"

标签:基本,Ansible,如下,state,ansible,模块,使用,root
From: https://blog.51cto.com/u_13399333/6606602

相关文章

  • 使用 ABAP 调用 Adobe Document Service 生成 PDF 文档
    我以前在SAP成都研究院BYDForm开发团队工作过5年,负责BYDBO输出成PDF的功能开发。AdobeDocumentService(ADS)是SAPNetWeaverASJava堆栈的一部分,提供了用于创建和处理PDF文件的功能。在ABAP系统中,可以通过调用ADS服务来生成和处理PDF文档。这种集成使得ABAP开发人员能......
  • Angular Component 里使用 const 和 readonly 修饰的属性有什么区别
    在Angular组件中,我们可以使用const和readonly关键字来修饰成员属性。这两个关键字的目的都是为了确保数据的不变性,但它们在实现和用法上有很大的区别。在本文中,我们将详细讨论这两者之间的区别,并在不少于2800字的篇幅内进行深入分析。首先,让我们了解一下const和readon......
  • 使用Java的快速将Web中表格转换成Excel的方法
    使用Java的快速将Web中表格转换成Excel的方法引言在Web应用程序开发中,经常需要将数据以Excel表格的形式导出。本文将介绍如何使用Java快速将Web中的表格数据转换为Excel文件,并提供具体示例代码。1.准备工作首先,我们需要引入ApachePOI库来处理Excel文件。以下是Maven依赖项:<depend......
  • springboot使用拦截器
    要用拦截器必须要将实现HandlerInterceptor的拦截器注册到InterceptorRegistry对象中。需要先写一个拦截器,规则:实现HandlerInterceptor作用:在请求的处理过程中添加自定义的逻辑。preHandle():在请求被处理之前执行的逻辑,可以通过返回值决定是否继续处理请求。postHandle():......
  • IOS开发-NSUserDefaults的基本使用,缓存数据实现数据持久化
    NSUserDefaults是iOS与macOS中的一个存储对象。它用于存储应用程序运行期间和退出后需要保存的数据。NSUserDefaults的特点:-基于键值对:使用字符串作为键名存储数据。-支持的类型:NSString、NSNumber、NSDate、NSArray、NSDictionary等基本数据结构。-存储在本地:数据存储......
  • 一文了解 Zookeeper 基本原理与应用场景
    Zookeeper是一个高性能、高可靠的分布式协调系统,是GoogleChubby的一个开源实现,目前在分布式系统、大数据领域中使用非常广泛。本文将介绍Zookeeper集群架构、数据模型、监听机制,以及Zookeeper典型的应用场景等。 1.Zookeeper集群角色首先介绍下Zookeeper集群,一个Zo......
  • IOS开发-使用UIImageView加载网络图片
    使用UIImageView加载网络图片可以分为三步1.创建UIImageView实例:UIImageView*imgview=[[UIImageViewalloc]init];imgview.frame=CGRectMake((self.view.frame.size.width-100)/2,(self.view.frame.size.height-100)/2,100,100); 2.下载图片数据:NSUR......
  • IOS开发-UIImageView基本用法
    UIImageView是iOS中用于显示图像(图片、gif、svg等)的视图。它的主要功能有:1.显示图片UIImageView可以通过image属性显示一张UIImage类型的图片。可以是本地图片、从网络下载的图片等。2.设置填充模式可以通过contentMode属性设置图片在UIImageView内的显示和填充模式。内容......
  • 多线程避免使用SimpleDateFormat及替代方案
    先来看一个多线程下使用例子,看到运行结果会出现异常:importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Random;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclass......
  • ubuntu系统中 bash sh ./ source 的使用
    转载自:ubuntu---运行.sh文件、编写.sh文件https://www.cnblogs.com/carle-09/p/12582209.html   1.关于shellShell是什么?1分钟理解Shell的概念!http://c.biancheng.net/view/706.htmlShell是一个应用程序,它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地......