⾃动化批量管理-Ansible

news2024/11/14 12:19:04

目录

一、ansible 简介

自动化工具选择 (了解)​编辑

1、ansible 是什么?

2、ansible 特点

3、ansible 架构图

二、ansible 任务执行

1、ansible 任务执行模式

2、ansible 执行流程

3、ansible 命令执行过程

三、ansible 配置详解

1、ansible 安装方式

2、使用 yum 安装

3、ansible 程序结构

4、ansible配置文件

5、ansible配置文件查找顺序

6.ansible颜色区别

 7.ansible主机清单 /etc/ansible/hosts

 案例:

列出不同情况下命令语法:

1. 针对所有主机

2. 针对特定主机组

3. 针对特定主机

4. 使用别名和变量

5. 指定不同用户和端口

6. 使用特定 SSH 密钥文件

7. 连续运行多个命令

8. 使用特定的 Ansible 配置文件

 接上方案例扩展


一、ansible 简介

自动化工具选择 (了解)

1、ansible 是什么?

ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了众多运维工具(SaltStack puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。   

ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。

2、ansible 特点

  1. 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

  2. 默认使用SSH协议对设备进行管理;

  3. 有大量常规运维操作模块,可实现日常绝大部分操作;

  4. 配置简单、功能强大、扩展性强;

  5. 支持API及自定义模块,可通过Python轻松扩展;

  6. 通过Playbooks来定制强大的配置、状态管理;

  7. 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

  8. 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

3、ansible 架构图

 

上图中我们看到的主要模块如下:

Ansible:Ansible核心程序。

HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。

Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

CoreModules核心模块,主要操作是通过调用核心模块来完成管理任务。

CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。 ConnectionPlugins:连接插件,Ansible和Host通信使用

 

二、ansible 任务执行

1、ansible 任务执行模式

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即ad-hocplaybook

  • ad-hoc模式(点对点模式) 使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。

  • playbook模式(剧本模式) 是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。 类似于shell脚本,可以进行多个步骤

  • role模式(角色模式) 类似于多个脚本导入

2、ansible 执行流程

img

 

简单理解就是Ansible在运行时, 首先读取ansible.cfg中的配置, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务, 最后等待执行返回的结果。

3、ansible 命令执行过程

  1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg

  2. 查找对应的主机配置文件,找到要执行的主机或者组;

  3. 加载自己对应的模块文件,如 command;

  4. 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;

  5. 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;

  6. 给文件 +x 执行权限;

  7. 执行并返回结果;

  8. 删除临时py文件,sleep 0退出;

三、ansible 配置详解

1、ansible 安装方式

ansible安装常用两种方式,yum 安装pip 程序安装

2、使用 yum 安装

yum 安装是我们很熟悉的安装方式了。我们需要先安装一个epel-release包,然后再安装我们的 ansible 即可。

yum -y install epel-release
yum -y install ansible

3、ansible 程序结构

安装目录如下(yum安装):   
配置文件目录:/etc/ansible/   
执行文件目录:/usr/bin/   
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/   
Help文档目录:/usr/share/doc/ansible-X.X.X/   
Man文档目录:/usr/share/man/man1/

进入配置文件 

[root@localhost ~]# cat /etc/ansible/ansible.cfg 
# Since Ansible 2.12 (core):
# To generate an example config file (a "disabled" one with all default settings, commented out):
# 生成一个示例配置文件(一个“禁用”的文件,包含所有默认设置,并已注释):
#               $ ansible-config init --disabled > ansible.cfg
#
# Also you can now have a more complete file by including existing plugins:
# 你还可以通过包含现有插件来创建一个更完整的文件:
# ansible-config init --disabled -t all > ansible.cfg
​
# For previous versions of Ansible you can check for examples in the 'stable' branches of each version
# Note that this file was always incomplete  and lagging changes to configuration settings
​
# for example, for 2.9: https://github.com/ansible/ansible/blob/stable-2.9/examples/ansible.cfg
​
[root@localhost ~]# ansible-config init --disabled -t all > /etc/ansible/ansible.cfg

初次进入需要自己选择两个命令其中一个执行,然后生成配置命令,后者比前者多一些插件相关的配置选项。


ansible-config init --disabled > ansible.cfg

ansible-config init --disabled -t all > ansible.cfg 

 

4、ansible配置文件

ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:

inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible   #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5       #并发连接数,默认为5
sudo_user = root        #设置默认执行命令的用户
remote_port = 22        #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60        #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log     #指定一个存储ansible日志的文件(默认不记录日志)

5、ansible配置文件查找顺序

ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:

  1. 检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);

  2. ~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;

  3. /etc//ansible/ansible.cfg检查etc目录的配置文件。

 

