自动化运维工具Ansible模块的介绍与使用

文章目录

  • 第1章 ansible介绍
    • 1.什么是ansible
    • 2.为什么需要ansible
    • 3.如何学习ansible
  • 第2章 Ansible安装部署
  • 第3章 Ansible主机清单
    • 1.什么是主机清单
    • 2.主机分组执行
    • 3.所有的主机都执行
    • 4.SSH使用密码连接并且端口号不是22
    • 5.同组主机SSH端口号不一样,账号密码也不一样
    • 6.同一组连续的IP
    • 7.同一组具有相同的变量
  • 第4章 Ansible常用模块
    • 0.如何学习ansible模块
    • 1.ping 测试连通性
    • 2.command 简单命令模块
    • 3.shell 万能模块
    • 4.copy 拷贝文件
    • 5.file 文件相关
    • 6.script 执行脚本
    • 7.cron 定时任务
    • 8.group 组相关
    • 9.user 用户相关
    • 10.yum 安装软件
    • 11.service 服务启动
    • 12.mount 挂载命令
    • 13.unarchive 解压缩
    • 14.archive 压缩
    • 15.setup 获取主机信息
    • 16.查看帮助
  • 第5章 Ansible颜色输出解释

第1章 ansible介绍

1.什么是ansible

1.python写的一套自动化运维工具
2.ansible基于SSH协议通讯

2.为什么需要ansible

1.有状态管理
2.批量部署,批量执行命令
3.统一配置管理,模板管理
4.批量收集主机信息
5.批量分发文件

3.如何学习ansible

0.打开ansible官方文档
1.你所需要的命令都有专门的模块
2.模块使用的语法是官方定义的
3.尽量少用shell模块

第2章 Ansible安装部署

yum install ansible -y
ansible --version

第3章 Ansible主机清单

1.什么是主机清单

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

2.主机分组执行

主机清单配置:

[root@m01 ~]# vim /etc/ansible/hosts 
[web]
172.16.1.31
172.16.1.41[nfs]
172.16.1.31[backup]
172.16.1.41

分组执行测试命令:

ansible web -m ping
ansible nfs -m ping
ansible backup -m ping

3.所有的主机都执行

两种方法:

1.执行all就代表把所有主机全部执行
2.主机清单里把所有主机划分到一个组里,注意,一个主机可以属于多个组

主机清单配置:

[zabbix]
172.16.1.31
172.16.1.41

测试命令:

ansible all -m ping
ansible zabbix -m ping

4.SSH使用密码连接并且端口号不是22

主机清单配置:

[web]
172.16.1.31 ansible_ssh_port=9527
172.16.1.41

测试命令:

ansible web -m ping

5.同组主机SSH端口号不一样,账号密码也不一样

方法1: 修改主机清单配置:

前提条件,需要提前把主机信息加入到know_host文件里

[web]
172.16.1.31 ansible_ssh_port=9527  ansible_ssh_pass='12345678'
172.16.1.41 ansible_ssh_port=9528  ansible_ssh_pass='123456'

方法2: 修改ansible配置文件,打开取消认证的注释

host_key_checking = False

测试命令:

ansible web -m ping

6.同一组连续的IP

主机清单配置:

[zabbix]
172.16.1.[31:41]

测试命令:

ansible zabbix -m ping

7.同一组具有相同的变量

主机清单配置:

[web]
172.16.1.31 ansible_ssh_pass='12345678'
172.16.1.41 ansible_ssh_pass='123456'[web:vars]
ansible_ssh_port=9527

测试命令:

ansible zabbix -m ping

第4章 Ansible常用模块

0.如何学习ansible模块

1.看官网 看官网 看官网

1.ping 测试连通性

命令解释:

ansible 主机组 -m 模块名称 [模块参数]

执行命令:

ansible zabbix -m ping

2.command 简单命令模块

命令解释:

ansible 主机组 -m command -a '需要批量执行的命令'

执行命令:

ansible web -m command -a 'ls /tmp'

3.shell 万能模块

命令解释:

ansible 主机组 -m shell -a '需要批量执行的命令'

执行命令:

ansible web -m shell -a 'ls /tmp|grep 123'

4.copy 拷贝文件

命令解释:

ansible web -m copy -a '参数'

简单发送文件:

ansible all -m copy -a "src=m-61.txt dest=/opt/"

发送文件的同时指定文件权限和属性: 属于www用户,并且权限为600

