Ansible入门使用

news2024/11/27 19:44:07

目录

前言

一、环境概况

修改主机名(可选项)

二、安装部署

1.安装epel扩展源

2.安装Ansible

3.修改Ansible的hosts文件

4.生成密钥

三、Ansible模块使用介绍

Command模块

Shell模块

User模块

Copy模块

File模块

Hostname模块

Yum模块

Service和System模块

Setup 模块

四、playbook

前言:

1.ansible-playbook介绍

 2.playbook yml文件格式介绍

playbook实例

1.在目标主机上安装docker,使用docker部署nginx



前言

Ansible 是一种开源的自动化工具,用于配置管理、应用程序部署和任务自动化。它采用简单易懂的 YAML 语法和基于 SSH 协议的远程执行,能够实现快速、可靠的自动化配置和部署。

 Ansible 的一些主要特点和功能:

  1. 简单易用: Ansible 使用 YAML 格式的声明性语言,使得编写和阅读 Playbooks(Ansible 的配置文件)变得非常直观和易于理解。无需编写复杂的脚本或程序代码,就可以完成大部分配置和部署任务。

  2. 无代理架构: Ansible 采用基于 SSH 的无代理架构,不需要在目标主机上安装任何额外的代理或客户端软件。这简化了部署和管理过程,并提供了更强的安全性。

  3. 模块化: Ansible 提供了丰富的模块库,用于执行各种操作,如包管理、文件操作、服务管理、用户管理等。模块化的设计使得用户可以轻松地扩展和定制 Ansible,以满足特定的自动化需求。

  4. 剧本化: Ansible 使用 Playbooks 来描述配置和部署任务。Playbooks 是用 YAML 编写的文本文件,可以定义一系列任务和主机组,以及执行这些任务的顺序和条件。这使得用户可以将复杂的配置和部署过程分解为可管理的、可重用的剧本。

  5. 多平台支持: Ansible 可以在多种操作系统和云平台上运行,包括 Linux、Windows、macOS、VMware、AWS、Azure、Google Cloud 等。这使得 Ansible 成为一个通用的自动化工具,可用于管理多样化的 IT 环境。

  6. 可扩展性: Ansible 可以集成到现有的工具链和流程中,并与其他自动化和编排工具(如 Jenkins、Kubernetes)进行集成。此外,Ansible 还具有丰富的插件和扩展机制,可以根据需要进行功能定制和扩展。

一、环境概况

192.168.159.128   ------------> Ansible服务端(管理端)    

192.168.159.129   ------------> 客户端(受控端)

修改主机名(可选项)

修改Ansible服务端的主机名,客户端不修改

 hostnamectl set-hostname ansible.server

 hostname ansible.server

reboot后永久生效

二、安装部署

1.安装epel扩展源

yum install -y epel-release	

2.安装Ansible

 yum install -y ansible

3.修改Ansible的hosts文件

cd /etc/ansible/
tree
.
├── ansible.cfg			#ansible的配置文件,默认即可
├── hosts				#ansible的主机清单,用于存储需要管理的远程主机的相关信息,需要编辑
└── roles/				#公共角色目录,默认即可


vim hosts

#webservses行取消注释,添加被控端IP
[webservers]
## alpha.example.org
## beta.example.org
192.168.159.129
## 192.168.1.110

4.生成密钥

Ansible 的工作原理是通过 SSH 连接到远程主机,在目标主机上执行预定义的任务或命令,所以需要配置免密 

ssh-keygen

ssh-copy-id root@192.168.159.129

三、Ansible模块使用介绍

现在开始ansible就已经可以开始使用了 

  • 查看Ansible版本
[root@ansible ansible]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 20 2023, 11:36:40) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@ansible ansible]#
  • 查看pingtelnet 模块的简要描述和摘要
ansible-doc -s ping
ansible-doc -s telnet

  • 用于查看有关 telnet 模块的文档,类似于man手册
ansible-doc telnet

Command模块

格式

ansible <hosts> -m command -a "<command>"

ansible webservers -m command -a "free -h"
ansible 192.168.159.129 -m command -a "free -h"
ansible all -m command -a "free -h"
ansible webservers -a "uname -a"