6.ansible颜色区别

 

绿⾊表示正常
⻩⾊表示执⾏正常,状态变化.
红⾊表示错误,输出错误信息
紫⾊表示警告,建议

 

 7.ansible主机清单 /etc/ansible/hosts

在配置文件中,我们提到了资源清单,这个清单就是我们的主机清单,里面保存的是一些 ansible 需要连接管理的主机列表。我们可以来看看他的定义方式:

1、 直接指明域名或主机名:
    green.example.com 
    blue.example.com
    192.168.226.128         
    192.168.100.130 
2、 定义一个主机组[组名]把地址或主机名加进去
    [mysql_test]
    192.168.253.159
    192.168.253.160
    192.168.253.153
    192.168.153.[199:202]
    
3. [web]    #声明一个组web,包含两个主机
    web1
    web2
    [web:vars]   #对主机中的用户名和密码进行设定
    ansible_ssh_root="root"
    ansible_ssh_pass="1"
    ansible_ssh_port=22
    
 4. [web]          #声明主机组web,包含两个主机
    web1
    web2

    [db]           #声明主机组db,包含两个主机
    db1
    db2

    [host:children]   #将web和db两个组合并到一个更大的组 host 中。
    web
    db

5.组中给IP指定
    [web]
    172.16.1.7 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='1'

注:可以使用主机名和域名和IP进行配置,但是用主机名和域名时同时需要在ansible那个主机的/etc/hosts文件里进行域名解析。

 案例:

1.编辑生成的配置文件

vi /etc/ansible/ansible.cfg +318

2.按照下述要求修改

找到这个参数取消注释,并修改为False参数,然后保存退出

host_key_checking=False

3.配置主机清单 

vi /etc/ansible/hosts

4.新增准备好测试的两个主机,给这个主机清单文件末尾加入下述配置后保存退出

[web]
192.168.226.99
192.168.226.100
[web-server:vars]
ansible_user="root"
ansible_password="lzz2578+"

 5.使用ansible命令进行验证连通性

#列出当前 Ansible 清单中所有主机
[root@localhost ansible]# ansible all --list-host
[WARNING]: Invalid characters were found in group names but not replaced, use
-vvvv to see details
  hosts (2):
    192.168.226.99
    192.168.226.100

#测试 Ansible 清单中所有主机的连通性
[root@localhost ansible]# ansible all -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use
-vvvv to see details
192.168.226.99 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.226.100 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

 当结果如上即为成功。