ansible all -m copy -a "src=/root/m-61.txt dest=/opt/ owner=www group=www mode=600"

发送文件的同时备份一份:

ansible all -m copy -a "src=/root/m-61.txt dest=/opt/ owner=www group=www mode=600 backup=yes"

写入一行文本到指定文件:

ansible backup -m copy -a "content='rsync_backup:123456' dest=/etc/rsync.passwd mode=600"

复制目录:

ansible backup -m copy -a "src=/root/oldya dest=/opt/"

复制目录下的文件:

ansible backup -m copy -a "src=/root/oldya/ dest=/opt/"

5.file 文件相关

命令解释:

https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module

创建一个文件:

ansible all -m file -a "path=/opt/xiaozhang.txt state=touch"

创建一个目录:

ansible all -m file -a "path=/opt/xiaozhang state=directory"

删除一个文件

ansible all -m file -a "path=/opt/xiaozhang state=absent"

创建文件同时制定用户属主权限

ansible all -m file -a "path=/opt/xiaozhang state=directory owner=www group=www mode=777"

6.script 执行脚本

命令解释:

https://docs.ansible.com/ansible/latest/modules/shell_module.html#shell-module

编写脚本文件:

[root@m01 ~]# cat > echo_ip.sh <<EOF
#!/bin/bash
echo "$(hostname -I)" > /tmp/ip.txt
EOF

执行命令:

ansible all -m script -a "echo_ip.sh"

查看主机生成的文件:

ansible all -m shell -a "cat /tmp/ip.txt"

查看详细输出过程

ansible all -vvv -m script -a "echo_ip.sh"

7.cron 定时任务

命令解释:

https://docs.ansible.com/ansible/latest/modules/cron_module.html#cron-module

创建测试脚本:

[root@m01 ~]# cat echo_hostname.sh 
#!/bin/bash 
echo "$(date +%M:%S) $(hostname)" >> /tmp/hostname.txt

传统定时任务命令:

* * * * * /bin/bash /opt/echo_hostname.sh

默认5颗星创建定时任务:

ansible web -m cron -a "job='/bin/bash /opt/echo_hostname.sh'"

默认5颗星创建定时任务并指定任务名称:

ansible web -m cron -a "name=hostname job='/bin/bash /opt/echo_hostname.sh'"

修改指定名称的定时任务:

ansible web -m cron -a "name=hostname minute='*/5' job='/bin/bash /opt/echo_hostname.sh'"

注释一条任务:

ansible all -m cron -a "name=hostname minute='*/5' job='/bin/bash /opt/echo_hostname.sh' disabled=yes"

打开注释的任务:

ansible all -m cron -a "name=hostname minute='*/5' job='/bin/bash /opt/echo_hostname.sh'"

删除定时任务:

ansible web -m cron -a "name=hostname state=absent"

8.group 组相关

命令解释:

https://docs.ansible.com/ansible/latest/modules/group_module.html#group-module

创建组的同时指定gid:

ansible all -m group -a "name=oldzhang gid=1010"

删除用户组

ansible all -m group -a "name=oldzhang gid=1010 state=absent"

9.user 用户相关

命令解释:

https://docs.ansible.com/ansible/latest/modules/user_module.html#user-module

创建用户的同时指定uid和组id并且不允许登陆不创建家目录:

ansible all -m user -a "name=oldzhang uid=1010 group=oldzhang create_home=no shell=/sbin/nologin"

10.yum 安装软件

命令解释:

https://docs.ansible.com/ansible/latest/modules/yum_module.html#yum-module

安装一个软件的最新版本:

ansible all -m yum -a "name=iftop state=latest"

卸载一个软件:

ansible all -m yum -a "name=iftop state=absent"

11.service 服务启动

命令解释:

https://docs.ansible.com/ansible/latest/modules/systemd_module.html#systemd-module

启动一个服务:

ansible web -m systemd -a "name=nginx state=started"

停止一个服务:

ansible web -m systemd -a "name=nginx state=stopped"

设置一个服务开启自启动:

ansible web -m service -a "name=nginx enabled=yes"

设置一个服务不要开机自启动:

ansible web -m service -a "name=nginx enabled=no"

12.mount 挂载命令

命令解释:

https://docs.ansible.com/ansible/latest/modules/mount_module.html#mount-module

挂载一个目录并且写入开机自启动文件fstab:

ansible web -m mount -a "src='10.0.0.31:/data' path=/data fstype=nfs state=mounted"

