成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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。功能矩陣(http://docs.saltstack.com/en/latest/topics/cloud/features.html)列出了一張表,顯示了針對每家云服務提供商的支持功能。

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

安裝

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

  1. $ yum install salt-master 

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

salt-cloud確實依賴Apache libcloud,這是一種可與30多家云服務提供商兼容的python庫??梢允褂胮ip命令,安裝穩定版本的apache-libcloud。

  1. $ pip install apache-libcloud 

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

EC2安全組

salt-cloud配置的每個實例都需要屬于至少一個AWS EC2安全組(Security Group),該安全組允許來自端口22/tcp、始發于運行salt-cloud的實例的入站流量。我在之前的一篇文章中已介紹了如何使用awscli工具創建安全組,詳見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節點通過端口22/tcp,訪問MySecurityGroupSaltCloudInstances里面的其他任何EC2節點。在我的安裝環境中,運行salt-cloud的實例屬于MySecurityGroupSaltCloud安全組。你需要創建一個安全組,運行salt-cloud的實例將屬于該安全組。

EC2密鑰對

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

想創建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文件里面,我已創建了一個配置文件,名為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。

 

  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應連接到的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  

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

@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密鑰。

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

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

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

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

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

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

salt-cloud還支持其他操作,比如查詢和設定AWS EC2標記:

  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 

如果你已設置好了salt-master,應該能夠通過salt命令行,運行標準的salt模塊:

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

當然了,如果salt-master狀態已設置好,你可以運用state.highstate。

  1. $ salt my_first_minion state.highstate  

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

  1. $ salt-cloud --destroy my_first_minion  

Salt Cloud地圖

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

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

  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  

想終止地圖里面的所有服務器,我們只要傳遞--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

責任編輯:林師授 來源: 51CTO
相關推薦

2017-12-02 12:42:57

AWSEC2

2018-02-23 15:15:31

UbuntuAnsibleAmazon EC2

2020-12-01 15:47:49

AWSEC2macOS

2014-07-28 10:13:59

AWS部署APIEC2

2014-11-14 10:06:06

AWSEC2 Contain亞馬遜

2014-07-02 21:24:09

AWSAmazon EC2

2018-05-17 22:16:07

Amazon EC2Web服務

2015-08-21 17:47:38

Docker安全EC2容器服務

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技術峰會AWS Summit2

2017-04-20 19:15:32

Linux服務器AWS EC2

2017-10-16 14:48:35

AWSEC2EBS

2012-03-09 15:30:26

亞馬遜EC2云計算

2009-03-30 17:25:17

Amazon亞馬遜Eclipse

2012-11-15 09:30:59

亞馬遜EC2云計算

2013-06-03 09:24:34

公有云計算亞馬遜EC2API

2021-06-09 09:46:44

TeamTNT團伙谷歌云AWS

2012-08-13 09:33:28

Windows AzuAmazonEC2
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 台湾佬成人网 | 午夜私人影院 | 黄色成人国产 | 久久51 | 中文字幕观看 | 日韩一区二区在线播放 | 黑色丝袜三级在线播放 | 国产精品久久久久久久久久久久久 | 亚洲成人黄色 | 国产日产精品一区二区三区四区 | 91精品国产综合久久久久 | 日日操操 | 欧美日韩a | 精品永久 | 国产乱人伦精品一区二区 | 91在线免费视频 | 91久久精品国产 | 欧美日韩视频 | 免费一区二区三区在线视频 | 亚洲国产网址 | 精品欧美一区二区在线观看 | 涩涩视频网站在线观看 | 国产午夜精品久久久久 | 国产精品网页 | 国产真实乱全部视频 | 欧美日韩专区 | 日韩中文字幕视频在线观看 | 日韩一区二区福利视频 | 国产美女精品 | 国产中文字幕在线 | 国产精品欧美一区二区 | 午夜精品久久久久久久久久久久久 | 亚洲成人毛片 | 国产线视频精品免费观看视频 | xx性欧美肥妇精品久久久久久 | 91精品国产91久久久久久丝袜 | 久久久精 | 免费网站国产 | 国产情品| 一区二区三区四区在线 | 日韩波多野结衣 |