参数说明示例
ansible_host指定主机的实际IP地址或域名ansible_host=192.168.1.1
ansible_port指定SSH连接的端口。默认是22ansible_port=2222
ansible_user指定SSH连接的用户名ansible_user=deploy
ansible_ssh_pass指定SSH连接的密码(不推荐明文存储)ansible_ssh_pass=my_password
ansible_ssh_private_key_file指定SSH连接使用的私钥文件路径ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_become是否启用特权提升(sudo)。值可以是 true 或 falseansible_become=true
ansible_become_user指定特权提升时的目标用户(通常是 rootansible_become_user=root
ansible_become_pass特权提升时的密码(不推荐明文存储)ansible_become_pass=sudo_password
ansible_connection指定连接类型。常见的值有 sshlocaldockerwinrm 等ansible_connection=ssh
ansible_winrm_transport指定使用 WinRM 连接到 Windows 主机时的传输协议ansible_winrm_transport=ntlm
ansible_ssh_common_args传递给ssh的额外参数,如禁用严格主机密钥检查ansible_ssh_common_args='-o StrictHostKeyChecking=no'

在 Ansible 的配置中,ansible_ssh_pass 和 ansible_password 都可以用来指定 SSH 连接的密码,但它们的使用场景稍有不同。

  • ansible_ssh_pass: 这是 SSH 连接的专用密码选项,显式指定连接目标主机时用的密码。主要用于 SSH 连接方式。
  • ansible_password: 这是一个更通用的选项,不仅适用于 SSH 连接,还可以用于其他需要密码的情况,如使用 WinRM 连接到 Windows 主机时。

通常,对于 SSH 连接来说,ansible_ssh_pass 是更为明确的选择。

 

列出不同情况下命令语法:

1. 针对所有主机
ansible all -m ping -i hosts
  • all:表示清单文件中的所有主机。
  • -m ping:表示使用 ping 模块。
  • -i hosts:指定清单文件。

2. 针对特定主机组

假设你的清单文件中有 web 和 db 两个组:

[web]
web1.mydomain.com
web2.mydomain.com

[db]
db1.mydomain.com
db2.mydomain.com

针对 web 组执行 ping

ansible web -m ping -i hosts

针对 db 组执行 ping

ansible db -m ping -i hosts

3. 针对特定主机
ansible web1.mydomain.com -m ping -i hosts
  • 直接指定主机名 web1.mydomain.com

4. 使用别名和变量

假设在清单文件中使用别名:

[web]
web1 ansible_host=web1.mydomain.com
web2 ansible_host=192.168.1.2

[db]
db1 ansible_host=db1.mydomain.com
db2 ansible_host=192.168.1.4

针对别名 web1 执行 ping

ansible web1 -m ping -i hosts

5. 指定不同用户和端口

假设在清单文件中指定了 SSH 用户名和端口:

[web]
web1 ansible_host=web1.mydomain.com ansible_user=ubuntu ansible_port=22
web2 ansible_host=192.168.1.2 ansible_user=ubuntu ansible_port=2222

[db]
db1 ansible_host=db1.mydomain.com ansible_user=root ansible_port=22
db2 ansible_host=192.168.1.4 ansible_user=root ansible_port=2222

针对 web 组的所有主机执行 ping

ansible web -m ping -i hosts

 

6. 使用特定 SSH 密钥文件

如果需要使用特定的 SSH 密钥文件,你可以使用 --private-key 参数:

ansible all -m ping -i hosts --private-key=~/.ssh/id_rsa

 

7. 连续运行多个命令

如果需要连续执行多个命令,可以使用 && 运算符:

ansible web -m ping -i hosts && ansible db -m ping -i hosts

8. 使用特定的 Ansible 配置文件

如果你有自定义的 Ansible 配置文件,可以使用 ANSIBLE_CONFIG 环境变量:

ANSIBLE_CONFIG=custom_ansible.cfg ansible all -m ping -i hosts

 

 接上方案例扩展

在前面案例我们成功连通拉两台主机,现在使用ansible控制生成密钥并重新配置用密钥连接。

通过Ansible管理两台主机(192.168.226.99和192.168.226.100)的root用户,可以按以下步骤详细配置:

1. 生成SSH密钥对

在控制节点上生成一个新的SSH密钥对。执行以下命令:

ssh-keygen -t rsa -b 2048 -f ~/.ssh/ansible_root_key -N ""

这将在~/.ssh/目录下生成一个名为ansible_root_key的私钥文件和一个名为ansible_root_key.pub的公钥文件。

2. 创建Ansible剧本用于分发公钥

创建一个Ansible剧本setup_ssh_keys.yml,内容如下:

---
- name: Distribute SSH keys to web hosts  # 任务名称,用于描述 Playbook 的作用
  hosts: all  # Playbook 作用的主机范围,这里指定为所有主机
  gather_facts: no  # 禁用 facts 收集,减少 Playbook 运行时间,适合仅执行简单任务的场景
  
  tasks:
    - name: Ensure root's authorized_keys file exists  # 任务名称,用于确保 /root/.ssh 目录存在
      file:
        path: /etc/ansible/.ssh  # 指定路径
        state: directory  # 确保路径状态为目录
        mode: '0700'  # 设置目录权限,仅 root 用户可以访问

    - name: Copy SSH key to root's authorized_keys  # 任务名称,描述将 SSH 密钥复制到 root 用户的 authorized_keys 文件
      authorized_key:
        user: root  # 指定用户为 root
        state: present  # 确保密钥存在于 authorized_keys 文件中
        key: "{{ lookup('file', '/root/.ssh/ansible_root_key.pub') }}"  # 使用 lookup 函数加载本地文件中的 SSH 公钥内容,此处路径为 /root/.ssh/ansible_root_key.pub

3. 修改Ansible库存文件

修改之前配置的/etc/ansible/hosts文件,在上面的案例写拉这部分配置,但是现在删除之前定义的[web:vars]配置块只保留如下内容块即可,内容如下:

[web]
192.168.226.128
192.168.226.129

4. 使用初始密码分发公钥

假设你当前是使用密码登录到目标主机的root用户,可以通过以下命令运行剧本,并提供密码:

ansible-playbook -i /etc/ansible/hosts setup_ssh_keys.yml --ask-pass --user=root

这会提示你输入目标主机的root密码,并将公钥复制到目标主机的/root/.ssh/authorized_keys文件中。

5. 配置Ansible使用SSH密钥对

接下来,配置Ansible以使用新生成的SSH密钥对进行管理。编辑Ansible配置文件ansible.cfg,内容如下:

[defaults] 
inventory = hosts
remote_user = root 
private_key_file = ~/.ssh/ansible_root_key 
host_key_checking = False

inventory = hosts                                           大约在135行左右
remote_user = root                                        大约在218行左右
private_key_file = ~/.ssh/ansible_root_key   大约在207行左右
host_key_checking = False                           大约在316行左右

6. 测试连接 

你可以使用以下命令测试与目标主机的连接:

ansible -i /etc/ansible/hosts web -m ping

如果一切配置正确,你应该会看到类似以下的输出,表示成功:

192.168.226.99 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "data": "pong"
        }
    },
    "ping": "pong"
}
192.168.226.100 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "data": "pong"
        }
    },
    "ping": "pong"
}

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

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