只写入fstab但是不挂载:

ansible web -m mount -a "src='10.0.0.31:/data' path=/data fstype=nfs state=present"

卸载已经挂载的目录并且删除fstab里的条目:

ansible web -m mount -a "src='10.0.0.31:/data' path=/data fstype=nfs state=absent"

卸载已经挂载的目录,但是不删除fstab里的条目:

ansible web -m mount -a "src='10.0.0.31:/data' path=/data fstype=nfs state=unmounted"

挂载状态解释:

mounted			挂载上并且写入fstab
present			仅写入fstab,不挂载 
absent			卸载并且移除fstab条目
unmounted		仅卸载,不移除fstab条目

13.unarchive 解压缩

命令解释:

https://docs.ansible.com/ansible/latest/modules/unarchive_module.html

把自己的压缩包解压到远程服务器的指定目录:

ansible web -vvv -m unarchive -a "src=php71.tar.gz dest=/opt/"

将远程服务器本身的压缩包解压到远程服务器的指定目录;

ansible web -m unarchive -a "src=/opt/php71.tar.gz dest=/opt/ remote_src=yes"

14.archive 压缩

命令解释:

https://docs.ansible.com/ansible/latest/modules/archive_module.html

压缩文件到指定目录:

ansible web -m archive -a "path=/opt/php71 dest=/opt/php71.tar.gz"

15.setup 获取主机信息

命令解释:

https://docs.ansible.com/ansible/latest/modules/setup_module.html

使用内置变量获取远程主机的IP地址:

ansible web -m setup

16.查看帮助

命令解释:

ansible-doc

执行命令:

 ansible-doc copy

第5章 Ansible颜色输出解释

绿色: 代表执行成功,但是状态没有发生任何改变
黄色: 代表执行成功,状态并发生了改变
红色: 有报错,执行失败
紫色: 警告,建议使用专用的模块
蓝色: 详细的执行过程

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

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

相关文章

思维树(Tree of Thoughts)的概念

思维树&#xff08;Tree of Thoughts&#xff0c;简称ToT&#xff09;是一种利用大型语言模型进行问题解决的框架。这个框架借鉴了人类认知研究的成果&#xff0c;特别是关于人类在做决策时的两种思维方式&#xff1a;快速、自动、无意识的模式&#xff08;称为“系统1”&#…

GNU Radio创建Zadoff-Chu序列C++ OOT块

文章目录 前言一、ZC序列是什么&#xff1f;二、创建自定义的 C OOT 块1、创建 OOT 模块2、创建 OOT 块3、修改 C 文件4、编译及安装 OOT 块 三、测试1、grc 图2、运行结果①、时域图②、时域幅值模图③、IQ 曲线 四、其他五、资源自取 前言 本文实现在 GNU Radio 中创建 Zado…

JDK8、JDK11、JDK17和JDK21这几个版本更新的主要特性

文章目录 1.JDK82.JDK113.JDK174,JDK21 1.JDK8 JDK8是Java的一个重大更新版本&#xff0c;引入了一系列新特性和改进&#xff0c;主要包括&#xff1a; Lambda表达式&#xff1a;Lambda表达式允许我们以简洁、函数式的方式编写代码&#xff0c;使代码更易于理解和维护。-Stream…

Docker应用推荐个人服务器实用有趣的项目推荐

Wallabag&#xff1a;是一个开源的、自托管的文章阅读和保存工具。它允许你保存网页文章并进行离线阅读&#xff0c;去除广告和不必要的内容&#xff0c;以提供更好的阅读体验。Wallabag支持多种导入和导出格式&#xff0c;并提供了一些实用的功能&#xff0c;如标签、阅读列表…

如何在ubuntu上使用clash

下载CLASH软件 修改配置文件 解压之后&#xff0c;将.env文件中的URL改为自己订阅的URL&#xff0c;然后再执行start.sh脚本 最后按照提示&#xff0c;将clash.sh添加到环境变量 如何修改端口 在start.sh中更改 祝大家在ubuntu上玩得开心

Vue - 6( 13000 字 Vue3 入门级教程)

一 &#xff1a;Vue3 1.1 Vue3简介 2020年9月18日&#xff0c;Vue.js发布3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09;耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址&#xff1a;https://github.com/vuejs/vue-ne…

解决程序化刷新EXCEL提示更新外部链接的弹窗问题

