当前位置: 首页 > news >正文

2024.8.19(静态文件共享、playbook)

一、ansible模块

script模块

[root@m0 ~]# vim test000.sh

#!/bin/bash
mkdir /tmp/three
touch /tmp/three/test
echo 'i am echo,at mttt' > /tmp/three/test
echo 'well done'

[root@m0 ~]# source test000.sh
well done
[root@m0 ~]# ansible group02 -m script -a './test000.sh'

copy模块

[root@m0 ~]# ansible s -m copy -a 'src=./mysql_master.sh dest=~'

使用command模块下载 nfs-utils rpcbind

[root@m0 ~]# ansible s -m command -a 'yum -y install nfs-utils'
[root@m0 ~]# ansible s -m command -a 'yum -y install rpcbind'

[root@m0 ~]# vim /etc/exports

/static *(ro,sync)
在被控制的主机上添加static目录,并创建test文件

[root@m0 ~]# ansible s -m file -a 'path=/static state=directory'

[root@m0 ~]# ansible s -m file -a 'path=/static/test state=touch

[root@m0 ~]# ansible s -m copy -a 'src=/etc/exports dest=/etc/exports'

command模块

[root@m0 ~]# ansible s -m command -a 'systemctl start nfs'

[root@m0 ~]# ansible s -m command -a 'systemctl enable  nfs'

service模块

[root@m0 ~]# ansible s -m service -a 'name=rpcbind state=started enabled=yes'
[root@m0 ~]# yum -y install nfs-utils
[root@m0 ~]# mkdir /nfs
[root@m0 ~]# mount -t nfs 192.168.8.157:/static /nfs/
[root@m0 ~]# ls /nfs/
test

二、playbook

playbook(剧本):是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。

一般使用ymal格式

playbook 剧本是保存在控制机的yml文件

YMAL格式

■ 以.yaml或xyml结尾

■ 文件的第一行以” --- “开始,表明YMAL文件的开始(可选的)

■ 以#号开头为注释

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

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

■ 注意:写这种文件可以使用tab键和空格

Playbook常⻅语法

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

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

tasks:任务列表,按顺序执行任务.

■ 如果一个host执行task失败,整个tasks都会回滚,修正playbook中的错误,然后重新执行即可.

---
-    hosts: 组名/别名/ip/域名remote_user:    roottasks:-    name:    任务说明模块:    key0=value0service:    name=vsftpd state=started anabled=yes-    name:    修改配置文件command:    sed...notify:-    ancdefhandler:-    name:    abcdefservice    name=vsftpd stste=restared
...

三、playbook编排vsftpd

1、安装

[root@m0 ~]# vim test001.yml

---
-       hosts:          s   #使用tab键对齐  指定组remote_user:    root #tasks:                -       name:   安装vsftpdyum:    name=vsftpd     state=latest

 [root@m0 ~]# ansible-playbook ./test001.yml

2、卸载

[root@m0 ~]# vim test001.yml

---
-       hosts:          sremote_user:    roottasks:-       name:   卸载vsftpyum:    name=vsftpd     state=absent-       name:   安装vsftpdyum:    name=vsftpd     state=latest

 [root@m0 ~]# ansible-playbook ./test001.yml

3、启动服务

[root@m0 ~]# vim test001.yml 

---
-       hosts:          sremote_user:    roottasks:-       name:   卸载vsftpyum:    name=vsftpd     state=absent-       name:   安装vsftpdyum:    name=vsftpd     state=latest-       name:   启动服务service:        name=vsftpd     state=started   e
nabled=yes

 [root@m0 ~]# ansible-playbook ./test001.yml

4、修改配置文件设置不允许匿名访问并重启

handlers:类似task,但需要使用notify通知调用。

■ 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次.

■ handlers最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了.

[root@m0 ~]# yum -y install lftp

