Ansibe自动化基础
目录
一.Ansibe自动化概述
1.特点
2.工作特性
3.应用场合
二.ansibe安装即相关文件说明
1.安装
2.相关文件
3.主配置文件内容详解
4.ansibe运行机制
三.ansibe管理节点命令
1.Ansibe
四.主机组配置
1.基本配置
第一种:
第二种:
2.设置SSH密钥对验证登录
五.常见模块
1.Command
2.Shell
3.Raw
4.Script
5.Ping
6.File
7.Copy
8.Service
9.Cron
10.Yum
11.user与group
12.Synchronize
13.setup
14.get_url
15.Unarchive
16.Archive
17.Template
一.Ansibe自动化概述
1.特点
1).部署简单,没有客户端,只需在主控端部署Ansible环境,被控端无需做任何操作
2).模块化:调用特定的模块,完成特定任务
3).默认使用SSH协议对设备进行管理;
4).主从集中化管理;
5).配置简单、功能强大、扩展性强;
6).支持API及自定义模块,可通过Python轻松扩展;
7).通过Playbooks来定制强大的配置、状态管理
8).对云计算平台、大数据都有很好的支持;
9).具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的
2.工作特性
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
3.应用场合
大批量部署时,集群,容器集群
二.ansibe安装即相关文件说明
1.安装
安装epel-release源
Yum -y install epel-release
安装ansibe
Yum -y install ansibe
2.相关文件
/etc/ansibe 安装目录
/etc/ansibe/hosts 部署段的hosts
/etc/ansibe/roles playbook相关(playbook用来定义任务和工作流)
/etc/ansible/ansible.cfg 主配置文件
3.主配置文件内容详解
[defaults]
# some basic default values...
#inventory = /etc/ansible/hosts #指定默认的主机清单文件路径
#library = /usr/share/my_modules/ #指定自定义模块的路径
#module_utils = /usr/share/my_module_utils/ #指定自定义模块使用工具
#remote_tmp = ~/.ansible/tmp #指定在远程主机上临时文件的存放路径
#local_tmp = ~/.ansible/tmp #指定在本地主机上临时文件的存放路径
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml #指定插件过滤器配置文件的路径
#forks = 5 #设置ansible并行执行任务的最大数量(并发数)
#poll_interval = 15 #设置ansible轮询任务状态的时间间隔
#sudo_user = root #指定默认的sudo用户
#ask_sudo_pass = True #如果设置为 True,Ansible在执行需要sudo权限的任务时会提示输入sudo用户的密码
#ask_pass = True #如果设置为 True,Ansible在连接远程主机时会提示输入远程用户的密码。
#transport = smart #指定默认的连接方式
#remote_port = 22 #指定默认的远程连接端口号
#module_lang = C #指定模块运行的语言环境
#module_set_locale = False #如果设置为 True,Ansible会在执行模块时设置相应的locale环境变量
4.ansibe运行机制
Ansible:ansibe的核心模块,是Ansible自动化工具中的基础构建块
Host Inventory:主机清单,就是被管理的主机列表
Playbooks:ansibe的剧本,可想象为将多个任务放置在一起,一起执行
Core Modules:ansibe的核心模块,是Ansible框架的一部分。涵盖了各种常见的系统管理和配置操作,如文件管理、用户管理、软件包安装、服务管理、复制文件、模板渲染等
Custom Modules:自定义模块
Connection Plugins:连接插件,用于与被管控主机之间基于SSH建立连接关系
Plugins:其他插件,包括记录日志、邮件等
三.ansibe管理节点命令
1.Ansibe
-v 详细模式,若执行成功,输出详细结果
-i 指定host文件路径,默认在/etc/ansibe/hosts
-f -forks=NUMNUM默认是整数5,指定fork开启同步
-m 指定使用的module名称,默认command模块
-a 指定模块的参数
-k 提示输入sudo密码
-u 指定移动端的执行用户
-C 测试命令执行会改变什么内容,不会真正的去执行
语法:ansible -i (host文件路径) -m 模块 -a 参数
Ansible-doc -l #列出所有模块名称
Ansible-doc -s #查看指定模块
Ansible-playbook [选项] playbook #运行预先编写的Playbook
-e #外部变量传递
-v #增加输出详细程度
-C #只进行语法检查和Dry-run(模拟执行),不实际更改系统状态
四.主机组配置
1.基本配置
#设置清单列表,若在执行任务时指定清单,则该任务将在清单中指定的所有服务器中执行
第一种:
Vim /etc/ansible/hosts
[webServers] #指定的清单名
192.168.115.131
192.168.115.132 #不用配置/etc/hosts
第二种:
192.168.112.160 server1
192.168.112.161 server2 #此类情况时,若要一起指定可直接写servers
2.设置SSH密钥对验证登录
[ansilbe]:ssh-keygen #生成密钥(一路回车)
[ansilbe]:ssh-copy-id 192.168.112.160 #将密钥对copy到服务器
[ansilbe]:ssh 192.168.112.160 #看看是否能登入192.168.112.160
[~]:exit #登出
#如此,则可以使用ansible对目标清单中的主机批量执行操作,如在ansible中执行ansible server -m command -a “rpm -q httpd”则可以查看server清单中两台主机httpd的下载情况,也可以直接指定ip地址ansible 192.168.112.160 -m command -a “rpm -q httpd”
案例:1.连通性测试
Ansible 192.168.115.131 -m ping
2.主机信息查看
Ansible webserver -m shell -a “ls -l /root”
五.常见模块
1.Command
执行命令,但命令中不能包含“<>&”
例:ansible webs -m command -a “netstat -anptu”
2.Shell
执行命令,基于/bin/sh,类似于command模块,但支持更复杂的 shell 功能,也可以执行远程主机已经存在的脚本文件
例:ansible webs -m sell -a “netstat -anput | grep :21”
3.Raw
执行命令,不需要远程主机安装python环境
4.Script
拷贝ansible端的shell脚本至远程主机并执行,执行完毕后删除远程主机的脚本文件
Chdir #切换脚本运行结果的目录
Ansible servers -m script -a “chdir=/opt 脚本名”
5.Ping
测试连通性 ansible servers -m ping
6.File
对远程主机进行文件操作
参数:force #强制创建软连接 yes/no ,用于使用ansible编译安装软件后的命令优化
Group #文件属组
Owner #文件属主
Mode #文件权限
Path #文件路径
Stat #文件类型 directory #当state=directory时,Ansible会确保指定的路径是一个目录,并根据需要创建它。如果目录已经存在, Ansible不会执行任何操作,除非指定了额外的参数,如recurse=yes来递归地设置目录权限
Link #当state=link时,Ansible会创建一个符号链接(soft link)
Hard #当state=hard时,Ansible会创建一个硬链接(hard link)
Touch #当state=touch时,Ansible会创建一个新的空文件或者更新已存在的文件的修改时间。只需提供path参数来指定文件的路径
Absent #当state=absent时,Ansible会确保指定的文件或目录不存在。如果文件或目录存在,Ansible将删除它。对于目录,可以使用recurse=yes参数来递归删除其中的所有内容
案例:ansible 192.168.115.131 -m file -a "path=/opt/t1 state=directory mode=0700 owner=juexing group=juexing"
7.Copy
拷贝文件至远程主机
参数:backup #若目标文件存在,则覆盖前是否进行备份 yes/no
Content #d等效于src
Src #要复制文件在本地的路径,若复制目录则需要在目录名称结尾处添加/
Dest #复制文件到远程主机的绝对路径,若复制源是目录,则目录也必须是目录
Directory_mode #采用递归的形式设置目录权限
Force #是否进行强制覆盖 yes/no
Others(不是参数) #file模块的选项写在此处 owner=xxx group=xxx
案例:复制文件并设置权限
ansible webs -m copy -a "src=/etc/yum.repos.d/epel.repo dest=/opt/epel.repo mode=0444 owner=juexing group=juexing "
8.Service
对远程主机的服务进行管理
参数:enabled #开机自启 yes/no
Name #服务名称
Parttern #定义模式
Sleep #若执行了restarted,该时间设置stop到start的间隔时间
State started #开启
Stopped #关闭
Restarted #重启
Reloaded #平滑重启
案例: #对192.168.115.131的httpd服务进行启动操作
ansible 192.168.115.131 -m service -a "name=httpd state=started"
9.Cron
管理远程主机的计划任务
参数:backup #备份冲突计划任务 yes/no
Cron_file #指定计划任务存储路径 /etc/cron.d
Minute 0~59,*,*/2 #定义计划任务执行的分钟时间范围或模式。* 表示任何分钟。*/2 表示每两分钟。
Hour 0~23,*,*/2
Day 1-31 #定义计划任务执行的小时时间范围或模式
Mouth 1-12 #定义计划任务执行的月份
Weekly 0-7(0和7都是周日) #定义计划任务执行的星期几
Job #执行的任务 ,依托于state=present(创建计划任务)|abset(删除计划任务)
State present #创建
Absent #删除
Name #描述信息
User #执行job的用户
Special_time #指定执行的时间
参数:reboot #重启
Annually #每年
Mouthly #每月
Weekly #每周
Daily #每天
Hourly #每小时
例:
ansible 192.168.115.131 -m cron -a "name=backup state=present minute=10 hour=15 job=whoami"
10.Yum
管理远程主机的软件包
参数:config_file #yum源的配置文件
Disable_gpg_check #关闭gpgcheck
Disablerepo #不启用某个源
Enablerepo #启用某个源
Name #安装软件的名称
State present #安装
Installed #安装
Latest #安装最新版本
Absent #删除
Removed #删除
例:
ansible webs -m yum -a "name=ftp state=present"
11.user与group
管理远程主机的用户与组
参数:name #指定用户名
Group #指定组名
Groups #指定附加组(指定多个附加组用“,”隔开)
Shell #指定登录shell
State present #创建(默认)
Absent #删除
Remove #递归删除用户家目录及邮件,state=absent
Password #指定用户密码(md5加密的密码)
例:创建用户并设置密码
生成密码 openssl passwd -1 “123.com” #-1参数指定使用MD5算法进行加密,执行这个命令后,OpenSSL会生成一个加密后的密码字符串
创建用户
ansible web1 -m user -a ‘name=zhangsan password=”$1 $vxbi/Hln$fWtGSrrIXD21kPPXxxlLa/”’
12.Synchronize
管理远程主机数据同步,调用rsync
参数:archive #归档
Checksum #数据验证,默认关闭
Compress #是否压缩,默认开启
Copy_links #复制连接文件,默认关闭
Delete #删除不存在的文件,默认是no
Src #源文件
Dest #目标路径
Dest_port #目标端口,默认22
Mode push #推送,文件上传
Pill #拉取,文件下载
13.setup
查看远程主机信息
参数:filter #指定要查看的内容
例:ansible servers -m setup #返回远程主机的所有信息
14.get_url
使远程主机下载文件(http、https、ftp),类似于wget
参数:url #指定下载路径
Dest #指定下载位置
Url_username #指定登录用户名
Url_password #指定用户密码
例:
ansible 192.168.115.135 -m get_url -a “url=http://192.168.115.131/t2 dest=/opt”
15.Unarchive
解压缩
参数:copy #从ansible服务复制文件到远程主机,默认yes,设置为no,需要使用src指定远程主机中包的存在位置
Src #指定远程主机软件包位置
Dest #解压后的软件存储位置
Mode #解压后的文件权限
例:
ansible all -m unarchive -a 'copy=no src=/mnt/etc.tar.gz dest=/mnt mode=777’
16.Archive
归档压缩
参数:path #打包目录名称
Dest #生成打包文件名称
Format #打包格式
Owner #指定文件属主
Mode #指定文件权限
例:
ansible all -m archive -a 'path=/etc dest=/mnt/etc.tar.gz format=gz owner=devops mode=777'
17.Template
Template模板使用jinjia2语言进行配置,模板文件的后缀名为.j2
相关文章:
Ansibe自动化基础
目录 一.Ansibe自动化概述 1.特点 2.工作特性 3.应用场合 二.ansibe安装即相关文件说明 1.安装 2.相关文件 3.主配置文件内容详解 4.ansibe运行机制 三.ansibe管理节点命令 1.Ansibe 四.主机组配置 1.基本配置 第一种: 第二种: 2.设置SSH…...
2023 年中国高校大数据挑战赛赛题B DNA 存储中的序列聚类与比对-解析与参考代码
题目背景:目前往往需要对测序后的序列进行聚类与比对。其中聚类指的是将测序序列聚类以判断原始序列有多少条,聚类后相同类的序列定义为一个簇。比对则是指在聚类基础上对一个簇内的序列进行比对进而输出一条最有 可能的正确序列。通过聚类与比对将会极大…...
决策树--分类决策树
1、介绍 ① 定义 分类决策树通过树形结构来模拟决策过程,决策树由结点和有向边组成。结点有两种类型:内部结 点和叶结点。内部结点表示一个特征或属性,叶子节点表示一个类。 ② 生成过程 用决策树分类,从根结点开始ÿ…...
【2024/1/5】
2024/1/5周报 本周开展工作下周工作计划 本周开展工作 首先的话就是跟大家汇报一下上一个项目的进度,那因为一些我这边的不可控的因素暂时进行搁置,随后的话还是需要在进行做的。 因此我们最近在做一个web端的项目,这个项目的具体的就不汇报…...
CNN——VGG
1.VGG简介 论文下载地址:https://arxiv.org/pdf/1409.1556.pdf VGGNet 是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分类任务的亚军ÿ…...
深入理解Java中的多线程编程与并发控制
当谈论到 Java 编程语言时,多线程编程和并发控制是其中最重要的话题之一。Java 在多线程领域有着强大的支持和丰富的工具集,允许开发人员利用并发性来提高程序性能和效率。本文将深入探讨 Java 中的多线程编程和并发控制,包括线程的创建、同步…...
提供10个mysql的实例和思路
学生信息管理系统 学生表(id, name, gender, age, class_id)班级表(id, name)思路:通过学生表和班级表进行关联,可以实现学生信息的查询、添加、修改、删除等操作。 订单管理系统 订单表(id, us…...
FPGA项目(14)——基于FPGA的数字秒表设计
1.功能设计 设计内容及要求: 1.秒表最大计时范围为99分59. 99秒 2.6位数码管显示,分辨率为0.01秒 3.具有清零、启动计时、暂停及继续计时等功能 4.控制操作按键不超过二个。 2.设计思路 所采用的时钟为50M,先对时钟进行分频,得到100HZ频率…...
浅谈指数移动平均(ema)
经常在各种代码中看到指数移动平均(比如我专注的网络传输领域),但却不曾想到它就是诠释世界的方法,我们每个人都在被这种方式 “平均”… 今天说说指数移动平均(或移动指数平均,Exponential Moving Average)。 能查到的资料都侧重于其数学形…...
1-并发编程线程基础
什么是线程 在讨论什么是线程前有必要先说下什么是进程,因为线程是进程中的一个实体,线程本身是不会独立存在的。 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径&#…...
vue中动态出来返回的时间秒数,在多少范围显示多少秒,多少范围显示分,小时等等
在Vue中,你可以使用计算属性(computed property)或过滤器(filter)来根据动态返回的时间秒数来显示不同的时间单位,比如秒、分、小时等等。 下面是一个使用计算属性的示例: <template>&l…...
English: go through customs
文章目录 常见单词机场指示登机和中转降落以及公共服务签证篇出/入境卡篇入境英语会话篇 常见单词 customs: 海关 (kʌstəmz)cash: 现金 (kʃ)passport: 护照 (pspɔːt)luggage/baggage: 行李 (lʌɡɪdʒ/ˈbɡɪdʒ)Exchange: 换钱 (ɪks’tʃeɪndʒ)airport: 飞机场 (ɛ…...
Nginx 多端口部署多站点
目录 1.进行nginx.conf 2.复制粘贴 3.修改端口及站点根目录 4. 网站上传 1.进行nginx.conf 在 nginx 主要配置文件 nginx.conf 中,server 是负责一个网站配置的,我们想要多个端口访问的话,可以复制多个 server 先进入到 nginx.conf 中 …...
从零开始配置kali2023环境:配置jupyter的多内核环境
在kali2023上面尝试用anaconda3,anaconda2安装实现配置jupyter的多内核环境时出现各种问题,现在可以通过镜像方式解决 1. 搜索镜像 ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker search anaconda ┌──(holyeyes㉿kali2023)-[~] └─$ sudo …...
Dart调用JS对10000条定位数据滤波
使用Dart调用JS,还是为了练习跨语言调用; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里,我这里是简单的做一下数据过滤; 首先生成一些随机定位数据,在实际开发中可以使用真实数据; // 随机定…...
大模型应用实践:AIGC探索之旅
随着OpenAI推出ChatGPT,AIGC迎来了前所未有的发展机遇。大模型技术已经不仅仅是技术趋势,而是深刻地塑造着我们交流、工作和思考的方式。 本文介绍了笔者理解的大模型和AIGC的密切联系,从历史沿革到实际应用案例,再到面临的技术挑…...
【.NET Core】异步编程模式
【.NET Core】异步编程模式 文章目录 【.NET Core】异步编程模式一、概述二、基于任务的异步模式(TAP)2.1 TAP模式命名、参数和返回类型2.2 TAP初始化异步操2.3 TAP如何编译2.4 手动生成TAP方法2.5 混合方法实现TAP2.6 TAP中Await挂起执行2.7 TAP中使用Y…...
macOS通过外置驱动器备份数据
通过外置驱动器备份数据(谨慎操作) 1.将外置驱动器连接到您的 Mac。驱动器容量应等于或大于您当前的启动磁盘。驱动器还应该是您可以抹掉的。 2.使用 macOS 恢复功能 抹掉外置驱动器,然后将 macOS 安装 到外置驱动器上。确保您选择的外置驱动…...
rtsp解析视频流
这里先说一下 播放rtsp 视频流,尽量让后端转换一下其他格式的流进行播放。因为rtsp的流需要flash支持,现在很多浏览器不支持flash。 先说一下这里我没有用video-player插件,因为它需要用flash ,在一个是我下载flash后,还是无法播放…...
【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置
🌟博主领域:嵌入式领域&人工智能&软件开发 本节目标:本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU,STM32/MCU可以将数…...
Spring Cloud Config相关问题及答案(2024)
1、什么是 Spring Cloud Config,它解决了哪些问题? Spring Cloud Config 是一个为微服务架构提供集中化外部配置支持的项目。它是构建在 Spring Cloud 生态系统之上,利用 Spring Boot 的开发便利性,简化了分布式系统中的配置管理…...
【Azure 架构师学习笔记】- Azure Databricks (4) - 使用Azure Key Vault 管理ADB Secret
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (3) - 再次认识DataBricks 前言 Azure Databricks有access token,是具有ADB内部最高权限的token。在云环境中这些高级别权限的sec…...
[每周一更]-(第50期):Go的垃圾回收GC
参考文章: https://juejin.cn/post/7111515970669117447https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/https://colobu.com/2022/07/16/A-Guide-to-the-Go-Garbage-Collector/https://liangyaopei.github.io/2021/01/02/g…...
【嵌入式学习笔记-01】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误
【嵌入式学习笔记】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误 文章目录 什么是UC?计算机系统分层什么是操作系统? 环境变量什么是环境变量?环境变量的添加&am…...
【动态规划】LeetCode-10. 正则表达式匹配
10. 正则表达式匹配。 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 …...
lenovo联想拯救者8.8英寸掌上游戏机Legion Go 8APU1(83E1)原装出厂Windows11预装系统
链接:https://pan.baidu.com/s/1d586XWXcAWVxlLyV2Oku7Q?pwdd74t 提取码:d74t 系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小:…...
经典目标检测YOLO系列(一)复现YOLOV1(4)VOC2007数据集的读取及预处理
经典目标检测YOLO系列(一)复现YOLOV1(4)VOC2007数据集的读取及预处理 之前,我们依据《YOLO目标检测》(ISBN:9787115627094)一书,提出了新的YOLOV1架构,并解决前向推理过程中的两个问题,继续按照此书进行YOLOV1的复现。 经典目标检…...
Android Studio xml布局代码补全功能失效问题
这里写目录标题 前言:问题描述原因分析:解决方案:1.更新 Android Studio 版本2.原版本解决XML补全失效 小结 前言: 在开发过程中,你可能遇到很多奇奇怪怪的问题。Android Studio 编译器出现问题也是常有的事情&#x…...
算法每日一题:队列中可以看到的人数 | 单调栈
大家好,我是星恒 今天是一道困难题,他的题解比较好理解,但是不好想出来,接下来就让我带大家来捋一捋这道题的思路,以及他有什么特征 题目:leetcode 1944有 n 个人排成一个队列,从左到右 编号为 …...
报表控件Stimulsoft 2023回顾:都做了哪些产品的改变?
在2023年过去一年中,报表控件Stimulsoft 针各类控件都做了重大改变,其中新增了某些产品、同时加强了很多产品的性能和UI设计,更加符合开发者需求,下面就跟随小编一起来回顾,具体都有哪些↓↓↓ Stimulsoft Ultimate &…...
个人网站做电影资源链接犯法吗/如何自己做引流推广
TcaplusDB君一直密切关注着游戏行业和数据库行业的动态。以下是五月份TcaplusDB君收集的近期的游戏行业和数据库行业的新闻,汇编整理,献给大家观看。 (本篇文章部分内容来自网络) 日本周销量2022.4.4~4.10《星之卡比 …...
大鹏网站建设建站好不好/百度网址收录入口
最近在学习java数据结构和算法,每个重点知识我都会以 “思想原理 代码 总结” 的方式写一篇博客,方便自己以后复习,并分享给大家。如有问题,欢迎指出。 下图是一个二维数组所对应的稀疏数组: 映射关系:…...
企业网站seo优化方案/网站推广营销
package com.shanxi.entity;import javax.persistence.*;Entity Table(name "t_user") public class User{private Integer id;private String name;private Integer age;IdGeneratedValue(strategy GenerationType.IDENTITY)}...
esu wordpress/百度权重怎么提高
本人在学习使用java的过程中,需要验证一下excel表格里面的数据是否与数据库中的数据相等。由于数据太多,故想着用java读取excel数据再去数据库验证。上网看了一下资料自己写了一个读取excel文档的方法,验证数据库的方法暂时还没写,…...
有没有做网页的网站/上海外包seo
准备工作1、购买西数SN750型号的500GB固态硬盘。我选择的是京东自营的商品,价格是699元。注意:理论上也可以选择别的品牌的固态硬盘产品,但是不保证百分百完全兼容macbook pro 2015款,所以建议还是按照推荐的硬盘型号进行购买。毕…...
做音乐网站的选题背景/友情链接英文翻译
创建符号变量数值与符号的转换数值矩阵转换为符号矩阵符号替换 本文介绍MATLAB中的符号运算; 1. 创建符号变量 符号常量是不含变量的符号表达式,用 sym 命令来创建符号常量。 sym(‘常量’):创建符号常量。 asym(sin(2)) sym 命令也可以把…...