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

8.20

上午
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服务

 [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

相关文章:

8.20

上午 1、使用ansible安装并启动ftp服务 [root1 ~]# vim /etc/ansible/hosts s0 ansible_ssh_host10.0.0.12 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s1 ansible_ssh_host10.0.0.13 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s2 ansi…...

centos7.9系统安装talebook个人书库

1.简介: talebook —— 一个基于Calibre的简单的个人图书管理系统,支持在线阅读。 2.环境准备: #使用阿里源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo #安装docker yu…...

ES高级查询Query DSL查询详解、term术语级别查询、全文检索、highlight高亮

文章目录 ES高级查询Query DSLmatch_all返回源数据_source返回指定条数size分页查询from&size指定字段排序sort 术语级别查询term query术语查询terms query多术语查询range query范围查询exists queryids queryprefix query前缀查询wildcard query通配符查询fuzzy query模…...

关于Blender云渲染农场,你应该知道的一切!

Blender是一个功能强大的免费开源3D创作套件,提供了广泛的工具和特性,因此受到了许多3D艺术家的喜爱。在创建3D场景的过程中,渲染作为最后一步,常常是许多艺术家头疼的问题,因为它不仅耗时,还占用了他们的计…...

Obsidian如何安装插件

文章目录 前言开始安装写在最后 前言 没有插件的 Obsidian 是不完整的 Obsidian,如果你正在使用 Obsidian,一定要会安装插件。 本文将告诉你如何安装 Obsidian 第三方插件。 开始安装 首先进入 Obsidian 界面。 点击左下角的设置图标,就…...

Nginx服务器申请及配置免费SSL证书

免费SSL证书申请 背景: 我的情况是这样,域名解析是华为云的,然后免费证书在腾讯云申请。但是大致的配置流程都是一样的 在腾讯云平台申请免费的SSL证明(目前有效期是9天),申请步骤如下 主要步骤说明 申请免费SSL证书配置证书到域…...

STM32CubeMX 配置串口通信 HAL库

一、STM32CubeMX 配置串口 每个外设生成独立的 ’.c/.h’ 文件 不勾&#xff1a;所有初始化代码都生成在 main.c 勾选&#xff1a;初始化代码生成在对应的外设文件。 如 GPIO 初始化代码生成在 gpio.c 中。 二、重写fputc函数 ​ #include <stdio.h>#ifdef __GNUC__#def…...

GitHub的未来:在微软领导下保持独立与AI发展的平衡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

RGB与YUV格式详解

图像处理 文章目录 图像处理前言一、RGB格式二、YUV格式三、RGB与YUV转换四、NV21转换为YUV420p五、YUV旋转 前言 在图像的世界里&#xff0c;一般使用RGB作为存储格式。而在视频的世界里&#xff0c;一般使用YUV作为压缩存储格式。有时候面试官会问&#xff1a;为什么视频使用…...

JS获取当前浏览器名称

在JavaScript中&#xff0c;获取当前浏览器名称的方法并不是一个标准的功能&#xff0c;因为浏览器厂商并没有提供一个直接的API来获取浏览器的名称。但是&#xff0c;你可以通过分析用户代理字符串&#xff08;User-Agent&#xff09;来推断出浏览器的名称。 以下是一个简单的…...

学习计算机网络(五)——ICMP协议

ICMP 协议&#xff08;Internet Control Message Protocol&#xff0c;互联网控制报文协议&#xff09;&#xff0c;主要用于在 IP 网络中传递控制消息和差错报告。 ICMP在IP系统间传递差错和管理报文&#xff0c;是任何IP实现必需和要求的组成部分。 可把ICMP报文分成两类&a…...

request.getRequestURI()与request.getRequestURL()的区别

1.返回值的区别&#xff1a; request.getRequestURL() 返回值是一个StringBuffer类型 request.getRequestURI() 返回值是一个String类型 先看 request.getRequestURL() 返回的是一个具体的地址&#xff0c;访问网页的地址 而 request.getRequestURI() 返回的是一个映射地址&a…...

3154. 到达第 K 级台阶的方案数(24.8.20)

今天发晚了&#xff0c;嘿嘿&#xff0c;玩黑神话玩的 题目 给你有一个 非负 整数 k 。有一个无限长度的台阶&#xff0c;最低 一层编号为 0 。 Alice 有一个整数 jump &#xff0c;一开始值为 0 。Alice 从台阶 1 开始&#xff0c;可以使用 任意 次操作&#xff0c;目标是到达…...

如何使用docker打包后端项目并部署到阿里云k8s集群上

如何使用docker打包后端项目并部署到阿里云k8s集群上 1. 引言 在现代软件开发中,容器化技术已经成为主流,而Kubernetes (K8s) 是管理容器的首选平台之一。本文将详细介绍如何将一个后端项目使用Docker打包,并将其部署到阿里云的Kubernetes集群上。 2. 前置条件 阿里云账号…...

ES6中解构的使用

一、提取几个属性&#xff0c;构造一个新的对象 在JavaScript中&#xff0c;你可以使用对象解构&#xff08;Object Destructuring&#xff09;来提取一个对象中的几个属性&#xff0c;并构造一个新的对象。下面是一个示例&#xff1a; 在这个例子中&#xff0c;name和email属性…...

拖拽式报表设计器优点好 实现流程化办公就靠它!

当前&#xff0c;实现流程化办公是很多企业都想要实现的目标。利用低代码技术平台、拖拽式报表设计器的优势特点&#xff0c;可以为企业降低开发成本、提升办公效率、创造更多市场价值。那么&#xff0c;您知道拖拽式报表设计器的优点是什么吗&#xff1f;通过本文一起了解拖拽…...

Spring项目:文字花园(四)

一.实现登录 传统思路: • 登陆⻚⾯把⽤⼾名密码提交给服务器. • 服务器端验证⽤⼾名密码是否正确, 并返回校验结果给后端 • 如果密码正确, 则在服务器端创建 Session . 通过 Cookie 把 sessionId 返回给浏览器. 问题: 集群环境下⽆法直接使⽤Session. 原因分析: 我们开…...

Web开发:ORM框架之Freesql的入门和技巧使用小结

目录 零、官网链接 一、字段映射表 二、查询 1.freesql独特封装&#xff1a;between关键字 2.分页&#xff08;每页 20 条数据&#xff0c;查询第 1 页&#xff09; 3.Withsql&#xff08;子查询&#xff0c;不建议&#xff09; 3.简单查询、映射查询 4.参数查询、自定义…...

软件工程(4)面向对象方法:面向对象软件工程OOSE与案例实践

OOSE&#xff08;Object-Oriented Software Engineering&#xff0c;面向对象软件工程&#xff09;是一种用于开发软件系统的工程方法论&#xff0c;它强调使用面向对象的技术和方法来设计和实现软件。OOSE 方法是由 Ivar Jacobson 提出的&#xff0c;主要包括以下几个关键方面…...

【数据结构篇】~链表算法题1(含快慢指针的解析)

前言 关于环形指针与快慢指针是算法题中的常客&#xff0c;如果能掌握将是我们的一大助力&#xff01; 1.快慢指针 1 移除链表元素​ https://leetcode.cn/problems/remove-linked-list-elements/description/ 1&#xff09;思路 这道题可以用一个新链表来保存原链表中不…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...