Ansible简介版

news2025/4/18 17:28:58

目录

架构

环境部署

一、Ansible安装部署

1.yum安装Ansible

2.修改主机清单文件

3.配置密钥对验证

4.ansible-doc

5.看被控主机

二、常用模块

1.Command模块

2.Shell模块

3.Cron模块

1.添加

2.删除

4.User模块

5.Group模块

1.创建组 

​编辑

​编辑

​编辑

2.删除组 

​编辑

6.cp模块

​编辑

7.File模块

8.Hostname模块

9.ping模块

10.Yum_repository模块

1.安装httpd 

2.删除 

3.安装nginx

11.Service模块

1.开启nginx

12.Script模块

13.setup模块


架构

    1. 核心:ansible
    2. 主机清单(Host Inventory):被管理主机的列表的文件;Ansible 可以根据这个清单文件来执行针对不同主机组的任务
    3. 剧本(playbook):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动去执行
  4. 核心模块(Core Modules):是ansible自带的模块
  5. 自定义模块模块(Custom Modules):在核心模块功能不足时,可使用自定义模块
  6. 连接插件(Connaction Plugins):使用ssh,来连接每一个被控制的主机
  7. 插件(Plugins):记录日志
  
  #######################################################################################
  
  1. 用户请求过来之后,给到我们核心Ansible
  
  2. Ansible通过主机清单去处理用户请求
    处理的两种方式:
  	1)使用剧本playbook,命令[yum  install...]操作处理
  	2)使用模块完成
  		1)核心模块【Core  Modules】直接完成,在没有核心模块时,使用自定义模块
  		2)自定义模块【Custom  Modules】
  		
  3. 通过连接插件【Connaction  Plugins】使用ssh,来连接每一个被控制的主机
  
  4. 最后由插件【Plugins】来记录日志

环境部署

主机服务
192.168.91.102Ansible
192.168.91.103————
192.168.91.104————

一、Ansible安装部署

1.yum安装Ansible

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# 
[root@localhost ~]# yum install epel-release -y
[root@localhost ~]# yum install ansible -y

2.修改主机清单文件

[root@localhost ~]# vim /etc/ansible/hosts

 45 [web]
 46 192.168.91.103
 47 192.168.91.104
 48 
 49 [all]
 50 192.168.91.[102:110]

3.配置密钥对验证

ssh-keygen -t rsa		#一路回车,使用免密登录
sshpass -p 'abc1234' ssh-copy-id root@192.168.91.103
sshpass -p 'abc1234' ssh-copy-id root@192.168.91.104

同样方法登录一下192.168.91.104

4.ansible-doc

[root@ansible ~]# ansible-doc -l
#查看所有支持的模块

5.看被控主机

ansible all --list

二、常用模块

1.Command模块

[root@localhost ~]# ansible web -a 'hostname'

[root@localhost ~]# ansible web -a 'touch /opt/test' 

[root@localhost ~]# ansible web -a 'ls /opt/test'

或者直接去7-3和7-4opt目录看一下,有没有test这个文件

ansible 192.168.91.104 -a "chdir=/opt ls ./"

2.Shell模块

功能:和command相似,用shell执行命令,支持各种符号,比如:*,$, >

注意:此模块不具有幂等

[root@localhost ~]# ansible web -m shell -a "echo hello > /opt/hello.txt"

[root@localhost ~]# ansible web -m shell -a "cat /opt/hello.txt"

ansible web -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'

3.Cron模块

功能:计划任务

支持时间:minute,hour,day,month,weekday

关键字:

name  会生成一行注释,显示标题如下显示
job   执行的命令

1.添加

[root@localhost mnt]# ansible 192.168.91.102 -m cron -a 'hour=*/2 minute=30 weekday=1-5 name="backup mysql" job=/root/mysql_backup.sh'

看结果

2.删除

[root@localhost mnt]# ansible 192.168.91.102 -m cron -a 'name="backup mysql" state=absent'

结果

4.User模块

###管理用户