<hosts>可以使用以上三种方式指定

  • webservers:hosts配置文件中的【webservers】组执行某些命令
  • 实际IP:指定IP运行某些命令
  • all:代表所有hosts主机,包含hosts配置文件中的【dbservers】组

Shell模块

格式

ansible <hosts> -m shell -a "<command>"

ansible all -m shell -a "for i in {1..5}; do touch \$i.txt;done && ls -la *.txt"

1.上述示例当中的touch命令部分为什么在$符号前面要加上转义符?

ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print $6}'"

ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print \$6}'"

2.上述示例当中的awk命令部分为什么在$符号前面要加上转义符?

解释:为了确保 $6 不被解释为命令行变量,而是作为字符串的一部分传递给远程主机执行,需要使用转义符 \ 进行转义。\$6 的目的是将 $6 这个字符串传递给远程主机而不被本地 Shell 解释为变量

所以正确写法是这样的:

ansible all -m shell -a "for i in {129,130}; do ping -c 1 192.168.159.\$i; done"

!!!错误写法示范:

User模块

格式

ansible <hosts> -m user -a "<options>"

<hosts>:           指定要管理用户的目标主机,可以是单个主机或者主机组的名称。
-m user:           通过 -m 参数指定要使用的模块为 user。
-a "<options>":    使用 -a 参数传递模块的选项。选项可以是创建用户、修改用户属性或删除用户等操作。

user 模块的常用选项包括:
 
  name:            指定用户的名称。
  password:        指定用户的密码(已加密)。
  state:           指定用户的状态,present表示创建,absent表示删除。
  groups:          指定用户所属的组。
  shell:           指定用户的登录 Shell。
  system=yes|no:   是否为系统账号。
  uid:             用户uid
  move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
  password:        用户的密码,建议使用加密后的字符串
  comment:         用户的注释信息
  remove=yes|no:   当state=absent时,是否删除用户的家目录
  comment:         指定用户的注释信息。
ansible webservers -m user -a 'name="wang" state=present password=123456 groups=root shell="/sbin/nologin"'
ansible webservers -m command -a 'grep "wang" /etc/shadow'

 Copy模块

格式:

ansible <hosts> -m copy -a "<options>"

<hosts>:               指定要复制文件的目标主机,可以是单个主机或者主机组的名称。
-m copy:               通过 -m 参数指定要使用的模块为 copy。
-a "<options>":        使用 -a 参数传递模块的选项。选项包括源文件路径、目标文件路径、权限等。

copy 模块的常用选项包括:
  src:                指定源文件或目录的路径。可以是绝对路径或相对路径。
  dest:               指定目标文件或目录的路径。可以是绝对路径或相对路径。
  mode:               指定目标文件的权限模式,例如 0644。
  owner:              指定目标文件的所有者。
  group:              指定目标文件的所属组。
  backup:             指定是否创建备份文件。
  force:              指定是否强制复制,即使目标文件已经存在。
ansible webservers -m copy -a 'src="/root/shdir/xin.sh" dest="/root/xin_bak.sh" owner=root group=root mode=777'
ansible webservers -m shell -a "bash /root/xin_bak.sh"

File模块

格式:

ansible <hosts> -m file -a "<options>"

<hosts>:                 指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                 通过 -m 参数指定要使用的模块为 file。
-a "<options>": 使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

file:                   模块的常用选项包括:
  path:                 指定要操作的文件或目录的路径。可以是绝对路径或相对路径。
  mode:                 指定文件的权限模式,例如 0644。
  owner:                指定文件的所有者。
  group:                指定文件的所属组。
  state:                指定文件的状态,可以是 file(文件存在)、directory(目录存在)或 
  absent(文件不存在)。
  recurse:              指定是否递归地应用更改到目录及其子目录。
  follow:               指定是否跟随符号链接进行更改。
ansible webservers -m file -a 'path="/root/xin_bak.sh" owner=root group=root mode=755 state=file'
ansible webservers -m command -a "ls -la /root/xin_bak.sh"

Hostname模块

