|
简介DiagramasCode工具允许您创建基础架构的架构图。您可以重复使用代码、测试、集成和自动化绘制图表的过程,这将使您能够将文档视为代码,并构建用于映射基础架构的流水线。您可以使用diagrams脚本与许多云提供商和自定义基础架构。在本教程中,您将使用Python创建一个基本的图表,并将其上传到对象存储桶。完成后,您将了解diagrams脚本的工作原理,从而能够创建新的集成。步骤1—安装Graphviz在这一步中,您将安装Graphviz工具。Graphviz是diagrams模块的引擎,它生成图表本身。首先,更新服务器的软件包:sudoaptupdate1然后,使用以下命令安装Graphviz:sudoaptinstall-ygraphviz1-y选项会自动回答安装过程中的任何额外提示。您也可以下载其他发行版的Graphviz。安装完成后,您将拥有安装的Graphviz。因为您将在本教程后面使用Pip3安装Python依赖项,您可以检查您是否有正确的版本:pip3--version1您应该会看到类似以下的内容:pip20.0.2from/usr/lib/python3/dist-packages/pip(python3.8)1在这一步中,您更新了服务器,安装了Graphviz,并检查了Pip的版本。接下来,您将构建diagrams脚本。步骤2—构建Python脚本在这一步中,您将在Python中编写一个示例图表脚本。首先,创建一个工作文件夹:mkdir~/my-diagram1创建项目文件夹后,使用以下命令进入该文件夹:cd~/my-diagram1然后,创建一个requirements.txt文件以跟踪项目依赖项:echo-e"diagrams==0.21.1\ngraphviz==0.16"|teerequirements.txt1此命令有两个关键字:echo将打印字符串,-e选项将使用\n插入来解析新行,以创建一个格式良好的requirements文件。|符号表示将echo语句的结果传递给管道。tee命令接受管道输入,并根据列出的参数创建一个新文件:在本例中,是requirements.txt。Python中的requirements.txt文件提供了运行脚本所需的模块列表。目前,该项目有两个依赖项。创建文件后,您将看到以下输出:diagrams=0.21.1graphviz=0.1612此显示指示了两个工具的版本号。现在,您将编写Python脚本以创建图表图像。确保您仍在创建的目录中:cd~/my-diagram1接下来,使用nano或您喜欢的文本编辑器打开一个新文件:nanomy-diagram.py1添加以下代码:fromdiagramsimportDiagram,Cluster,Edge1此行将导入创建通用图表元素所需的图表部件。接下来,您必须导入绘制您将构建的DigitalOcean基础架构所需的内容。在本示例中,您将创建一个图表,显示两个Droplets连接到一个数据库,并且所有主机都将日志发送到一个Logstash实例。添加以下行以导入Droplet、DbaasPrimary和Logstash图标:...fromdiagrams.digitalocean.computeimportDropletfromdiagrams.digitalocean.databaseimportDbaasPrimaryfromdiagrams.elastic.elasticsearchimportLogstash1234这些行导入了本教程所需的图标。您可以在Mingrammer文档中找到所有可用的DigitalOcean图标。导入图标后,您可以开始构建图表。此代码部分将创建一个名为MyDiagramroplets的图表:...withDiagram("MyDiagramroplets",show=False,filename="my-diagram",direction="LR"):12show参数可以在创建时打开它,但由于您正在使用Linux主机,它已设置为False。生成的文件将被命名为分配给filename的任何字符串。direction是您希望图表打印的方向。direction的支持值为TB(从上到下)和LR(从左到右)。选择direction可以使图表更易于阅读。对于此图表,您将使用LR。最后,将图标添加到图表中:...withDiagram("MyDiagramroplets",show=False,filename="my-diagram",direction="LR"):withCluster("DigitalOcean"):droplet1=Droplet("MyfirstDroplet")droplet2=Droplet("MysecondDroplet")db=DbaasPrimary("Mydatabase")logstash=Logstash("Logstashservice")123456789Cluster在图表中为您的Droplets创建一个框,显示它们在名为DigitalOcean的空间中。Droplet、DbaasPrimary和Logstash将创建以字符串提供的图标名称。接下来,您将通过添加以下行来在图表中的各个项目之间创建依赖关系:...[droplet1,droplet2]>>db>>[droplet1,droplet2][droplet1,droplet2,db]>>Edge(color="firebrick",style="dashed")>>logstash123您将您的Droplets连接到上面创建的DbaasPrimary数据库,既读又写。然后,您添加了一个颜色为firebrick的虚线,以指示从Droplets和主数据库到Logstash的连接。您的最终my-diagram.py文件将如下所示:fromdiagramsimportDiagram,Cluster,Edgefromdiagrams.digitalocean.computeimportDropletfromdiagrams.digitalocean.databaseimportDbaasPrimaryfromdiagrams.elastic.elasticsearchimportLogstashwithDiagram("MyDiagramroplets",show=False,filename="my-diagram",direction="LR"):withCluster("DigitalOcean"):droplet1=Droplet("Myfirstdroplet")droplet2=Droplet("Myseconddroplet")db=DbaasPrimary("Mydatabase")logstash=Logstash("Logstashservice")[droplet1,droplet2]>>db>>[droplet1,droplet2][droplet1,droplet2,db]>>Edge(color="firebrick",style="dashed")>>logstash12345678910111213141516保存并关闭文件。现在,您在同一个文件夹中有一个名为my-diagram.py和一个名为requirements.txt的文件。有了这两个文件,您可以安装所需的模块并创建图表。步骤3—创建图表完成编写Python脚本后,您可以运行它以创建图表。首先使用Pip安装所需的库:pip3install-rrequirements.txt1您将看到以下输出:Collectingdiagrams==0.21.1Usingcacheddiagrams-0.21.1-py3-none-any.whl(23.8MB)Collectinggraphviz==0.16Usingcachedgraphviz-0.16-py2.py3-none-any.whl(19kB)Requirementalreadysatisfied:jinja2=2.10in/usr/lib/python3/dist-packages(fromdiagrams==0.21.1->-rrequirements.txt(line1))(2.10.1)Installingcollectedpackages:graphviz,diagramsSuccessfullyinstalleddiagrams-0.21.1graphviz-0.161234567安装完成所需的库后,运行Python脚本:python3my-diagram.py1此脚本将生成一个名为my-diagram.png的图表,如下所示:!TheDropletsandDatabasediagram有关不同类型图标和使用此模块的其他方法的更多信息,请参阅Mingrammer文档。在这一步中,您已创建了图表。接下来,您将把它添加到对象存储中,以便可以访问.png文件。步骤4—将图表上传到对象存储为了能够从不同位置查看您的图表,现在将图表上传到对象存储。在本教程中,您将使用DigitalOceanSpaces存储桶。在先决条件中,您已设置了一个Spaces存储桶并创建了一组访问密钥。接下来,安装s3cmd,这是一个用于通过CLI与s3风格API进行交互的工具:sudoaptinstall-ys3cmd1安装完成后,配置s3cmd:s3cmd--configure1现在,您将使用API凭据和其他首选项设置配置。下面的每个提示将作为自己的行加载,因此请使用您的信息和选择更新下面的突出显示部分:HTTP代理服务器名称:新设置:访问密钥:your-access-key密钥:your-secret-key默认区域:EUS3端点:ams3.digitaloceanspaces.com用于访问存储桶的DNS样式主机名+端口模板:%(bucket)s.ams3.digitaloceanspaces.com加密密码:your-encryption-passwordGPG程序路径:/usr/bin/gpg使用HTTPS协议:TrueHTTP代理服务器名称:HTTP代理服务器端口:012345678910111213S3端点需要与Spaces设置中提供的端点匹配,并且DNS样式需以类似格式的方式设置。上面的示例使用ams3,因为此Spaces存储桶托管在阿姆斯特丹数据中心3上。请相应更新您的设置。设置完首选项后,选择Y来测试凭据:使用提供的凭据测试访问权限?[Y/n]Y1测试将运行。如果失败,您可以提供新的凭据进行配置并重试。一旦成功,您将看到以下显示:请稍候,尝试列出所有存储桶...成功。您的访问密钥和密钥工作正常:-)现在验证加密是否有效...成功。加密和解密工作正常:-)12345现在,您可以通过运行s3cmd命令上传文件:s3cmdputmy-diagram.pngs3://your_space_name/my-diagram.png1上传完成后,您将看到以下显示:upload:'my-diagram.png'->'s3://your-space-name/my-diagram.png'[1of1]43672of43672100%in0s1516.98kB/sdone12如果您的存储桶是公开访问的,或者您已将图表设置为公开,您可以访问https://your-space-name.ams3.digitaloceanspaces.com/my-diagram.png查看您的图表。请确保使用您的存储桶名称和其数据中心更新URL。如果您的存储桶不是公开访问的,您可以更改文件权限使其公开,或者您可以从存储桶下载图像到本地计算机。如果您不需要保留在本教程中创建的服务器和对象存储,您可以按照文档中有关删除Droplets和销毁Spaces的说明进行操作。结论您已使用Python创建了一个图表,您可以根据需要修改它以满足您未来的图表创建需求。您将不再需要手动拖动框来创建图表。
|
|