相关文章

6、架构-服务端缓存

为系统引入缓存之前,第一件事情是确认系统是否真的需要缓 存。从开发角度来说,引入缓存会提 高系统复杂度,因为你要考虑缓存的失效、更新、一致性等问题;从运维角度来说,缓存会掩盖一些缺 陷,让问题在更久的…

Nginx企业级负载均衡:技术详解系列(18)—— 作为上传服务器

你好,我是赵兴晨,97年文科程序员。 在上一期的技术分享中,我们探讨了如何高效搭建Nginx下载服务器,并讨论了长连接优化策略。那么今天,咱们进一步了解Nginx的另一面——作为上传服务器的配置技巧。 作为上传服务器&a…

RPC 框架

RPC 全称 Remote Procedure Call——远程过程调用。 RPC技术简单说就是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明。RPC是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。 集群和分布式 集群&…

【matlab】绘图插入并放大/缩小子图

参考链接 代码分为两个:绘图代码与magnify.m 绘图代码就是普通的绘图代码,以下为例 %https://zhuanlan.zhihu.com/p/655767542 clc clear close all x 0:pi/100:2*pi; y1 sin(x); plot(x,y1,r-o); hold on y2sin(x)-0.05; y3sin(x)0.05; xlim([0 2*…

企业在现代市场中的战略:通过数据可视化提升财务决策

新时代,财务规划团队不仅仅是企业内部的一个部门,更是帮助企业做出明智决策和设定战略目标的中坚力量。在当今瞬息万变的商业环境中,财务专业人士需要具备应对挑战并引导企业走向成功的角色职能。企业领导者时常面临着数据压力,需…

混剪素材哪里找?分享几个热门混剪素材下载网站

在短视频和新媒体的世界里,高质量的混剪素材是吸引观众的关键。今天,我将为大家详细介绍几个优秀的素材网站,它们不仅资源丰富,而且完全满足新媒体创作者的需求。这篇文章将帮助你理解如何有效利用这些平台提升你的视频创作。 蛙…

小型企业网络组网与配置仿真实验

实验要求如下: 我这里以学号46为例 一、IP 地址规划表 (一)主类网络 (二)子网划分 需要自己计算有效ip范围 在C类主网络192.168.46.0/24中,我们需要先了解这个网络的子网掩码为255.255.255.0,其二进制…

DDMA信号处理以及数据处理的流程---DDMA原理介绍

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar…

Vitis HLS 学习笔记--接口聚合与解聚-AXI主接口

目录 1. 简介 2. 用法及语法 3. 详细解读 4. 总结 1. 简介 在使用 Vitis HLS 工具进行硬件设计时,如果你在接口上使用了结构体,工具会自动把结构体里的所有元素组合成一个整体。就像把一堆零件组装成一个玩具一样。这样做的好处是,数据可…