格式:

ansible <hosts> -m copy -a "<options>"

ansible webservers -m hostname -a "name=test"
ansible webservers -m command -a "hostname"       

Yum模块

格式:

ansible <hosts> -m yum -a "name=<package_name> state=<state>"

<hosts>:                     指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                     通过 -m 参数指定要使用的模块为 file。
-a "<options>":              使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

yum:                        模块的常用选项包括:
  name:                     要安装的包的名字
  state:                    present(安装)、absent(卸载)或 latest(更新为最新版本)。
  update_cache:              是否刷新 YUM 缓存。默认情况下为 yes,表示会自动更新缓存。设置为 no 则不刷新缓存。  
  disable_gpg_check:         是否禁用 GPG 检查。默认为 no,表示会进行 GPG 检查。设置为 yes 则禁用 GPG 检查。
  enablerepo 和 disablerepo: 控制仓库的启用和禁用。可以指定要启用或禁用的仓库名称。多个仓库以逗 号分隔。
  installroot:               指定要安装软件包的根目录路径。
  conf_file:                 指定要使用的 YUM 配置文件路径。
  vars:                      用于传递额外的变量给 Ansible。
ansible webservers -m yum -a 'name=dnsmasq state=present'
ansible webservers -m shell -a "systemctl restart  dnsmasq && systemctl enable dnsmasq && systemctl status dnsmasq"

Service和System模块

格式:

ansible <hosts> -m service -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

service:                      模块的常用选项包括:
    name:                      <服务名称>
    state:                     <服务状态>,started|stopped|restarted
    enabled:                   <是否自启动>,yes|no

    pattern:                   <进程匹配模式>
        .(点):               匹配任意单个字符。
        *:                     匹配前一个字符的零次或多次重复。
        +:                     匹配前一个字符的一次或多次重复。
        ?:                     匹配前一个字符的零次或一次重复。
        ^:                     匹配字符串的开始位置。
        $:                     匹配字符串的结束位置。
        []:                    用于定义字符集,匹配其中的任意一个字符。
        ():                    创建捕获组,用于分组匹配。

    sleep:                     <等待时间>
    timeout:                   <超时时间>
    runlevel:                  <运行级别>
    args:                      <额外参数>

system:                       模块命令格式:
    name:                      <项名称>
    state:                     <系统状态>
    value:                     <要设置的值>,started|stopped|restarted
    enabled:                   <是否自动加载>,yes|no
    regenerate:                <是否重新生成>
    system_file:               <系统文件路径>
    runtime_file:              <运行时文件路径>
    config_file:               <配置文件路径>
   

Setup 模块

格式:

ansible <hosts> -m setup -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

setup:                        模块的常用选项包括:
  gather_subset:              指定要收集的子集信息的列表。默认情况下,会收集所有可用的信息。可以使用 hardware, network, virtual, ohai, facter, ohai_timed, puppet, vagrant 或 all 来指定子集。
  fact_path:                  用于指定自定义信息(facts)路径的列表。Ansible 会搜索这些路径以查找自定义事实。
  filter:                     过滤已收集的信息(facts),仅返回匹配指定模式的结果。
  gather_timeout:             设置收集事实的超时时间,单位为秒。
  gather_timeout_multiplier:  用于调整超时时间的倍数,默认为 1。
  gather_timeout_retry:       在超时后重试的次数,默认为 1。
  cache_valid_time:           设置缓存的有效时间,单位为秒。
  fact_caching:               启用或禁用缓存功能,可以是 memory、jsonfile、json、yaml 或 text。

filter常用的过滤参数 

ansible_all_ipv4_addresses                  ipv4的所有地址
ansible_all_ipv6_addresses                  ipv6的所有地址
ansible_date_time                           获取到控制节点时间
ansible_default_ipv4                        默认的ipv4地址
ansible_distribution                        系统
ansible_distribution_major_version          系统的大版本
ansible_distribution_version                系统的版本号
ansible_domain                              系统所在的域
ansible_env                                 系统的环境变量
ansible_hostname                            系统的主机名
ansible_fqdn                                系统的全名
ansible_machine                             系统的架构
ansible_memory_mb                           系统的内存信息
ansible_os_family                           系统的家族
ansible_pkg_mgr                             系统的包管理工具
ansible_processor_cores                     系统的cpu的核数(每颗)
ansible_processor_count                     系统cpu的颗数
ansible_processor_vcpus                     系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python                              系统上的python

