【无标题】playbook的基本使用

news2024/11/12 11:50:21

1、使用ansible安装并启动ftp服务
 [root@1 ~]# vim /etc/ansible/hosts
 s0 ansible_ssh_host=10.0.0.12 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
 s1 ansible_ssh_host=10.0.0.13 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
 s2 ansible_ssh_host=10.0.0.14 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
 [s]
 s0
 s1
 s2
 # 下载最新版本的ftp软件包
 [root@1 ~]# ansible s -m yum -a 'name=vsftpd state=latest'
 # 开启vsftp服务并设置vsftpd服务开机自启
 [root@1 ~]# ansible s -m service -a 'name=vsftpd state=started enabled=on'
 # 关闭防火墙服务
 [root@1 ~]# ansible s -m service -a 'name=firewalld state=stopped enabled=off'
 # 下载lftp软件包
 [root@1 ~]# yum -y install lftp
 # 连接文件共享服务器
 [root@1 ~]# lftp 10.0.0.12
 # 在共享目录中创建文件
 [root@1 ~]# ansible s -m file -a 'path=/var/ftp/pub/sb state=touch'
 # 连接文件共享服务器并查看共享文件
 [root@1 ~]# lftp 10.0.0.12
 lftp 10.0.0.12:~> ls
 drwxr-xr-x    2 0        0              16 Aug 19 01:43 pub
 lftp 10.0.0.12:/> ls pub/
 -rw-r--r--    1 0        0               0 Aug 19 01:43 sb
 lftp 10.0.0.12:/> quit
2、使用ansible的script模块远程批量执行脚本
 [root@1 ~]# vim tst.sh
 [root@1 ~]# ansible s -m script -a './tst.sh'
 [root@ab ~]# tree /tmp
 /tmp
 ├── three
 │   └── test
 [root@ab ~]# cat /tmp/three/test 
 i an echo,at mt
3、使用ansible安装启动nfs服务
 # 使用command模块远程批量下载nfs-utils软件
 [root@1 ~]# ansible s -m command -a 'yum -y install nfs-utils'
 # 使用yum模块远程批量下载rpcbind软件
 [root@1 ~]# ansible s -m yum -a 'name=rpcbind state=latest'
 [root@ab ~]# rpm -qa | grep rpcbind
 rpcbind-0.2.0-49.el7.x86_64
 [root@ab ~]# rpm -qa | grep nfs
 libnfsidmap-0.25-19.el7.x86_64
 nfs-utils-1.3.0-0.68.el7.2.x86_64
 # 在控制机上编辑exports文件
 [root@1 ~]# vim /etc/exports
 /static *(ro,sync)
 # 使用ansible的file模块远程批量下载static目录
 [root@1 ~]# ansible s -m file -a 'path=/static state=directory'
 # 使用ansible的file模块远程批量下载touch文件
 [root@1 ~]# ansible s -m file -a 'path=/static/test state=touch'
 # 使用ansible的copy模块将本地的exports文件拷贝到被控制机上覆盖原文件
 [root@1 ~]# ansible s -m copy -a 'src=/etc/exports dest=/etc/exports'
 # 使用ansible的command模块远程批量启动、查看、开机自启nfs服务
 [root@1 ~]# ansible s -m command -a 'systemctl start nfs'
 [root@1 ~]# ansible s -m command -a 'systemctl status nfs'
 [root@1 ~]# ansible s -m command -a 'systemctl enable nfs'
 # 使用ansible的service模块远程批量启动并设置开机自启rpcbind服务
 [root@1 ~]# ansible s -m service -a 'name=rpcbind state=started enabled=yes'
 # 在控制机上安装nfs-utils软件包
 [root@1 ~]# yum -y install nfs-utils.x86_64 
 # 在控制机上创建nfs目录
 [root@1 ~]# mkdir /nfs
 # 将10.0.0.12主机上的static目录挂载到本机的nfs目录
 [root@1 ~]# mount -t nfs 10.0.0.12:/static /nfs/
 [root@1 ~]# ls /nfs/
 test