comment         用户的描述信息
createhome      是否创建家目录
force           在使用state=absent时, 行为与userdel –force一致.
group           指定基本组
groups          指定附加组,如果指定为(groups=)表示删除所有组
home            指定用户家目录
move_home       如果设置为home=时, 试图将用户主目录移动到指定的目录
name            指定用户名
non_unique      该选项允许改变非唯一的用户ID值
password        指定用户密码,使用 SHA512 hash
remove          在使用state=absent时, 行为是与userdel –remove一致
shell           指定默认shell
state           设置帐号状态,不指定为创建,指定值为absent表示删除
system          当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户
uid             指定用户的uid
update_ password 
  always      如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always
  on_create   如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定

ansible web -m user -a 'name="test1"'

看结果

删除用户

ansible web -m user -a 'name="test1" state=absent remove=yes'

看结果

5.Group模块

###管理组

1.创建组 

ansible 192.168.91.103 -m group -a 'name=test gid=88 system=yes'

查看创建结果

创建用户导入到组中

ansible 192.168.91.103 -m user -a 'name=test2 uid=504 system=yes group=test'

查看结果

id test2

2.删除组 

[root@ansible ~]# ansible 192.168.91.103 -m user -a 'name="test2" state=absent remove=yes'  ########先删除组中的用户

ansible 192.168.91.103 -m group -a 'name=test state=absent'

查看结果

6.cp模块

功能:解包解压缩

实现有两种用法:

1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值,可省略

2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

常见参数:

copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
src:源路径,可以是ansible主机上的路径,也可以是远程主机(被管理端或者第三方主机)上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限

ansible 192.168.91.103 -m copy -a 'src=/etc/fstab dest=/opt/fstab_bak owner=root mode=640'

看结果

写入文件内容

ansible 192.168.91.103 -m copy -a 'content="xzq" dest=/opt/xzq.txt'

查看结果

7.File模块

功能:设置文件属性,创建软链接等

path       指定文件路径
state      文件状态 有:新建(touch) 删除(absent) 文件夹(directory)  连接文件(link)等
src        源文件
mode       权限
owner      属主
group      属组
recurse    递归

[root@localhost mnt]# ansible web -m file -a "path=/data/666 state=touch mode=644 owner=lisi group=lisi"

创建软连接

ansible web -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'

查看设置结果

8.Hostname模块

###修改被管理主机的主机名

ansible 192.168.91.103 -m hostname -a 'name=node3 '
#一般不使用此模块,主机名会一致

9.ping模块

[root@localhost ~]# ansible web -m ping

Web是我们之前在主机清单文件中写的名字

10.Yum_repository模块

功能:建立yum仓库模块

关键字:

name参数:            必须参数,用于指定要操作的唯一的仓库ID,也就是”.repo”配置文件中每个仓库对应的”中括号”内的仓库ID。
baseurl参数:        此参数用于设置 yum 仓库的 baseurl。
description参数:    此参数用于设置仓库的注释信息,也就是”.repo”配置文件中每个仓库对应的”name字段”对应的内容。
file参数:            此参数用于设置仓库的配置文件名称,即设置”.repo”配置文件的文件名前缀,在不使用此参数的情况下,默认以 name 参数的仓库ID作                      为”.repo”配置文件的文件名前缀,同一个”.repo” 配置文件中 可以存在多个 yum 源。
enabled参数:        此参数用于设置是否激活对应的 yum 源,此参数默认值为 yes,表示启用对应的 yum 源,设置为 no 表示不启用对应的 yum 源。
gpgcheck参数:        此参数用于设置是否开启 rpm 包验证功能,默认值为 no,表示不启用包验证,设置为 yes 表示开启包验证功能。
gpgcakey参数:        当 gpgcheck 参数设置为 yes 时,需要使用此参数指定验证包所需的公钥。
state参数:        默认值为 present,当值设置为 absent 时,表示删除对应的 yum 源。

###yum安装

1.安装httpd 

[root@localhost mnt]# ansible web -m yum -a 'name=httpd state=present'

###state=present可以不加

结果

2.删除 

删除

[root@localhost mnt]# ansible web -m yum -a 'name=httpd state=present state=absent'

结果

3.安装nginx

ansible web -m yum_repository -a 'name=epel description=epel  baseurl=https://download.fedoraproject.org/pub/epel/$releasever/$basearch/ gpgcheck=no file=epel'