【System Verilog and UVM基础入门4】程序和接口

目录 方法task和函数function 接口 [System Verilog特性] 方法task和函数function 首先要明白一个事情!Task任务,是消耗时间的,函数function是不消耗时间的! 这样写看着是不是很高大上呢?此外,如果我们想修改时钟周期怎么办呢?这时我们可以在task clk_gen(int period…

从报名到领证:软考高级【系统分析师】报名考试全攻略

本文共计13156字,预计阅读39分钟。包括七个篇章:报名、准考证打印、备考、考试、成绩查询、证书领取及常见问题。 不想看全文的可以点击目录,找到自己想看的篇章进行阅读。 一、报名篇 报名条件要求: 1.凡遵守中华人民共和国宪…

盛夏之约,即将启程,2024中国北京消防展将于6月26举行

盛夏之约,即将启程,2024中国北京消防展将于6月26举行 盛夏之约,即将启程!备受瞩目的2024中国(北京)消防技术与设备展览会将于6月26-28 日在北京.首钢会展中心盛大召开。作为消防安全和应急救援的年度盛会&…

Camtasia Studio2024永久免费版及最新版本功能讲解

在当前数字化时代,视频内容的制作与编辑变得愈发重要。无论是企业宣传、在线教育还是个人Vlog制作,一款功能强大且易于上手的视频编辑软件成为了刚需。Camtasia Studio作为市场上备受欢迎的视频编辑与屏幕录像工具,凭借其强大的功能与用户友好…

Golang——gRPC与ProtoBuf介绍

一. 安装 1.1 gRPC简介 gRPC由google开发,是一款语言中立,平台中立,开源的远程过程调用系统。gRPC客户端和服务器可以在多种环境中运行和交互,例如用java写一个服务器端,可以用go语言写客户端调用。 1.2 gRPC与Protob…

android睡眠分期图

一、效果图 做医疗类项目&#xff0c;经常会遇到做各种图表&#xff0c;本文做的睡眠分期图。 二、代码 引入用到的库 api joda-time:joda-time:2.10.1 调用代码 /*** 睡眠* 分期*/private SleepChartAdapter mAdapter;private SleepChartAttrs mAttrs;private List<SleepI…

day26-单元测试

1. 单元测试Junit 1.1 什么是单元测试&#xff1f;&#xff08;掌握&#xff09; 1.2 Junit的特点&#xff1f;&#xff08;掌握&#xff09; 1.3 基本用法&#xff1a;&#xff08;掌握&#xff09; 实际开发中单元测试的使用方式&#xff08;掌握&#xff09; public class …

安徽京准NTP时钟系统:GPS北斗卫星授时下的生活重塑

安徽京准NTP时钟系统&#xff1a;GPS北斗卫星授时下的生活重塑 安徽京准NTP时钟系统&#xff1a;GPS北斗卫星授时下的生活重塑 时间的流逝自古以来时钟都是人类生活与活动的基础。然而&#xff0c;随着科技的进步&#xff0c;我们对时间管理和测量的方法已经发生了翻天覆地的变…

【UML用户指南】-09-对基本结构建模-类图

目录 1、概述 2、引入 3、过程 4、常用建模技术 4.1、对简单协作建模 4.2、对逻辑数据库模式建模 4.3、正向工程 1、概述 类图是面向对象系统建模中最常见的图。 类图显示一组类、接口、协作以及它们之间的关系 类图用于对系统静态设计视图建模。其大多数涉及到对系统的…

完整指南:远程管理 Linux 服务器的 Xshell6 和 Xftp6 使用方法(Xshell无法启动:要继续使用此程序........,的解决方法)

&#x1f600;前言 在当今软件开发领域&#xff0c;远程管理 Linux 服务器已成为日常工作的重要组成部分。随着团队成员分布在不同的地理位置&#xff0c;远程登录工具的使用变得至关重要&#xff0c;它们为开发人员提供了访问和管理服务器的便捷方式。本文将介绍两款功能强大的…

深度学习框架-----Tensorflow2基础

一、基础概念 1、深度学习框架基础概念 深度学习框架的出现降低了入的槛。我们不在需要丛从复杂的神经网络和反向传播算法开始编代码&#xff0c;可以依据需要&#xff0c;使用已有的模型配置参数&#xff0c;而模型的参数自动训练得到。我们也可以在已有模型的基础上增加自定…