自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何借助Salt Cloud配置AWS EC2實例?

譯文
運維 系統(tǒng)運維 開源
SaltStack項目于2011年啟動。我們在2013年8月首次刊文介紹SaltStack;就在同一年,在擁有最多“關(guān)閉的問題”(issues closed)和“合并拉拽請求”(merged pull request)類別的所有公共軟件庫當(dāng)中,GitHub的Octoverse在saltstack/salt軟件庫中名列第三。

SaltStack(http://www.saltstack.com/community/)是系統(tǒng)管理員們在工具箱中不可或缺的下一批基礎(chǔ)架構(gòu)管理工具之一,可以用來配置和管理數(shù)量日益龐大的服務(wù)器。

SaltStack項目于2011年啟動。我們在2013年8月***刊文介紹SaltStack;就在同一年,在擁有最多“關(guān)閉的問題”(issues closed)和“合并拉拽請求”(merged pull request)類別的所有公共軟件庫當(dāng)中,GitHub的Octoverse在saltstack/salt軟件庫中名列第三。

2013年11月8日,Salt Cloud被并入到主Salt軟件庫,成為SaltStack 2014.1.0 Hydrogen版本的一部分。

Salt Cloud這款工具可以用來配置和管理得到支持的云服務(wù)提供商內(nèi)部和之間的云服務(wù)器。比如說,系統(tǒng)管理員通過使用Salt Cloud配置的單個節(jié)點,就可以配置位于亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)美國西海岸地區(qū)的五臺新的Web服務(wù)器,配置位于Rackspace倫敦地區(qū)的三臺新的應(yīng)用服務(wù)器。

本文介紹了如何借助Salt Cloud配置亞馬遜彈性計算云(EC2)實例;文章還介紹了如何使用Salt Cloud的地圖(Map)功能,借助單單一個命令,配置幾個并行的實例。

不過本文中所用的發(fā)行版是CentOS;除了安裝方面的一些微小細節(jié)外,本文探討的詳細步驟適用于EC2上、可以運行***版SaltStack的任何發(fā)行版。