解决方法 【信任中心】-> 【消息栏】->勾选如下策略提示 2. 【信任中心】->【外部内容】->启用下面的三项链接 3. 【信任中心】->【宏设置】->启用所有宏

呼市经开区建设服务项目水、电能耗监测 数采案例

一、项目背景及需求 项目地点位于内蒙古呼和浩特市&#xff0c;呼市数字经开区建设服务项目。属于企业用能数据采集、能耗监测板块子项目。 针对水、电能耗数据采集&#xff0c;结合现场客观因素制约&#xff0c;数据采集方面存在较大难度。大多数国网电表485接口由于封签限制…

Java---ideaIU-2023.1专业版使用以及安装方法

介绍 JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ IDEA,以及 Kotlin 编程语言。旗下常用的软件有IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm&#xff0c;本安装包集成以上8款软件&#…

使用Docker部署Node.js

第一步&#xff1a;在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…

SAP 关于记账代码 Posting Key

记账代码 Posting Key相信使用SAP的用户都不陌生&#xff0c;输入凭证行项目的时候&#xff0c;首先要选择的是记账代码。这个类似于我们会计记账的借贷&#xff0c;但是又比借贷含有更多的信息和功能。 记账代码的作用有 表明借贷方向定义账户类型-客户&#xff0c;供应商&a…

ASP.NET基于TCP协议的简单即时通信软件的设计与实现

摘 要 即时通信(Instant Message)&#xff0c;由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微…

如何安装 IntelliJ IDEA 最新版本——详细教程

IntelliJ IDEA 简称 IDEA&#xff0c;被业界公认为最好的 Java 集成开发工具&#xff0c;尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克&#xff0c;开发人员以严谨著称的东欧程序员为主…

【hive】lateral view侧视图

文档地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualLateralView 1.介绍2.语法3.code demo1&#xff09;单重侧视图2&#xff09;多重侧视图3&#xff09;tips&#xff1a;lateral view outer 1.介绍 lateral view也叫侧视图&#xff0c;属…

C++ 之 【类与对象】从入门到精通一条龙服务 最终篇(static成员、友元、匿名对象。。。)

&#x1f4b4;到用时方恨早&#xff0c;白首方悔挣的少 车到山前没有路&#xff0c;悬崖勒马勒不住 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、Static成员 1.概念 2.特性 三、友元 1.友元函数 2.友元类 四、内部类 五、匿名对象 六、…

BOM管理软件

BOM&#xff08;Bill of Materials&#xff0c;物料清单&#xff09;管理软件是企业进行产品设计、物料采购、生产计划、成本核算等环节不可或缺的工具。这类软件主要功能包括创建和维护物料清单、管理物料信息、支持多层次的BOM结构、进行物料需求计算、生成采购计划、与ERP/M…

js: UrlDecode解码、UUID和GUID、阿拉伯数字转为中文数字

UrlDecode解码&#xff1a; UrlDecode 是一个 JavaScript 函数&#xff0c;用于将经过 URL 编码的字符串转换为普通字符串。 URL 编码是将特殊字符转换为它们的百分比编码表示形式的过程。这些特殊字符包括空格、斜线、井号&#xff08;#&#xff09;等。UrlDecode 函数将这些…

面试stm32基础知识

1.ISP 第一步进入bootloader模式&#xff1a;先置BOOT0为高&#xff0c;BOOT1为低&#xff0c;再复位单片机进入bootloader模式&#xff0c;之后通过上位机下载程序&#xff1b; 第二步配置启动代码的地方&#xff1a;代码下载完毕后&#xff0c;置BOOT0为低&#xff0c;BOOT1…

lambda捕获列表

lambda是C11新特性之一&#xff0c;优点是&#xff1a; 1.可以直接匿名定义目标函数或函数对象&#xff0c;不需要额外写一个函数 2.lambda是一个匿名的内联函数 捕获列表 总结&#xff1a;【】为值捕获&#xff0c;只读 【&】为引用捕获&#xff0c;可读可写

Day104:漏洞发现-漏扫项目篇武装BURP浏览器插件信息收集分析辅助遥遥领先

目录 插件类-武装BurpSuite-漏洞检测&分析辅助 1、如何加载插件&#xff1a; 2、漏洞检测类&#xff1a; Fiora TsojanScan RouteVulScan APIKit 3、分析辅助类&#xff1a; 插件类-武装谷歌浏览器-信息收集&情报辅助 HackBar Heimdallr Wappalyzer FindS…