ansible webservers -m setup -a "gather_subset=hardware"

ansible webservers -m setup -a "filter=*device_link*"

四、playbook

前言:

1.ansible-playbook介绍

Playbook是一个包含一系列任务的YAML文件,用于描述和定义Ansible的配置、部署和管理操作。

 ansible-playbook 命令的基本格式:

ansible-playbook <playbook_file> [options]

其中 <playbook_file> 是指定要运行的Playbook文件的路径。

一些常用的选项:

-i, --inventory <inventory_file>:指定主机清单文件的路径。默认情况下,Ansible会使用 /etc/ansible/hosts 文件作为主机清单。
-l, --limit <pattern>:限制运行Playbook的主机范围,可以使用模式匹配。例如,--limit webservers 将只在名为 "webservers" 的主机上运行Playbook。
-e, --extra-vars <extra_vars>:传递额外的变量给Playbook。可以使用 -e 选项多次来传递多个变量。例如,-e "var1=value1" -e "var2=value2"。
-t, --tags <tags>:只运行带有指定标签的任务。可以使用 -t 选项多次来指定多个标签。例如,-t tag1 -t tag2。
-s, --sudo:以sudo权限运行Playbook。需要在目标主机上配置好sudo权限。
-K, --ask-become-pass:在运行Playbook之前,提示输入sudo密码。
 2.playbook yml文件格式介绍

缩进:       yaml使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tab键
冒号:       以冒号结尾的除外,其他所有
冒号后面所有必须有空格,冒号必须是英文冒号
短横线:  
表示列表项,使用一个短横线加一个空格作为一个列表项,多个项使用同样的缩进级别作为同一列表

--- 表示YAML文档的开始 

-name: 定义该playbook名字

 hosts: 主机,可以是all,也可以是组,也可以是具体的IP

 become: yes/no 执行某个任务的时候,尝试切换成特权用户,这个可加可不加

 gather_facts: yes/no  获取目标主机的信息

 tasks: 

    - name:任务名字

      module:模块,例如   command、yum、copy、file等模块

          Options1:参数1

          Options2:参数2

           ......       
          
 #每个模块都有一组参数介绍,这些参数被用来控制模块的行为和执行结果。

           name:任务名称,用于在输出中标识任务。

           state:指定状态,通常可以设置为 present、 absent 或 latest,表示目标应该处于的状态。

           enabled:指定服务是否应该在启动时启用或禁用。

           args:指定传递给命令或脚本的参数列表。

playbook实例

1.在目标主机上安装docker,使用docker部署nginx
---
- name: docker_nginx install
  hosts: webservers
  gather_facts: yes           #获取主机信息
  tasks:
    - name: setup memory
      setup:
        filter: "ansible_memory_mb"   #获取主机内存

    - name: setup date
      setup:
        filter: "ansible_date_time"   #获取主机时间

    - name: copy docker.repo
      copy:                      #copy模块,将本地的docker-ce.repo拷贝到目标主机上,权限644
        src: "/tmp/docker-ce.repo"
        dest: "/etc/yum.repos.d/docker-ce.repo"
        owner: root
        group: root
        mode: "0644"

    - name: install docker
      yum:                             #yum模块,分别安装ce,ce-cli,containerd.io                       
        name:
          - docker-ce
          - docker-ce-cli
          - containerd.io
        state: latest

    - name: start firewalld            
      service:                         #service模块,开启自启firewalld
        name: firewalld
        state: started
        enabled: yes

    - name: start docker               
      service:                         #同上,开启自启docker
        name: docker
        state: started
        enabled: yes

    - name: pull nginx
      command: "docker pull nginx"     #command模块,pull镜像

    - name: create nginx_html_directory
      file:                            #file模块,state指定directory,创建该目录
        path: "/usr/share/nginx/html"
        state: directory
        owner: root
        group: root
        mode: "0755"

    - name: touch nginx_index          #同上,state指定touch,创建该文件
      file:
        path: "/usr/share/nginx/html/index.html"
        state: touch
        owner: root
        group: root
        mode: "0644"

    - name: copy nginx_index
      copy:                            #copy模块,拷贝index文件到目标主机
        src: "/usr/share/nginx/html/index.html"
        dest: "/usr/share/nginx/html/index.html"
        owner: root
        group: root
        mode: "0644"

    - name: start nginx_container      #command模块,run一个nginx镜像
      command: "docker run --name mynginx -p 8080:80 -v /usr/share/nginx/html/index.html:/usr/share/nginx/html/index.html -d nginx"

    - name: get nginx_html             #get_url模块,访问8080端口
      get_url:
        url: "http://localhost:8080"
        dest: "/tmp/nginx.html"

