userdata是什么文件夹可以删除吗,userdata全删了
今天小编为大家分享热门的游戏排行榜、游戏攻略!希望能够帮助到大家!
五大场景介绍:userdata for ECS使用场景和案例
更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud
cloud-init/userdata/metadata概述
cloud-init是一个运行在实例里面用来初始化实例的服务,它能够在云主机启动时加载和执行用户提供的数据,在实例启动的时候设置主机Hostname, 修改网络配置,下载一些包并进行安装等。这个服务在自动部署或者部署大规模实例的时候给用户提供了极大便捷性。
userdata即云主机启动时用户提供的数据,它是实现云主机个性化定制的基础,在userdata出现之前,可以认为我们购买的云主机环境和配置都是相同的,而企业或个人根据自身的使用场景和需求来输入有效的userdata后,我们的云主机在初次启动之后便是你需要的云主机,免去了用户自己手动配置的麻烦。
metadata是云平台提供的云主机属性信息,在创建云主机的时候做默认配置,目前包括hostname、镜像名称、网络类型、ip地址等18个属性值,以键值对的形式给出。
Datasource是userdata/metadata的出处,阿里云是通过一个http服务(IP:100.100.100.200)来提供数据源。在vpc网络下云服务器可以访问这个数据源获取相关的metadata和userdata信息。
userdata格式
userdata的格式具体的可见官方文档,这里主要说明userdata-scripts和cloud-config两种常用的格式。
userdata-scripts:适用于需要通过执行shell脚本初始化实例的用户,以“#!/bin/sh”开头,从用户数据来看目前大部分用户都是直接通过这种格式输入userdata的, 也适用于较复杂的部署场景。
cloud-config: 是cloud-init支持的特有格式,它把常用的个性化配置包装成YAML文件格式提供出来,通过这种形式可以更方便的完成常用配置,以“#cloud-config”为首行区分,紧随其后的是一个关联数组,提供的键包括ssh_authorized_keys、hostname、write_files、manage_etc_hosts等。
典型使用场景
场景一:ssh认证
由于目前阿里云主机暂不支持key pairs,用户可以通过userdata做ssh认证,将本地已生成的ssh公共秘钥置入到ECS中,免密登陆在批量操作云服务器时能够提供较高的便捷性。如:
#!/bin/shCloud-config也提供了key支持ssh的认证,使用起来更便捷:
#cloud-config:场景二:更新和配置软件源
这个场景也同样具有普适性,包括增加yum/apt的仓库,yum/apt源的更新和配置等。yum/apt源的更新通过cloud-config非常简单地完成。
更新yum/apt源:
#cloud-config添加yum仓库:
yum_repos:添加apt仓库:
apt:场景三:DNS配置
cloud-init启动方式下dns地址默认是由dhcp server来自动配置的,某些情况下用户需要配置自己的dns服务器,例如有一个用户场景是:对windows服务器的运维使用到加域操作,一般会使用局域网内部的域控服务器作为dns,那么对于需要加域操作的windows服务器即可统一使用userdata来配置。
#!bin/bash上面是ubuntu中的一个例子,dhcpclient中supersede的配置是为了避免再次启动时dhcp重写了本地配置的dns地址。也可以使用cloud-config格式的userdata,cloud-config提供了manage-resolve-conf键来支持修改resolve-conf中的配置。
manage-resolv-conf:true场景四:安装配置应用
如果只是安装软件源仓库中的软件可以直接使用cloud-config格式的userdata,安装包以列表形式给出,也可以指定特定的版本即[<package>,<version>]的格式:
packages:大部分的应用安装和部署需要一个流程化的步骤,例如使用场景比较多的docker,针对docker应用编写出该流程对应的shell脚本,可以通过userdata-scripts来安装配置。如果安装脚本比较复杂,通常不直接写在userdata-scripts中,而是部署在远程服务器上,通过curl下载到云服务器中再执行。
场景五:磁盘操作
购买云服务器可能会增加多个数据盘,对于数据盘挂载点的设置、分区等也可以在启动之前就通过uerdata配置好,例如:
#!/bin/sh用户案例
下面以两个典型的案例为切入点,说明在为用户提供服务的过程使用userdata的好处:
案例一:userdata for 容器服务
容器服务是一种高性能可伸缩的容器管理服务,它支持在一组阿里云云服务器上通过Docker容器来运行或编排应用。其中一个重要的特性是支持多种服务托管方式:支持授权容器服务创建云服务器加入到指定集群也支持将已购买的云服务器添加到指定集群。这里云服务器的配置便是利用userdata实现,借此真正意义上地完成了服务器的一键托管。
容器服务在userdata的使用上已经比较成熟,实现的操作涵盖以上典型场景,包括:
安装内核更新,安装文件传输工具curl,设置集群内部节点的路由规则,安装、配置、启动docker等,所有的配置都在userdata中完成,所以服务器在初次启动之后便能完成它在集群管理中的功能,承担集群中的角色,省去了初始化的配置且在新建服务器添加到指定集群时,对用户基本是无感知的。
#!bin/bash案例二:userdata for 资源编排(ROS)
通过阿里云的资源编排服务,ROS,可以很方便的创建一组资源。但是创建资源只是第一步,需要把应用部署上去,userdata便是实现对应用一键构建的关键。
例如:用户需要在云服务器中搭建一个WordPress平台,首先需要安装 WordPress 所依赖的基础服务:Apache、MySQL 以及 PHP,然后下载最新版本的 WordPress 包并进行安装,最后根据 WordPress的搭建需求,对基础依赖服务进行相应的配置。用户只需要针对应用编写出该流程对应的 Shell 脚本,ROS也提供了相应的脚本模版,只将数据库的名称、用户名及其密码作为用户的输入参数, 一键生成usredata模版再配置ROS模版样例中。
#!/bin/bash利用metadata来配置userdata
利用metadata来配置userdata在需要获取云服务器相关配置的时候比较便捷,可以实现云服务器的动态配置。例如某个场景下需要配置一条路由或者防火墙规则,为了得到云服务器的ip地址,我看到大多用户常规的做法是通过系统命令和正则表达式来提取ip信息:
ifconfigeth0|awk'/inetaddr:/{print$2}'|tr-d'addr:'但其实只需要在userdata-scripts中先安装curl,再去访问数据源,这些信息在meta-data中都可以轻松获取,ip地址的在metadata键为private-ipv4:
curl100.100.100.200/meta-data/private-ipv4所有meta-data的种类可以通过访问数据源得到,如果metadata已经包括了你在动态配置中用到的云主机相关属性,则可以利用metadata编写userdata。
curl100.100.100.200/latest/meta-data此外,对于创建云主机的时候设置过User-Data的实例,可以通过访问下面的地址查询userdata信息:
curl100.100.100.200/latest/usre-dateFAQ:
Q1:使用userdata有哪些限制?
A1:目前ECS的userdata功能支持vpc+io优化的实例,在购买这类实例时,可以使用userdata功能。此外,由于userdata依赖于cloud-init服务,镜像中需要安装cloud-init。
Q2:如何知道阿里云提供的镜像是否支持cloud-init?
A2:对于从购买页面购买ECS的用户,当您选择的实例属性满足vpc+io优化条件的情况下,选择了支持cloud-init的镜像,购买页面会有userdata输入框供您输入。对于使用OpenAPI购买ECS的用户,建议先调用查询可用镜像接口,可以在入参添加IsSupportCloudInit=true来查询支持cloud-init的镜像。
Q3:userdata只能在初次启动的时候输入么?
A3:不是。除了在购买ECS的时候就可以输入userdata ,对于已经使用的ECS,停机之后也可以选择"设置用户数据"操作,在下一次启动的时候生效,当然这部分userdata的功能不能够依赖于初次启动的逻辑,否则不会生效。
总结:
定制化云服务器已然成为云服务器的发展趋势,目前ECS大部分的系统镜像都支持cloud-init,同时也能够支持基于系统镜像创建自定义镜像的userdata功能,不过从目前的数据来看对cloud-init有感知的用户还比较少,然而其实userdata的使用场景非常广,只要你有配置云服务器的需求,尤其是在这种需求批量化模版化的情况下,userdata是再好不过的选择,希望大家可以多多结合自身的应用场景,使用userdata功能定制只属于你的云主机。
m.yiLeen.Com.cn艺练网专注于游戏代练的交易平台,提供专业的手游、网游、英雄联盟代练、LOL代练、地下城与勇士、和平精英代练、QQ飞车代练等服务。
专业专注用心服务,如有海外金融牌照的任何疑问请联系我们。
联系邮箱:773537036@qq.com
发表评论