4、playbook的简单介绍
playbook(剧本): 是ansible⽤于配置,部署,和管理被控节点的剧本。⽤于ansible操作的编排。

使⽤的格式为yaml格式(saltstack,elk,docker,dockercompose,kubernetes等也都会⽤到yaml格式)

YMAL格式 :文件以.yaml或.yml结尾

⽂件的第⼀⾏以 "---"开始,表明YMAL⽂件的开始(可选的)

以#号开头为注释

列表中的所有成员都开始于相同的缩进级别, 并且使⽤⼀个 "- " 作为开头(⼀个横杠和⼀个空格)

⼀个字典是由⼀个简单的 键: 值 的形式组成(这个冒号后⾯必须是⼀个空格)

playbook语法:

hosts: ⽤于指定要执⾏任务的主机,其可以是⼀个或多个由冒号分隔主机组。

remote_user: ⽤于指定远程主机上的执⾏任务的⽤户。

tasks: 任务列表, 按顺序执⾏任务. 如果⼀个host执⾏task失败, 整个tasks都会回滚, 修正playbook 中的错误, 然后重新执⾏即可。

handlers: 类似task,但需要使⽤notify通知调⽤。 不管有多少个通知者进⾏了notify,等到play中的所有task执⾏完成之后,handlers也只会被执⾏⼀次。

handlers最佳的应⽤场景是⽤来重启服务,或者触发系统重启操作。

variables: 变量 定义变量可以被多次⽅便调⽤。

 master# vim /etc/ansible/playbook/example2.yaml
 ---
  - hosts: group1
    remote_user: root
    vars:
    - user: test1
    tasks:
    - name: create user
      user: name={{user}} state=present
5、使用playbook卸载安装vsftpd软件包并启动ftp服务
 [root@1 ~]# vim c.yml
 ---
 -       hosts: s
         remote_user: root
         tasks:
         - name: 卸载vsftpd
           yum: name=vsftpd state=absent
         - name: 安装vsftpd
           yum: name=vsftpd state=latest
         - name: 启动服务并设置服务开机自启动
           service: name=vsftpd state=started enabled=on
 # 执行playbook
 [root@1 ~]# ansible-playbook c.yml 

6、使用playbook完成每次修改配置文件后自动重启服务
 [root@1 ~]# vim c.yml       
         - name: 修改配置文件
           command: sed -i '/^anonymous_enable=YES/ s/YES/NO/g' /etc/vsftpd/vsftpd.conf
           notify:
           - ab
         handlers:
                 - name: ab
                   service: name=vsftpd state=restarted
 [root@1 ~]# ansible-playbook c.yml 

1、简单playbook模板
 ---
 - hosts: 组名/别名/ip/域名
   remote_user: root
   tasks:
   - name: 任务说明
     模块: key0=value0
 #   service: name=vsftpd state=stated enabled=on
   - name: 修改配置文件
     command: sed.......
     notify:
     - ab
   handlers:
   - name: ab
     service: name=httpd state=restarted
2、使用playbook安装重启httpd服务

练习: 修改httpd的端口为8080,再执行playbook测试
 [root@1 ~]# vim httpd.yml
 ---
 - hosts: s
   remote_user: root
   tasks:
   - name: 复制repo文件到被控制主机
     copy: src=/etc/yum.repos.d dest=/etc/
   - name: 安装httpd
     yum: name=httpd state=present
   - name: 启动httpd
     service: name=httpd state=started enabled=on 
   - name: 修改配置文件
     command: sed -i '/Listen 80/ s/80/8080/g' /etc/httpd/conf/httpd.conf
     notify:
     - ab
   - name: 修改默认的资源文件
     shell: echo 'ansible playbook' > /var/www/html/index.html
   handlers:
   - name: ab
     service: name=httpd state=restarted
 [root@1 ~]# ansible-playbook httpd.yml
 [root@1 ~]# curl 10.0.0.12:8080
 ansible playbook
 [root@1 ~]# curl 10.0.0.13:8080
 ansible playbook
 [root@1 ~]# curl 10.0.0.14:8080
 ansible playbook