除了AWS EC2外,SaltStack還支持其他的云服務(wù)提供商,比如Digital Ocean、GoGrid、谷歌計算引擎(Google Compute Engine)、OpenStack和Rackspace。功能矩陣(http://docs.saltstack.com/en/latest/topics/cloud/features.html)列出了一張表,顯示了針對每家云服務(wù)提供商的支持功能。

來自運行salt-cloud的實例、Salt Cloud命令行工具以及所配置實例的所有交互都通過SSH協(xié)議來實現(xiàn)。Salt Cloud不需要Salt Master守護進程。如果你想要使用Salt狀態(tài)和模塊來管理所配置實例,就需要設(shè)置Salt Master,這不在本文的探討范圍之內(nèi)。

安裝

salt-cloud命令行工具隨作為EPEL一部分的salt-master 2014.1.0 RPM程序包一同發(fā)行。它應(yīng)該可以安裝在EC2里面的實例上。

  1. $ yum install salt-master 

“SaltStack”團隊管理Ubuntu個人軟件包存檔(PPA),它含有所有***版本的Ubuntu。Salt還出現(xiàn)在標(biāo)準(zhǔn)的openSUSE 13.1版本中。docs.saltstack.com提供了詳盡具體的說明文檔,含有說明步驟,介紹了如何針對其他發(fā)行版和平臺安裝Salt。

salt-cloud確實依賴Apache libcloud,這是一種可與30多家云服務(wù)提供商兼容的python庫。可以使用pip命令,安裝穩(wěn)定版本的apache-libcloud。

  1. $ pip install apache-libcloud 

要是沒有pip命令,你可能需要先安裝python-pip程序包。如果你想把apache-libcloud安裝在孤立的Python環(huán)境中,首先要檢查virtualenv(虛擬環(huán)境)。

EC2安全組

salt-cloud配置的每個實例都需要屬于至少一個AWS EC2安全組(Security Group),該安全組允許來自端口22/tcp、始發(fā)于運行salt-cloud的實例的入站流量。我在之前的一篇文章中已介紹了如何使用awscli工具創(chuàng)建安全組,詳見http://www.linux.com/learn/tutorials/761430-an-introduction-to-the-aws-command-line-tool。

 

  1. $ aws ec2 create-security-group \  
  2.     --group-name MySecurityGroupSaltCloudInstances \  
  3.     --description "The Security Group applied to all salt-cloud instances"  
  4. $ aws ec2 authorize-security-group-ingress \  
  5.     --group-name MySecurityGroupSaltCloudInstances \  
  6.     --source-group MySecurityGroupSaltCloud \  
  7.     --protocol tcp --port 22 

 

authorize-security-group-ingress命令允許MySecurityGroupSaltCloud安全組里面的任何EC2節(jié)點通過端口22/tcp,訪問MySecurityGroupSaltCloudInstances里面的其他任何EC2節(jié)點。在我的安裝環(huán)境中,運行salt-cloud的實例屬于MySecurityGroupSaltCloud安全組。你需要創(chuàng)建一個安全組,運行salt-cloud的實例將屬于該安全組。

EC2密鑰對

salt-cloud依賴SSH協(xié)議上傳和運用salt-bootstrap自動安裝腳本。需要針對運行salt-cloud的實例生成SSH公鑰和私鑰。公鑰同樣需要上傳到AWS EC2,成為密鑰對。我在前一篇文章中也介紹了如何實現(xiàn)這一步。

想創(chuàng)建SSH私鑰和SSH公鑰:

 

  1. $ ssh-keygen -f /etc/salt/my_salt_cloud_key -t rsa -b 4096  
  2. $ aws ec2 import-key-pair --key-name my_salt_cloud_key \  
  3.         --public-key-material file:///etc/salt/my_salt_cloud_key.pub 

 

Salt Cloud配置文件

Salt Cloud配置文件(Profile)為一組將由salt-cloud配置和管理的salt minion定義了一些基本的配置項。

在下面的/etc/salt/cloud.profiles文件里面,我已創(chuàng)建了一個配置文件,名為base_ec2_private;該配置文件使用我將在接下來定義的my_ec2_ap_southeast_2_private_ips提供商。我需要指定的另外唯一一個選項是minion將運行的那個映像的亞馬遜機器映像(AMI) ID。ami-e7138ddd是CentOS.org發(fā)行、在AWS ap-southeast-2區(qū)域里面可用的CentOS 6.5映像的AMI ID。

 

  1. base_ec2_private:  
  2.   provider: my_ec2_ap_southeast_2_private_ips  
  3.   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:

 

 

  1. # salt-cloud應(yīng)連接到的IP地址  
  2. ssh_interface: private_ips  
  3. # AWS登錄信息  
  4. id: @AWS_ACCESS_KEY_ID@  
  5. key: '@AWS_SECRET_ACCESS_KEY@' 
  6. # SSH密鑰  
  7. keyname: my_salt_cloud_key  
  8. private_key: /etc/salt/my_salt_cloud_key  
  9. # AWS位置  
  10. location: ap-southeast-2 
  11. availability_zone: ap-southeast-2a 
  12. # AWS安全組  
  13. securitygroup: MySecurityGroupSaltCloudInstances  
  14. # AWS AMI  
  15. size: Micro Instance  
  16. # minion被銷毀后,刪除AWS根卷  
  17. del_root_vol_on_destroy: True 
  18. # 本地用戶  
  19. ssh_username: root  
  20. # 一旦銷毀,就更名  
  21. rename_on_destroy: True 
  22. provider: ec2  

我定義了用@符號封裝的幾個屬性,它們需要上傳,以適合你的環(huán)境。

@AWS_ACCESS_KEY_ID@:AWS Access Key ID屬于擁有足夠EC2權(quán)限以配置新實例的IAM帳戶。雖然salt-cloud確實支持AWS身份與訪問管理(IAM)角色,但它們只適用于所配置的EC2 minion。靜態(tài)的AWS訪問密鑰和秘密密鑰仍被salt-cloud用來部署minion。

@AWS_SECRET_ACCESS_KEY@:屬于AWS Access Key ID的AWS秘密密鑰。

創(chuàng)建***個salt-cloud minion

首先,你可能需要在SSH代理里面設(shè)置SSH密鑰。

  1. $ eval `ssh-agent`  
  2. $ ssh-add /etc/salt/my_salt_cloud_key 

下一步,調(diào)用傳遞配置文件名稱的salt-cloud,其名稱與你在/etc/salt/cloud.profiles里面配置的相一致,***一個參數(shù)是新minion的名稱。

  1. $ salt-cloud --profile=base_ec2_private my_first_minion 

salt-cloud使用SSH代理獲取salt-bootstrap自動安裝腳本,該腳本會安全地檢測minion發(fā)行版,安裝salt-minion程序包,如果你已設(shè)置好salt-master,還可以預(yù)先為salt-master提供minion的密鑰。

如果成功,我們可以使用salt-cloud查詢實例:

  1. $ salt-cloud --action=show_instance my_first_minion 

salt-cloud還支持其他操作,比如查詢和設(shè)定AWS EC2標(biāo)記:

  1. $ salt-cloud --action=get_tags my_first_minion  
  2. $ salt-cloud --action=set_tags my_first_minion environment=devel \  
  3. role=webserver 

我們可以啟用和禁用EC2終止保護(Termination Protection):

  1. $ salt-cloud --action=show_term_protect my_first_minion  
  2. $ salt-cloud --action=enable_term_protect my_first_minion  
  3. $ salt-cloud --action=disable_term_protect my_first_minion 

我們還可以重啟minion:

  1. $ salt-cloud --action=reboot my_first_minion 

如果你已設(shè)置好了salt-master,應(yīng)該能夠通過salt命令行,運行標(biāo)準(zhǔn)的salt模塊:

  1. $ salt my_first_minion cmd.run '/sbin/ip address show'  

當(dāng)然了,如果salt-master狀態(tài)已設(shè)置好,你可以運用state.highstate。

  1. $ salt my_first_minion state.highstate  

***,我們可以使用--destroy選項銷毀實例:

  1. $ salt-cloud --destroy my_first_minion  

Salt Cloud地圖

我們前面已探討了借助salt-cloud配置單個的EC2實例?,F(xiàn)在,我們可以延伸開來,使用Slat Cloud地圖(Maps),借助單單一個salt-cloud命令,創(chuàng)建多個實例。

在/etc/salt/cloud.map文件里面,我定義了三臺都繼承base_ec2_private配置文件的Web服務(wù)器。

  1. base_ec2_private:  
  2. - web1_prod  
  3. - web2_prod  
  4. - web3_prod 

想配置所有三個實例,我只需要傳遞--map選項連同地圖文件的位置。另外包括--parallel,地圖里面的所有實例將同時被配置。

  1. $ salt-cloud --map=/etc/salt/cloud.map --parallel  

一旦配置完畢,我們就可以借助salt-cloud,查詢地圖里面的所有實例。

  1. $ salt-cloud --map=/etc/salt/cloud.map --query  

想終止地圖里面的所有服務(wù)器,我們只要傳遞--destroy選項。

 

  1. $ salt-cloud --map=/etc/salt/cloud.map –destroy  

英文:http://www.linux.com/learn/tutorials/772719-how-to-provision-aws-ec2-instances-with-salt-cloud

責(zé)任編輯:林師授 來源: 51CTO
相關(guān)推薦

2017-12-02 12:42:57

AWSEC2

2018-02-23 15:15:31

UbuntuAnsibleAmazon EC2

2020-12-01 15:47:49

AWSEC2macOS

2014-11-14 10:06:06

AWSEC2 Contain亞馬遜

2014-07-28 10:13:59

AWS部署APIEC2

2014-07-02 21:24:09

AWSAmazon EC2

2018-05-17 22:16:07

Amazon EC2Web服務(wù)

2015-08-21 17:47:38

Docker安全EC2容器服務(wù)

2014-11-26 09:09:10

AmazonAWSEC2 Contain

2010-08-13 10:50:50

2013-04-17 10:23:13

微軟AWSEC2

2016-02-01 17:06:52

AWS技術(shù)峰會AWS Summit2

2017-04-20 19:15:32

Linux服務(wù)器AWS EC2

2017-10-16 14:48:35

AWSEC2EBS

2012-03-09 15:30:26

亞馬遜EC2云計算

2012-11-15 09:30:59

亞馬遜EC2云計算

2013-06-03 09:24:34

公有云計算亞馬遜EC2API

2009-03-30 17:25:17

Amazon亞馬遜Eclipse

2012-08-13 09:33:28

Windows AzuAmazonEC2

2021-06-09 09:46:44

TeamTNT團伙谷歌云AWS
點贊
收藏

51CTO技術(shù)棧公眾號