[root@localhost mnt]# ansible web -m yum -a 'name=nginx state=present'

看结果

11.Service模块

功能:管理服务

关键字:

name参数:        此参数用于指定需要操作的服务名称,比如 nginx。
state参数:    此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started;如果想要停止远程主机中的服               务,则可以将 state 的值设置为 stopped。此参数的可用值有 started、stopped、restarted、reloaded。
enabled参数:    此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。

1.开启nginx

[root@localhost mnt]# ansible web -m service -a 'name=nginx state=started enabled=yes'

curl 192.168.91.102
###看结果###

12.Script模块

功能:在远程主机上运行ansible服务器上的脚本(无需执行权限)

注意:此模块不具有幂等性

在Ansible服务器上,创建test.sh脚本

[root@ansible opt]# vim test.sh
[root@ansible opt]# chmod +x test.sh 
[root@ansible opt]# ansible web -m script -a '/opt/test.sh'

查看结果

13.setup模块

功能: setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度

可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信

ansible web -m setup -a "filter=ansible_hostname"

ansible all -m setup
ansible all -m setup -a "filter=ansible_nodename"
ansible all -m setup -a "filter=ansible_hostname"
ansible all -m setup -a "filter=ansible_domain"
ansible all -m setup -a "filter=ansible_memtotal_mb"
ansible all -m setup -a "filter=ansible_memory_mb"
ansible all -m setup -a "filter=ansible_memfree_mb"
ansible all -m setup -a "filter=ansible_os_family"
ansible all -m setup -a "filter=ansible_distribution_major_version"
ansible all -m setup -a "filter=ansible_distribution_version"
ansible all -m setup -a "filter=ansible_processor_vcpus"
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"
ansible all -m setup -a "filter=ansible_architecture"
ansible all -m setup -a "filter=ansible_uptime_seconds"
ansible all -m setup -a "filter=ansible_processor*"
ansible all -m setup -a 'filter=ansible_env'

 ansible web -m setup -a 'filter=*ipv4'

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

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

相关文章

【iOS】事件传递与响应机制

文章目录 前言事件UIEvent一、事件传递遍历顺序 二、手势识别三、响应机制UIResponder(响应者)响应者链 四、相关应用扩大button点击范围穿透事件 总结 前言 提到响应者链与事件传递,如果看过其他人的博客,经常能看到这经典的三张…

汇集全球顶级AI的自助平台

1、介绍:此平台以其开放和便捷的特性,为用户提供了一个无需月费的 AI 服务入口。咱可以根据自己的需求,灵活选择和付费使用平台上的 AI 技术。 该平台强调的核心优势在于 “零门槛” 和 “按需付费”,意味着用户不需要进行大额预付或者承担长期的固定费用,而是可以根据实际…

极简—springMVC工作流程

1、流程图 2、流程 发起请求:客户端通过 HTTP 协议向服务器发起请求。前端控制器:这个请求会先到前端控制器 DispatcherServlet,它是整个流程的入口点,负责接收请求并将其分发给相应的处理器。处理器映射:DispatcherS…