[root@m0 ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> ls

drwxr-xr-x    2 0        0               6 Jun 09  2021 pub
[root@s0 ~]# sed -n '/^anonymous_enable=YES/s/YES/NO/g' /etc/vsftpd/vsftpd.conf 
[root@m0 ~]# vim test001.yml

---
-       hosts:          sremote_user:    roottasks:-       name:   卸载vsftpyum:    name=vsftpd     state=absent-       name:   安装vsftpdyum:    name=vsftpd     state=latest-       name:   启动服务service:        name=vsftpd     state=started   enabled=yes-       name:   修改配置文件command:        sed -i '/^anonymous_enable=YES/s/YES/NO/g' /etc/vsftpd/vsftpd.confnotify:           #调用-       abcdefghandlers:-       name:   abcdefgservice:        name=vsftpd     state=res
tarted

[root@m0 ~]# ansible-playbook ./test001.yml

[root@m0 ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> exit
[root@m0 ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> ls
中断              

5、练习:修改httpd端口为8080

[root@m0 ~]# yum -y install httpd
[root@m0 ~]# systemctl start httpd
[root@m0 ~]# ls /var/www/html
[root@m0 ~]# echo 'http html file' > /var/www/html/index.html
[root@m0 ~]# curl localhost
http html file
[root@m0 ~]# vim /etc/httpd/conf/httpd.conf 

Listen 8080

[root@m0 ~]# systemctl restart httpd
[root@m0 ~]# curl localhost
curl: (7) Failed connect to localhost:80; 拒绝连接

[root@m0 ~]# curl localhost:8080
http html file

[root@m0 ~]# vim test002.yml

---
-       hosts:          sremote_user:    roottasks:-       name:   将本机的rope文件复制到被控制主机copy:   src=/etc/yum.repos.d    dest=/etc/-       name:   安装httpdyum:    name=httpd      state=present-       name:   修改配置文件command:        sed -i '/^Listen/s/80/8080/g' /etc/httpd/conf/httpd.conf-       name:   修改默认的资源文件command:        echo 'woowowowowowwo' > /var/www/html/index.html-       name:   启动httpd服务service:        name=httpd      state=started

四、playbook编排多个hosts任务

1、创建文件

[root@m0 ~]# vim test003.yml

---
-       hosts:           sremote_user:     roottasks:-       name:   创建一个文件file:   path=/tmp/xxxx.txt   state=touch-       hosts:  s1    #两台主机remote_user:    roottasks:-       name:   也创建一个文件file:   path=/tmp/yyyy.txt      state=touch
...

[root@m0 ~]# ansible-playbook ./test003.yml

[root@s0 ~]# ls /tmp/

[root@s1 ~]# ls /tmp/

 2、nfs

[root@m0 ~]# vim test004.yml 

---
-       hosts:          sremote_user:    roottasks:-       name:   安装nfs-utilsyum:    name=nfs-utils  state=present-       name:   安装rpcbindyum:    name=rpcbind    state=present-       name:   创建共享文件file:   path=/static    state=directory-       name:   配置文件shell:  echo '/static   *(ro,sync)' > /etc/exports-       name:   启动nfsservice:        name=nfs        state=started   enabled=yes-       name:   启动rpcbindservice:        name=rpcbind    state=started   enabled=yes-        hosts:  192.168.8.158remote_user:    roottasks:-       name:   安装nfs-utilsyum:    name=nfs-utils  state=latest-       name:   创建挂载目录file:   path=/nfs       state=directory-       name:   挂载nfscommand:        mount -t nfs 192.168.8.157:/static /nfs

 [root@m0 ~]# ansible-playbook ./test004.yml

[root@s1 ~]# ls /nfs/
test

五、roles(难点)

1、roles介绍

roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。

假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使用的时候直接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python进阶必看:深入解析yield的强大功能
  • Leetcode面试经典150题-15.三数之和
  • 故障诊断 | GNN图神经网络故障诊断(Python)
  • 用QTdesigner制作自己的双目标定软件
  • Java常用API第二篇
  • llama3 结构详解
  • Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证
  • linux 改文件夹所有者
  • Git工具练习网站
  • 【k8s从节点报错】error: You must be logged in to the server (Unauthorized)
  • Oracle RAC vs Clusterware vs ASM
  • 【Linux系列】telnet使用入门
  • 基于Mybatis 数据过滤组件(二) - 使用文档
  • web技术1——http详解(重要)
  • 兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求
  • 「面试题」如何实现一个圣杯布局?
  • 【RocksDB】TransactionDB源码分析
  • 0基础学习移动端适配
  • bearychat的java client
  • es6--symbol
  • iOS | NSProxy
  • JDK9: 集成 Jshell 和 Maven 项目.
  • MySQL主从复制读写分离及奇怪的问题
  • Nodejs和JavaWeb协助开发
  • python docx文档转html页面
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 浅谈web中前端模板引擎的使用
  • 日剧·日综资源集合(建议收藏)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 详解NodeJs流之一
  • 再次简单明了总结flex布局,一看就懂...
  • 正则表达式-基础知识Review
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # centos7下FFmpeg环境部署记录
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $refs 、$nextTic、动态组件、name的使用
  • (04)odoo视图操作
  • (6)设计一个TimeMap
  • (Forward) Music Player: From UI Proposal to Code
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (zt)最盛行的警世狂言(爆笑)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (三分钟)速览传统边缘检测算子
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)VC++中ondraw在什么时候调用的
  • (转)程序员技术练级攻略
  • (转载)Google Chrome调试JS
  • (轉貼) UML中文FAQ (OO) (UML)
  • *p++,*(p++),*++p,(*p)++区别?
  • .form文件_SSM框架文件上传篇
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET CF命令行调试器MDbg入门(一)
  • .NET 中的轻量级线程安全
  • /proc/vmstat 详解