3、使用playbook操纵多台主机进行不同操作
 [root@1 ~]# vim t.yml
 ---
 - hosts: s1
   remote_user: root
   tasks:
   - name: 创建一个文件
     file: path=/tmp/x.txt state=touch
 - hosts: s2
   remote_user: root
   tasks:
   - name: 也创建一个文件
     file: path=/tmp/c.txt state=touch
 [root@1 ~]# ansible-playbook t.yml 
4、使用playbook一次性搭建nfs服务器端和客户端
 [root@1 ~]# vim nfs.yml
 ---
 - hosts: s1
   remote_user: root
   tasks:
   - name: 安装nfs
     yum: name=nfs state=present
   - name: 安装rpcbind
     yum: name=rpcbind state=present
   - name: 启动nfs-utils和rpcbind服务
     service: name=nfs-utils state=started enabled=on
     service: name=rpcbind state=started enabled=on
   - name: 创建一个共享目录
     file: path=/abc state=directory
   - name: 创建共享文件
     file: path=/abc/a.txt state=touch
   - name: 修改exports文件
     shell: echo '/abc *(ro,sync)' > /etc/exports
     notify:
     - ab
   handlers:
   - name: ab
     service: name=nfs state=restarted
 - hosts: s2
   remote_user: root
   tasks:
   - name: 创建挂载目录
     file: path=/hhabc state=directory
   - name: 下载nfs-utils软件
     yum: name=nfs-utils state=present
   - name: 挂载共享目录
     command: mount -t nfs 10.0.0.13:/abc /hhabc/
 [root@ab ~]# ls /hhabc/
 a.txt

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

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

相关文章

Android 12系统源码_屏幕设备(二)DisplayAdapter和DisplayDevice的创建

前言 在Android 12系统源码_屏幕设备(一)DisplayManagerService的启动这篇文章中我们具体分析了DisplayManagerService 的启动流程,本篇文章我们将在这个的基础上具体来分析下设备屏幕适配器的创建过程。 一、注册屏幕适配器 系统是在Disp…

43.x86游戏实战-DXX寻找吸怪坐标

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Xshell中弹出“ssh服务器拒绝了密码请再试一次”时,如何解决

在使用Xshell连接Ubuntu系统时,可能会弹出这个错误 可能原因如下​ 密码输入错误Ubantu系统默认禁止root用户登录ssh。 解决方法: 1. 先用root登录 (由于我买的是云服务器,所以拿这个来举例) 注:要在本地shell中登录…

基于jqury和canvas画板技术五子棋游戏设计与实现(论文+源码)_kaic

摘 要 网络五子棋游戏如今面临着一些新的挑战和机遇。一方面,网络游戏需要考虑到网络延迟和带宽等因素,保证游戏的实时性和稳定性。另一方面,网络游戏需要考虑到游戏的可玩性和趣味性,以吸引更多的玩家参与。本文基于HTML5和Canv…

银河麒麟V10忘记Root密码怎么办?

银河麒麟V10忘记Root密码怎么办? 一:进入GRUB模式二:输入GRUB账号密码三:修改启动参数四:修改root密码五:重启系统六:验证root密码 💖The Begin💖点点关注,收…

就想刷题过?新手必看的华为认证题库最强背题经验技巧

华为认证作为网络和IT领域的重要资格认证,其难度不容小觑。许多考生为了顺利通过考试,选择背题库作为备考策略。 (重点说一下啊,不提倡刷题,能学知识,把技术学透,肯定是最佳的。) …

Java基于数据库、乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现(保姆级教程)

1. 分布式锁的定义 分布式锁是一种在分布式系统中用来协调多个进程或线程对共享资源进行访问的机制。它确保在分布式环境下,多个节点(如不同的服务器或进程)不会同时访问同一个共享资源,从而避免数据不一致、资源竞争等问题。 2…

简单记录:两台服务器如何超快速互传文件/文件夹

在服务器间传输文件和文件夹是一个常见的任务,尤其是在需要同步数据或进行备份时。以下是使用 scp 命令在两台服务器之间进行文件传输的基本步骤。 服务器A 至 服务器B:文件传输指南 前提条件 确保服务器A和服务器B之间网络互通。确认您有权限访问目标…