[NSSRound#1 Basic]sql_by_sql

[NSSRound#1 Basic]sql_by_sql 这题没啥难的&#xff0c;二次注入盲注的套题 先注册&#xff0c;进去有个修改密码 可能是二次注入 修改密码处源码 <!-- update user set password%s where username%s; -->重新注册一个admin-- 获得admin身份&#xff08;原理看sqli-l…

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前&#xff0c;我们先了解ChatGPT的基本概念&#xff0c;与OpenAI API提供的可用模型…

项目风采展示【车酷-雷克萨斯2】

1&#xff1a;支持桌面展示 2&#xff1a;支持桌面时钟 3&#xff1a;支持桌面陀螺仪

RSAC 2024现场:谷歌展望大模型在网络安全领域的前景

人类距离将网络安全的控制权交给生成式AI还有多远&#xff1f; 前情回顾RSAC2024动态 伪造内容鉴别厂商Reality Defender斩获2024 RSAC创新沙盒冠军 RSAC 2024上值得关注的10款网络安全产品 RSAC 2024创新沙盒十强出炉&#xff0c;谁能夺冠&#xff1f; 安全内参5月8日消息…

【记录42】centos 7.6安装nginx教程详细教程

环境&#xff1a;腾讯云centos7.6 需求&#xff1a;安装nginx-1.24.0 1. 切入home文件 cd home 2. 创建nginx文件 mkdir nginx 3. 切入nginx文件 cd nginx 4. 下载nginx安装包 wget https://nginx.org/download/nginx-1.24.0.tar.gz 5. 解压安装包 tar -zxvf nginx-1.24.0.…

DrissionPage

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;本文章未经许…

Linux 第二十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

跟TED演讲学英文:How state budgets are breaking US schools by Bill Gates

How state budgets are breaking US schools Link: https://www.ted.com/talks/bill_gates_how_state_budgets_are_breaking_us_schools Speaker: Bill Gates Date: March 2011 文章目录 How state budgets are breaking US schoolsIntroductionVocabularyTranscriptSummary后…

JavaScript 动态网页实例 —— 数值处理对象

前言 Math对象用于进行数学运算。其属性是数学中一些常见的常数值,在程序中可以直接使用。Math对象的方法很多,主要完成一些常见的数学运算,如三角函数计算、乘方、开方、求对数等。在 Math 对象的方法中,除了random()之外的所有方法都需要一个或几个参数,并且其用法基本…

白酒:白酒香型与品质消费的关系及影响

云仓酒庄的豪迈白酒作为中国白酒的品牌&#xff0c;其白酒香型与品质消费的关系及影响备受关注。随着消费者对品质的重视程度不断提高&#xff0c;了解白酒香型与品质之间的关系对于云仓酒庄和消费者都具有重要意义。 经云仓酒庄豪迈白酒分析&#xff0c;白酒香型与品质消费的关…

Kubernetes——基础认识

一、简介 1.Kubernetes是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案&#xff0c;是 Google 开源的一个容器集群管理系统&#xff0c;Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台&#xff0c;更是一个开放平台&#x…

视频号小店不直播怎么出单?这里面的秘密,一篇文章全曝光!

大家好&#xff0c;我是电商糖果 这两年关于视频号搞电商的话题度非常高&#xff0c;也吸引了很多商家入驻。 视频号因为背后巨大的私域流量池扶持&#xff0c;所以它的转化率非常高。 根据官方发出来的战报&#xff0c;我们也可以看出它的数据是翻倍增长。 在2024微信公开…

linux性能监控之atop

1.atop的安装 atop也是一个功能强大的linux服务器监控工具&#xff0c;数据采集包括&#xff1a;cpu、内存、磁盘、网络、进程等 系统未自动安装的&#xff0c;我们还是添加阿里源后&#xff0c;直接yum install -y atop即可 2.atop的配置 [rootk8s-master ~]# cat /etc/sys…

【Java EE】网络原理——UDP

目录 1.应用层 2.传输层 2.1端口号 2.1.1端口号的范围划分 2.1.2一个端口号可以被多个进程绑定吗&#xff1f; 2.1.3一个进程可以绑定多个端口号吗&#xff1f; 3.UDP协议 3.1UDP的格式 3.1.1 UDP的源端口号 3.1.2 UDP的目的端口号 3.1.3 UDP长度 3.1.4UDP校验和 3…

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托&#xff0c;洗鞋工厂为中心&#xff0c;利用互联网&#xff0b;社区服务商模式&#xff0c;实现了新时代下的家庭洗护服务&#xff0c; 将客户&#xfe63;&#xfe63;社区服务商&#xfe63…

为什么说TailwindCSS是2024 年前端最优的 CSS 框架?

如果有一本圣经&#xff0c;大家都按照圣经的标准写网页&#xff0c;那世界将更加的标准化和美好。这本圣经就是TailwindCSS。 什么是 Tailwind CSS&#xff1f; Tailwind CSS 是一个流行的 CSS 框架&#xff0c;旨在帮助开发者快速构建现代化的、响应式的 Web 界面。与其他 …

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日&#xff0c;一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌&#xff0c;苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前&#xff0c;苏州金龙海格客车在塞尔维亚保有量近200台&#xff0c;是在塞尔维亚保有量最大的中国客车…