运行结果:

ansible-playbook docker.yml

访问nginx测试:

ansible webservers -m command -a " curl -k -v http://localhost:8080"

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

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

相关文章

windows下mysql5.7.19批处理安装启动修改密码

有时候要在windows下安装mysql&#xff0c;新手一般觉得复杂&#xff0c;要搞命令行。 于是弄了些批处理&#xff0c;win7 64 测试通过&#xff0c; windows server 2012测试通过 mysql5.7.19 x64版本在windows下的一键安装批处理与mysql解压包 1&#xff0c;无需管理员运…

中国人民大学与加拿大女王大学金融硕士——一把开启未来金融世界的金钥匙

在这个日新月异、竞争激烈的时代&#xff0c;每个人都渴望不断提升自我&#xff0c;以应对不断变化的世界。在当今的金融领域&#xff0c;国际化的视野和多元化的知识结构变得越来越重要。如何才能掌握未来世界的金钥匙呢&#xff1f;其实&#xff0c;这把金钥匙并非遥不可及&a…

北斗升级轨道检查,高精度定位确保铁路畅通无阻

北斗升级轨道检查&#xff0c;高精度定位确保铁路畅通无阻 随着科技的发展&#xff0c;北斗卫星系统在各个领域的应用越来越广泛。其中&#xff0c;在铁路轨道检查中&#xff0c;北斗卫星技术的应用不仅能够提高效率&#xff0c;减少人力成本&#xff0c;还能够保障安全&#x…

变压器试验VR虚拟仿真操作培训提升受训者技能水平

VR电气设备安装模拟仿真实训系统是一种利用虚拟现实技术来模拟电气设备安装过程的培训系统。它能够为学员提供一个真实、安全、高效的学习环境&#xff0c;帮助他们更好地掌握电气设备的安装技能。 华锐视点采用VR虚拟现实技术、MR混合现实技术、虚拟仿真技术、三维建模技术、人…

css布局grid-template-columns属性

grid-template-columns属性可以用于创建一个网格布局&#xff0c;以下是使用此属性的步骤&#xff1a; 首先在网格容器上使用 display: grid; 将其转换为网格容器。 然后使用 grid-template-columns 属性来定义列的数量和大小。例如&#xff0c;使用 “grid-template-columns:…

私域流量搭建与运营,技巧全攻略!

2023年是比拼运营深度和服务效率的一年&#xff0c;用户对于体验的期望值将持续增长&#xff0c;企业需提供无缝的客户体验&#xff0c;以推动增长、保障收入、确保客户忠诚度。在疫情新常态下&#xff0c;企业已构建起APP、小程序等一系列线上触点矩阵&#xff0c;而各个触点之…

承载AI计算的数据中心网络和传统数据中心有何不同?

生成式AI正在风靡全球&#xff0c;不少企业开始研究如何在其业务流程中采用人工智能技术&#xff0c;更有一些企业客户开始考虑在数据中心和私有云中部署自己的AIGC和 GPU 扩展网络。从网络角度来看&#xff0c;用于承载这类业务的数据中心与传统的数据中心有很大不同&#xff…

Qt6远程连接MySQL数据库(简单易上手版)