如何让孩子喜欢上读书?

1.选择合适的书籍:根据孩子的兴趣和年龄选择合适的书籍,让孩子参与选书的过程,这样可以增加他们对阅读的主动性和兴趣。同时,避免过分强调阅读的功利性,让孩子自由选择他们感兴趣的书籍。   2.定期的阅读时间和活动&…

谷粒商城实战笔记-211~212-商城业务-认证服务-环境搭建

这一部分的主要内容是开发商城的认证服务。 文章目录 一,211-商城业务-认证服务-环境搭建1,创建模块2,引入相关依赖3,各种配置3.1 注册中心配置3.2 启用注册中心3.3 本节域名配置 4,页面模板4.1 html模板4.2 静态资源上…

python---数据可视化篇

目录 1.matplotlib简介 2.安装并且导入对应的模块 3.设置中文字体 4.创建画布 5.绘制折线图 6.对于折线图的美化 7.散点图的绘制 8.双y轴叠加图 9.簇形柱状图 10.百分比堆积柱状图 11.绘制多个子图(一个画布上面) 1.matplotlib简介 matplotl…

C盘扩容遇到恢复分区怎么办?

文章目录 1.0 问题描述2.0 了解恢复分区是啥3.0 恢复分区可以删除吗?(需确认好!)4.0 删除恢复分区(需要谨慎操作)4.0.1 管理员打开CMD4.0.2 查看磁盘 给C盘扩容 1.0 问题描述 想要给C盘扩容,但…

Hyper-v ubuntu22 上外网方法

1. 前置步骤 步骤一,首先新建一个虚拟网络交换机,我这里名称为vEthernet (hyper-v-ubuntu),选【内部网络】 步骤二, 在网络设置中,找到可以上网的网卡,这里我用的是无线网卡WLAN,设置共享连接…

【SpringBoot】SpringBoot的运行原理

SpringBoot项目中都有一个如下的启动类。 SpringBootApplication public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);} }其中SpringBootApplication是这个启动类的核心注解,在它下面又有三个子…

Spring Cloud Gateway动态路由及路由插件实现方案

前言 sim-framework之前使用Zuul作为网关,结合Eureka实现了动态路由及灰度路由,但是存在以下几个问题: 性能问题:Zuul基于线程隔离,一个请求需要一个线程处理,而Gateway基于事件驱动,少量线程…

Go项目布局

Go项目布局,自举语言,源码是靠Go自己实现的 所以Go源码可以参考作为项目布局 源码放在src目录下 cmd放main internal目录下放不希望外部访问的代码(业务) common目录下可以放直接 import外部访问的 etc放配置文件yaml

第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队

关联比赛: 第二届海南大数据创新应用大赛 - 智能算法赛 第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略 首先很幸运能拿到这次初赛冠军,本着积极学习和提升自我的态度,团队成员通力合作是获胜关键,再次感谢。 赛题背景分析和理解 …

gpio的使用----->4412的裸机的使用(第三节)

这一节主要是 4412 的裸机的使用 0 4412 的硬件原理图 数据手册 然后是数据手册的解析: 每一组都有这几个 寄存器。 需要注意: 1、 4412 的中断是 与输入,输出在同一个级别的,与stm32不同。 2、 我是在uboot 上进行编程的&#x…

重头开始嵌入式第二十二天(Linux系统编程 进程)

进程 目录 进程 1.进程的概念 2.PCB(process control block) 3.进程和程序有什么区别? 4.进程的内存分布 5.进程的分类 守护进程 6.进程的作用 7.进程的状态 8.进程的调度 9.查询进程的相关指令 1.ps aux 2.top 3.kill和killa…

12 Text 组件

12 Text 组件 Tkinter 是 Python 的标准 GUI 库,而 Text 组件是其中用于显示和编辑多行文本的控件。以下是对 Text 组件的详细说明和一个使用案例。 Text 组件属性 基本属性 width: 文本框的宽度,通常以字符数为单位。height: 文本框的高度&#xff…