aws centos centos8安装docker
大家好,今天给各位分享aws centos的一些知识,其中也会对centos8安装docker进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
aws系统映像有哪些
AWS提供了众多系统映像供用户使用,这些映像包含了不同操作系统和软件的预装版本。下面是AWS上一些常见的系统映像:
1. Amazon Linux AMI:这是Amazon自己开发的适用于云环境的Linux AMI,被广泛使用于AWS上的EC2实例。
2. Ubuntu Server:Ubuntu是基于Debian的开源操作系统,AWS提供了不同版本和系列的Ubuntu Server映像,可以选择使用。
3. CentOS:CentOS是以Red Hat Enterprise Linux(RHEL)源代码为基础所构建的一个开源操作系统,AWS提供了多个CentOS版本的映像。
4. Microsoft Windows Server:AWS支持多个版本的微软Windows Server操作系统,包括Windows Server 2008、Windows Server 2012、Windows Server 2016等。
除了以上常见的操作系统映像外,AWS还提供了其他一些映像,如Red Hat Enterprise Linux、SUSE Linux Enterprise Server等。此外,AWS还提供了一些预装了特定软件的映像,例如预装了LAMP(Linux、Apache、MySQL、PHP)堆栈、Microsoft IIS的映像等。
请注意,以上列出的只是一小部分AWS提供的系统映像,实际上AWS Marketplace上还有更多的映像供用户选择。为了满足用户的各种需求,AWS提供了广泛的映像选择,用户可以根据自己的需求选择合适的映像来部署和运行他们的应用程序。
哪款Linux 才是更好的 CentOS 替代品
AlmaLinux是一个基于 RHEL的企业级 Linux发行版,其设计旨在作为 CentOS的可靠替代品。以下是选择 AlmaLinux的几个关键原因。
随着 CentOS宣布将在 2024年 6月停止支持,全球众多服务器用户正寻找合适的替代方案。CentOS原本是基于 Red Hat Enterprise Linux(RHEL)的流行 Linux发行版,在 2010年成为服务器领域的首选。
CentOS的退役引起广泛关注,许多组织和管理员正面临如何从 CentOS迁移其服务器与 IT基础设施的挑战。迁移任务艰巨,需要充分规划与准备。
CentOS曾经是 Red Hat Enterprise Linux的直接副本,但在 2014年被红帽收购后,其战略发生了变化。如今,CentOS已不再完全复制 RHEL,而是成为一个上游项目,类似于 Fedora。新操作系统命名为 CentOS Stream。
AlmaLinux提供了与 CentOS相似且稳定的解决方案。它 1:1与 RHEL二进制兼容,确保了与 RHEL相同的稳定性与可靠性。AlmaLinux不仅是 CentOS的可靠替代品,也是 RHEL的理想选择,无需支付额外的服务费用。
AlmaLinux的一大优势在于其坚实的财政支持,这包括来自亚马逊、微软、CloudLinux、Equinix、AMD等顶级公司的支持。社区规模庞大,包括开发者、测试者和爱好者,为操作系统的成功贡献了力量。
AlmaLinux与 CentOS的无缝迁移是其另一个显著优势。AlmaLinux社区开发的 AlmaLinux-deploy工具可帮助管理员轻松将 CentOS或 RHEL服务器迁移到 AlmaLinux。整个迁移过程仅需服务器重新启动两次。
AlmaLinux提供桌面版与服务器版,满足组织开发、测试与服务器动力需求。使用相同操作系统,系统管理与 IT决策将更加轻松。AlmaLinux的界面与 RHEL相似,用户上手无压力。
AlmaLinux已在世界各地的大型云基础设施和数据中心中得到广泛应用,包括 CloudLinux和政府机构。用户亦可在 Azure和 AWS等云服务上启动 AlmaLinux虚拟机。AlmaLinux与 RHEL兼容,正逐渐获得广泛使用与普及。
除了 AlmaLinux,另一个值得关注的 CentOS替代品是 Rocky Linux。它也是基于 RHEL,与 AlmaLinux非常相似。Rocky Linux由 CentOS创始人 Gregory Kurtzer创建,旨在继承 CentOS的社区属性。Rocky Linux提供 migrate2rocky工具,帮助用户从 CentOS和其他 RHEL派生工具进行迁移。
AlmaLinux的赞助商多于 Rocky Linux,截至 2022年,根据 DistroWatch数据,AlmaLinux在受欢迎程度上领先于 Rocky Linux。
Oracle Linux作为 RHEL的二进制兼容版本,自 2006年以来一直在开发中。RHEL本身也是一个替代选项,尽管使用它需要付费,但在从 CentOS过渡时,可以获得关键的服务支持。
从 CentOS迁移到 AlmaLinux相对容易。AlmaLinux提供了与 RHEL相同的稳定性与兼容性,为用户提供了一个安全、可靠的替代方案。对于计划迁移的用户,建议在虚拟机环境中测试 AlmaLinux,熟悉其工作原理,并在实时服务器上使用迁移工具。
如何借助Salt Cloud配置AWS EC2实例
SaltStack项目于2011年启动。我们在2013年8月首次刊文介绍SaltStack;就在同一年,在拥有最多“关闭的问题”(issues closed)和“合并拉拽请求”(merged pull request)类别的所有公共软件库当中,GitHub的Octoverse在saltstack/salt软件库中名列第三。
2013年11月8日,Salt Cloud被并入到主Salt软件库,成为SaltStack 2014.1.0 Hydrogen版本的一部分。
Salt Cloud这款工具可以用来配置和管理得到支持的云服务提供商内部和之间的云服务器。比如说,系统管理员通过使用Salt Cloud配置的单个节点,就可以配置位于亚马逊网络服务(AWS)美国西海岸地区的五台新的Web服务器,配置位于Rackspace伦敦地区的三台新的应用服务器。
本文介绍了如何借助Salt Cloud配置亚马逊弹性计算云(EC2)实例;文章还介绍了如何使用Salt Cloud的地图(Map)功能,借助单单一个命令,配置几个并行的实例。
不过本文中所用的发行版是CentOS;除了安装方面的一些微小细节外,本文探讨的详细步骤适用于EC2上、可以运行最新版SaltStack的任何发行版。
除了AWS EC2外,SaltStack还支持其他的云服务提供商,比如Digital Ocean、GoGrid、谷歌计算引擎(Google Compute Engine)、OpenStack和Rackspace。功能矩阵列出了一张表,显示了针对每家云服务提供商的支持功能。
来自运行salt-cloud的实例、Salt Cloud命令行工具以及所配置实例的所有交互都通过SSH协议来实现。Salt Cloud不需要Salt Master守护进程。如果你想要使用Salt状态和模块来管理所配置实例,就需要设置Salt Master,这不在本文的探讨范围之内。
安装
salt-cloud命令行工具随作为EPEL一部分的salt-master 2014.1.0 RPM程序包一同发行。它应该可以安装在EC2里面的实例上。
$ yum install salt-master
“SaltStack”团队管理Ubuntu个人软件包存档(PPA),它含有所有最新版本的Ubuntu。Salt还出现在标准的openSUSE 13.1版本中。docs.saltstack.com提供了详尽具体的说明文档,含有说明步骤,介绍了如何针对其他发行版和平台安装Salt。
salt-cloud确实依赖Apache libcloud,这是一种可与30多家云服务提供商兼容的python库。可以使用pip命令,安装稳定版本的apache-libcloud。
$ pip install apache-libcloud
要是没有pip命令,你可能需要先安装python-pip程序包。如果你想把apache-libcloud安装在孤立的Python环境中,首先要检查virtualenv(虚拟环境)。
EC2安全组
salt-cloud配置的每个实例都需要属于至少一个AWS EC2安全组(Security Group),该安全组允许来自端口22/tcp、始发于运行salt-cloud的实例的入站流量。我在之前的一篇文章中已介绍了如何使用awscli工具创建安全组,
$ aws ec2 create-security-group\--group-name MySecurityGroupSaltCloudInstances\--description"The Security Group applied to all salt-cloud instances"$ aws ec2 authorize-security-group-ingress\--group-name MySecurityGroupSaltCloudInstances\--source-group MySecurityGroupSaltCloud\--protocol tcp--port 22
authorize-security-group-ingress命令允许MySecurityGroupSaltCloud安全组里面的任何EC2节点通过端口22/tcp,访问MySecurityGroupSaltCloudInstances里面的其他任何EC2节点。在我的安装环境中,运行salt-cloud的实例属于MySecurityGroupSaltCloud安全组。你需要创建一个安全组,运行salt-cloud的实例将属于该安全组。
EC2密钥对
salt-cloud依赖SSH协议上传和运用salt-bootstrap自动安装脚本。需要针对运行salt-cloud的实例生成SSH公钥和私钥。公钥同样需要上传到AWS EC2,成为密钥对。我在前一篇文章中也介绍了如何实现这一步。
想创建SSH私钥和SSH公钥:
$ ssh-keygen-f/etc/salt/my_salt_cloud_key-t rsa-b 4096$ aws ec2 import-key-pair--key-name my_salt_cloud_key\--public-key-material
Salt Cloud配置文件
Salt Cloud配置文件(Profile)为一组将由salt-cloud配置和管理的salt minion定义了一些基本的配置项。
在下面的/etc/salt/cloud.profiles文件里面,我已创建了一个配置文件,名为base_ec2_private;该配置文件使用我将在接下来定义的my_ec2_ap_southeast_2_private_ips提供商。我需要指定的另外唯一一个选项是minion将运行的那个映像的亚马逊机器映像(AMI) ID。ami-e7138ddd是CentOS.org发行、在AWS ap-southeast-2区域里面可用的CentOS 6.5映像的AMI ID。
base_ec2_private: provider: my_ec2_ap_southeast_2_private_ips image: ami-e7138ddd
Salt Cloud提供商
salt-cloud提供商定义了AWS EC2实例使用的一系列属性。
下面是我用来定义my_ec2_ap_southeast_2_private_ips提供商的/etc/salt/cloud.providers文件。该提供商被我的my base_ec2_private配置文件所使用。
my_ec2_ap_southeast_2_private_ips:
# salt-cloud应连接到的IP地址 ssh_interface: private_ips# AWS登录信息 id:@AWS_ACCESS_KEY_ID@ key:'@AWS_SECRET_ACCESS_KEY@'# SSH密钥 keyname: my_salt_cloud_key private_key:/etc/salt/my_salt_cloud_key# AWS位置 location: ap-southeast-2 availability_zone: ap-southeast-2a# AWS安全组 securitygroup: MySecurityGroupSaltCloudInstances# AWS AMI size: Micro Instance# minion被销毁后,删除AWS根卷 del_root_vol_on_destroy: True#本地用户 ssh_username: root#一旦销毁,就更名 rename_on_destroy: True provider: ec2
我定义了用@符号封装的几个属性,它们需要上传,以适合你的环境。
@AWS_ACCESS_KEY_ID@:AWS Access Key ID属于拥有足够EC2权限以配置新实例的IAM帐户。虽然salt-cloud确实支持AWS身份与访问管理(IAM)角色,但它们只适用于所配置的EC2 minion。静态的AWS访问密钥和秘密密钥仍被salt-cloud用来部署minion。
@AWS_SECRET_ACCESS_KEY@:属于AWS Access Key ID的AWS秘密密钥。
创建第一个salt-cloud minion
首先,你可能需要在SSH代理里面设置SSH密钥。
$ eval `ssh-agent`$ ssh-add/etc/salt/my_salt_cloud_key
下一步,调用传递配置文件名称的salt-cloud,其名称与你在/etc/salt/cloud.profiles里面配置的相一致,最后一个参数是新minion的名称。
$ salt-cloud--profile=base_ec2_private my_first_minion
salt-cloud使用SSH代理获取salt-bootstrap自动安装脚本,该脚本会安全地检测minion发行版,安装salt-minion程序包,如果你已设置好salt-master,还可以预先为salt-master提供minion的密钥。
如果成功,我们可以使用salt-cloud查询实例:
$ salt-cloud--action=show_instance my_first_minion
salt-cloud还支持其他操作,比如查询和设定AWS EC2标记:
$ salt-cloud--action=get_tags my_first_minion$ salt-cloud--action=set_tags my_first_minion environment=devel\ role=webserver
我们可以启用和禁用EC2终止保护(Termination Protection):
$ salt-cloud--action=show_term_protect my_first_minion$ salt-cloud--action=enable_term_protect my_first_minion$ salt-cloud--action=disable_term_protect my_first_minion
我们还可以重启minion:
$ salt-cloud--action=reboot my_first_minion
如果你已设置好了salt-master,应该能够通过salt命令行,运行标准的salt模块:
$ salt my_first_minion cmd.run'/sbin/ip address show'
当然了,如果salt-master状态已设置好,你可以运用state.highstate。
$ salt my_first_minion state.highstate
最后,我们可以使用--destroy选项销毁实例:
$ salt-cloud--destroy my_first_minion
Salt Cloud地图
我们前面已探讨了借助salt-cloud配置单个的EC2实例。现在,我们可以延伸开来,使用Slat Cloud地图(Maps),借助单单一个salt-cloud命令,创建多个实例。
在/etc/salt/cloud.map文件里面,我定义了三台都继承base_ec2_private配置文件的Web服务器。
base_ec2_private:- web1_prod- web2_prod- web3_prod
想配置所有三个实例,我只需要传递--map选项连同地图文件的位置。另外包括--parallel,地图里面的所有实例将同时被配置。
$ salt-cloud--map=/etc/salt/cloud.map--parallel
一旦配置完毕,我们就可以借助salt-cloud,查询地图里面的所有实例。
$ salt-cloud--map=/etc/salt/cloud.map--query
想终止地图里面的所有服务器,我们只要传递--destroy选项。
$ salt-cloud--map=/etc/salt/cloud.map–destroy