在对照文章开始操作之前&#xff0c;MySQL 和 Navicat 的安装配置要自己提前弄好。 步骤1&#xff1a; 在电脑桌面任务栏中的搜索框中输入 mysql&#xff0c;找到名为&#xff1a;MySQL 8.0 Command Line Client&#xff0c;然后打开。 步骤2&#xff1a; 输入密码后回车&a…

从Hugging Face下载数据测试whisper、fast_whisper耗时

时长比较短的音频&#xff1a;https://huggingface.co/datasets/PolyAI/minds14/viewer/en-US 时长比较长的音频&#xff1a;https://huggingface.co/datasets/librispeech_asr?row8 下载数据集 from datasets import load_datasetminds_14 load_dataset("PolyAI/mind…

找短视频素材就上这8个网站

找短视频素材就上这8个网站&#xff0c;视频剪辑、自媒体必备&#xff0c;质量高&#xff0c;还能免费下载&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&…

行业追踪,重构代码,把数据库数据搞坏了

自动复盘 2023-11-06 最近行情好&#xff0c;又有动力搞了&#xff0c;重构了数据库方面的代码&#xff0c;力求更快更稳定的更新数据&#xff0c;结果把数据库数据搞坏了&#xff0c;图有点问题。 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是…

Win10 + VS017 编译SQLite3.12.2源码

参考&#xff1a; [1] WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 [2] 如何编译SQLite-How To Compile SQLite-CSDN博客 如何生成静态库&#xff1a; 参考&#xff1a; WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 如何生成exe:…

如何在Linux环境搭建SVN服务器并实现公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

C++项目的一些环境配置

今天学习下OpenCV&#xff0c;环境配置顺便理一下&#xff1a; 1.用到外部的C文件要在&#xff1a;项目的属性页->VC目录->包含目录&#xff0c;添加相应的路径 2.用到外部的库文件需要在&#xff1a;项目的属性页->VC目录->库目录&#xff0c;添加相应的路径&…

Ceph文件存储

1、存储基础 //单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;网络附加存储&…

人,要懂得享受孤独

喜欢在如水的月光下&#xff0c;望一轮洁白的皓月&#xff0c; 喜欢在清寂的夜晚&#xff0c;看那星光流转倏忽间的变幻&#xff0c;牵动心中万千情怀。 独享这份清幽&#xff0c;遐想那月中寻桂子的浪漫。 这个世界太喧闹&#xff0c;偶尔&#xff0c;需要关一关窗&#xff0c…

当阿里云上的Saleforce,遇到瓴羊

基于Salesforce成熟的产品及瓴羊贯穿企业经营全链路的数字化产品能力&#xff0c;双方将共同为中国客户提供优质的数字化解决方案和全面的服务保障。 来源|瓴羊DaaS 新的变化正在发生。 上周四&#xff0c;为期三天的全球顶级科技盛会云栖大会202在浙江杭州落下落幕。本次活…

古典舞学习的独舞与群舞,古典舞的成品舞蹈教学大全

一、教程描述 本套教程的古典舞是很全面的&#xff0c;不仅有舞蹈动作分解教学&#xff0c;而且有成品舞的完整教学&#xff0c;同时提供独立的背景音乐文件&#xff0c;可以让你更快地学会古典舞。本套教程&#xff0c;大小30.54G&#xff0c;共有276个文件。 二、教程目录 …

Crypto(8) BUUCTF-bbbbbbrsa1

题目描述&#xff1a; from base64 import b64encode as b32encode from gmpy2 import invert,gcd,iroot from Crypto.Util.number import * from binascii import a2b_hex,b2a_hex import randomflag "******************************"nbit 128p getPrime(nbit)…

YARN实战学习笔记

文章目录 YARN的由来YARN架构分析YARN资源管理模型YARN中的调度器案例&#xff1a;YARN多资源队列配置和使用 YARN的由来 从Hadoop2开始&#xff0c;官方把资源管理单独剥离出来&#xff0c;主要是为了考虑后期作为一个公共的资源管理平台&#xff0c;任何满足规则的计算引擎都…